Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于和leelazero对照的问题 #5

Open
shengkelong opened this issue Feb 20, 2023 · 1 comment
Open

关于和leelazero对照的问题 #5

shengkelong opened this issue Feb 20, 2023 · 1 comment

Comments

@shengkelong
Copy link

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

@CGLemon
Copy link
Owner

CGLemon commented Feb 20, 2023

你好 shengkelong:

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

和 Leela Zero 比較

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

  • MCTS 搜索上的 bug。
  • MCTS 沒有優化。這屬於時代的問題,因為當時並不知道 MCTS 和神經網路的結合要怎麼處理比較好,原 AlphaGo Zero 論文仍有沒說明的部份。
  • 訓練網路的流程沒有優化,這導致強度比理論值下降非常多。早期的 Leela Zero 網路容易無視大龍死活(至少約 300 萬盤棋前),應該也是這個原因。
  • 網路結構設計有缺陷。
  • 一開始選用的網路太小 (5x64),且練的太久,導致進步速度不如預期。

雖然 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 混合的機率分佈。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants