在預測和分類等許多領域,集成方法往往優於單個方法。這讓我想知道是否有必要選擇一些頂級的國際象棋引擎,並與它們一起工作以使它們更強大。
讓我們假設硬件的總數量固定在人們使用的水平對於典型的基準測試,時間也是固定的。此外,我們不會更改引擎本身以使其協同工作,而只是對其進行包裝,使它們實際上沒有意識到。
因此,我提出了一個精緻的問題:
在預測和分類等許多領域,集成方法往往優於單個方法。這讓我想知道是否有必要選擇一些頂級的國際象棋引擎,並與它們一起工作以使它們更強大。
讓我們假設硬件的總數量固定在人們使用的水平對於典型的基準測試,時間也是固定的。此外,我們不會更改引擎本身以使其協同工作,而只是對其進行包裝,使它們實際上沒有意識到。
因此,我提出了一個精緻的問題:
答案是“否”。
如果您具有一組已定義的固定資源-CPU,內存,緩存等-並且您允許一個引擎充分利用它們,則該引擎與採用相同資源並以某種方式在多個不同引擎之間分配資源相比,該方法將能夠進行更深入的分析。不可避免地,單引擎分析到更大的深度要比多引擎分析到更小的深度更好。
不,國際象棋引擎的合奏不會擊敗最好的國際象棋引擎。原因僅僅是由於硬件。
讓我們現在使用最強大的CPU引擎來簡化操作。它們是Stockfish,Komodo,Leela CPU,Ethereal,Fire和rofChade。鱈魚是最強的。您有一台運行Stockfish的四核計算機。
如果在同一台四核計算機上同時運行Komodo,Leela-CPU等,那麼您將在同一硬件上的一場比賽中擊敗所有其他引擎。
劣等軟件,您正在劣等硬件上運行劣等軟件(因為這些引擎將相互競爭相同的4核)。因此,合奏就失敗了。這就是為什麼人們能夠使用所有引擎的能力在對應的國際象棋比賽中勝過Stockfish。但是,這樣做需要人工干預。它不僅適用於引擎。可以想像,您可以編寫代碼來區分當前位置上哪個引擎更強,而已經嘗試過,但是它從來不能果斷地擊敗兩個原始引擎。
您最好只讓最好的引擎播放。
儘管我自己無法測試,但我對以下結論充滿信心:
我的主要假設:
還請注意,合奏就能包含最強大的引擎本身的副本。在撰寫本文時,緊隨最強大的引擎之後的引擎緊隨其後,因此這不是關鍵點,但是否則,這將成為一個問題:“要比最強的引擎獲得更大的整體評級”,這要困難得多。 p>
在這裡,一個簡單的“勝利”就是一個引擎擁有更強的(與之互動)開場書,而另一個引擎擁有更強的開局能力。 engame表庫。但是,即使假設所有引擎都可以在這些區域中以相等的效率使用最佳資源,那麼通常還是會說某些引擎“開局很強”或“擅長殘局”。
讓我在這裡再做一個假設:
因此,擅長殘局的引擎不僅會擅長於自身達到的終局遊戲,而且還擅長於另一引擎達到的終局遊戲。
如果我們只區分開局和殘局,則為此定義一個包裝很簡單,並且會有大約1個開關每場比賽。當然,如果您擁有“在典當殘局時表現出色”或“在位置遊戲中非常出色”的引擎,則可以將其擴展,但是到那時,在不使用大量資源的情況下,很難確定選擇哪種引擎。
這個場景是我最初好奇的。但是,根據我的假設,獲得多個引擎意見的最直接方法是讓它們並行運行。假設我們只使用兩個引擎的集合,而這兩個引擎的資源只有一半,那麼它們都將變弱一些,讓我們基於 some 引用進行另一個假設。
現在,這很重要,說實話,這可能是太多了。假設我們只是將兩個引擎彼此相差70埃洛爾,則期望值約為60-40。這可以彌補很多,但是儘管我找不到與此相關的任何數據,但仍有可能。基本上,這只需要導致1個出色的舉動或1個避免失誤就可以擺動整個遊戲。決定每次移動要聽哪個引擎並非易事,但是由於引擎通常可以輸出一些基本統計信息(例如,對所有可能移動的評估以及對每個移動的檢查深度),因此可能不太難做出合理且輕巧的決定。
同樣可以擴展,一種簡單的方法是擁有3個引擎,然後選擇其中2個移動給,但我不確定將資源分配得更薄是否值得。另一個有趣的想法可能是為樂隊中最強大的成員提供最多的資源,並由最擅長的成員對其進行檢查。在這種情況下,由於資源減少,主引擎可能只會損失10個elo點,因此“彌補”可能會容易得多。但是,再次選擇正確的舉動仍然很棘手。
最後的想法是,如果引擎使用CPU和GPU,那麼各個引擎的強度可能不會在這些資源的每一個中縮小太多,因此,其中一個引擎獲得80cpu + 20gpu而engine2獲得20cpu + 80gpu的混合可能會使各個引擎的強度幾乎與它們具有全部資源時一樣強。
尤其是當引擎可以一次運行一個,它應該能夠獲得更好的性能,儘管還必須有一些方法可以通過並行運行多個來獲得更好的結果。但是,這並非微不足道。
通過對引擎進行少量更改,例如將集合概念真正提升到一個新水平,例如,不僅可以提供預期的分數,還可以使您信心十足他們對自己的評價感到滿意。
答案比您想嘗試的要復雜得多。任何明確的“是”或“否”答案都是關於比賽條件,使用的硬件以及所涉及球員實力差異的問題。我打算直接回答您的問題,而不打算直接回答您的問題,這些過程指導創建一種特殊的合奏引擎,該引擎可以擊敗“最強”的引擎。另一種方法實際上是回答您的問題,根據我的經驗,沒有人真正知道答案。
此外,如果您不熟悉開源的Leela Chess Zero( Lc0)神經網絡(NN)引擎,這應該是您研究的第一個主題。它受到臭名昭著的,封閉的,不為大眾所知的消息源的啟發,並且是神經網絡技術AlphaZero(A0)的破冰船,其中有一些您可能還想探索理解的論文。
神經網絡引入了新的領域,以前在過去的10到15年中才進行過粗略的探索。僅在過去的3年中,它們才足以勝過包括人工編程的國際象棋特定評估和啟發式驅動的alpha-beta搜索在內的舊方法,例如開源引擎Stockfish。鑑於純神經網絡引擎的硬件需求更多地面向圖形卡,而諸如Stockfish之類的引擎的需求則面向CPU,因此硬件是使您的系統集成的重要因素。
當您最終擁有確定要使用哪種硬件,然後通過測試將最強的引擎考慮在內。之後,您需要編寫一種方法來整合想要使用哪些引擎來擊敗它的方法。請記住,當今許多引擎的力量都非常依賴於搜索,因此從深度搜索中轉移資源的任何方式都會限制您的整體搜索深度。
一個名為“ Antifish”的Leela網絡(但從技術上講不是Leela Chess“ Zero”,因為它使用的是非“零人類知識”遊戲)因此變得栩栩如生,該網絡已在數百萬Leela遊戲和Stockfish遊戲中得到了培訓。假設,網絡會“知道”如何擊敗Stockfish,因為它已經看到許多涉及Stockfish的遊戲都顯示出弱點。 Antifish對Stockfish可能會“更強”,但是與Komodo和Ethereal之類的同類引擎相比,Antifish在強度方面沒有相同的比較。而且,假設訓練集在較低的時間控制下受到Stockfish失誤的嚴重污染,相對於Stockfish,網絡在假設的時間內表現更好。 Antifish曾經對Stockfish的表現不錯,但是它已經過時,並且可能更弱。 Antifish是我們所謂的“對抗”網絡,經過專門培訓,可以在較低的時間控制中利用Stockfish的弱點,儘管它可能比某些版本的Stockfish強,但在國際象棋中並沒有“客觀上更好”(有爭議的術語)
之所以提出這一點,是因為我們有可能在搜索的根源處使用Leela的Antifish NN來幫助猜測其他Leela網絡應該開始搜索什麼。據我所知,這種“網絡集成”還沒有完成,儘管Antifish和我們可能使用的其他網絡可能較弱,但最終的引擎實際上可以更好地擊敗Stockfish。
此外,有一個Lc0的分支,它允許“輔助引擎”建議移至Lc0。從技術上講,“ Leelafish”是Stockfish和Lc0的集合,實際上可能比其部分更強大。目前這是一項正在進行的工作,兩個引擎之間的通信只是一種方式。
從本質上講,集成引擎可以帶來更強大的東西,或者不能。但是需要注意的重要一點是,任何發動機建議的集合或發動機之間的雙向通信都會消耗計算資源,並且該成本可能太高。將每個好主意合併到一個引擎中可能更好,從技術上講,不再將其視為“引擎集合”。
不,在某些時候,將合法舉動選擇為最佳舉動。做出決定的人永遠不會比最好的引擎更好。否則,會有一個新的最佳引擎。
如果引擎是 learning 引擎,而不是無狀態的確定性評估器,那麼我認為很明顯,合奏會更強大,因為我認為一支人類象棋選手團隊平均會在一場對決中擊敗該團隊中的所有個人。困難的部分是確定當多個引擎產生答案時要使用哪個步驟。為此,我認為引擎需要提供一個動作,一個得分和一個信心值。然後,您將選擇得分最高的*置信產品。
集成方法在機器學習圈中很常見,因為幾乎不可能為每種可能的方法生成最優算法場景。最好訓練可能的方案,讓子算法(例如決策樹森林)專門研究具有良好泛化特性的方案子集。
很顯然,到目前為止,AlphaZero比所有其他引擎都要好,但是請注意,它是一種萬事通。如果有人試圖訓練專注於特定策略的AlphaZero的“專家”變體怎麼辦,即使以不成為最強的一般玩家為代價?請記住,AlphaZero尚未並且不可能探索國際象棋的大部分空間,因為這是不可行的。它的演奏風格最終取決於它已經遇到的戲劇的運氣。如果可以強制AlphaZero很少玩,但玩了很多遍的遊戲狀態,則更狹focused的算法可能會擊敗它。現在,對大量“專家”重複此步驟,然後您將擁有一個可以根據各種董事會狀態進行激活的專家團隊。就個別而言,在大量遊戲中,它們的表現都比AlphaZero差,但總的來說,他們可以擊敗它,因為在狹窄的遊戲中,他們可能會始終如一地擊敗它(即使它們本身僅僅是AlphaZero的實例,但具有
在這種體系結構中,每位專家都將知道自己對當前董事會狀態的“喜好”程度,並以此來確定其對提議舉措的“信心”。
從計算複雜性的角度來看,該集成將更智能,因為它比單獨系統存儲的信息更多,因此它會更智能。具有更大的權重可在更廣闊的遊戲空間中進行優化。無論如何,這顯然不是一個嚴格的論點,但也許是有幫助的。
這取決於最佳象棋引擎的可並行性。如果尚未實現該引擎以使其在許多分佈式計算機上有效運行並協調結果,那麼從理論上講,替代引擎可以利用該引擎。