CGLemon / Sayuri

AlphaZero based engine for the game of Go (圍棋/围棋).
GNU General Public License v3.0
74 stars 9 forks source link

关于和leelazero对照的问题 #5

Open shengkelong opened 1 year ago

shengkelong commented 1 year ago

作者您好,我一直在关注sayuri的训练过程(因为对gumbel是否能真正提升训练很感兴趣),我注意到您在最新的日志中和leelazero的早期网络进行了对比,但是据我所知leelazero在早期很长一段时间的训练有比较严重的问题(具体是什么忘了,很久以前的事了),所以如果想要对比训练速度的话和sai比leelazero更合适,考虑到sayuri使用了一些kata的算法来改进训练,如果想要证明gumbel有效可能和kata的早期网络对比是最合适的。

CGLemon commented 1 year ago

你好 shengkelong:

感謝你對本專案的關注。我直接說你可能比較感興趣的結論,目前我的訓練效率的理論值和 KataGo 在 2019 年 2 月的版本 (v1.0) 是同一量級的,此結果由 KataGo 的第一版論文 中換算得知。

和 Leela Zero 比較

至於和 Leela Zero 比較的問題,你說的是正確的,與其相比理論性能的確非常不公平,依我所知 Leela Zero 的問題至少包括

雖然 Leela Zero 有不少問題,但之所以和 Leela Zero 比較,有以下考量點

至於你提到要證明 Gumbel 的有效性,這個只能通過 Sayuri 調不同參數互相比較,和 KataGo 比較可能還是無法確認有效性。目前我處於硬體資源匱乏的狀態,不太能再跑一個對照組,因此要驗證有效性,可能還要等一段時間,看看有沒有教授願意贊助我。

Gumbel 相關

你可能有興趣我怎麼使用 Gumbel 方法,這裡將描述之

每一輪的搜索過程分為兩個階段。

  1. Gumbel 階段,使用 Sequential Halving with Gumbel 的演算法。
  2. PUCT 階段,沒有特別的算法。

搜索完後使用 completed Q-values 混合的機率分佈當作訓練的資料取代原本的機率分佈。

之所以這樣處理,想法來於 Forced Playouts and Policy Target Pruning,此方法出於 KataGo,它分為兩個階段。

  1. Forced Playouts,強置搜索可能的後選手。它可以對應到 Sequential Halving with Gumbel。
  2. Policy Target Pruning,裁剪勝率不好的後選手。它可以對應到 completed Q-values 混合的機率分佈。