AlphaZeroのShogi版は、あっという間に従来の将棋ソフトを抜き去ったかのように喧伝されているので今回はここで少しばかり反論したい。
AlphaZero(の手法)が、将棋のドメイン知識(ゲーム固有の知識)を用いずに、汎用性の高い方法でゼロから機械学習をして、囲碁・将棋・チェスのAIにおいて成功を収めた。ここに異論はないし、素晴らしい業績だと思う。この点は、惜しみなく称賛すべきであると思う。
しかし、従来の将棋ソフトを圧倒的に追い抜いたのかについては若干の疑念がある。今回は、それについてざっと書いておきたい。
AlphaZeroの論文では、aperypaqとも対局させたと書いてある。aperypaqは最新のやねうら王エンジンと組み合わせるとおそらくR4300相当である。AlphaZeroはそれよりR150か200ほど強いことになっている。正確な数値はよくわからないが、まあ仮にR200強くて、R4500であるとして話を進めよう。
AlphaZeroが採用しているMCTS(モンテカルロ木探索)の手法は、Stockfishややねうら王が用いている並列化手法であるLazySMPに較べてスケールアウトしやすいと言われている。この意味がわかるだろうか?
LazySMPの場合、コア数をN倍にしたとき、その平方根ぐらいの実効がある。(実際にはもう少し良いとも言われている)
つまり、4倍にすると√4 = nps(1秒あたりに読む局面数) 2倍相当である。npsが2倍になるといまどきの将棋ソフトでは+R200。
ここまでは異論ないはずである。
そうすると、おかしいことに気づきません?
LazySMPよりMCTSのほうが効率が良いわけであるから、今回のAlphaZeroの論文(※)にあるようにTPUv2を4基使って対局させた場合、TPUv2 1基のときより+R200以上上がる計算になるわけですよ。
※ http://science.sciencemag.org/content/362/6419/1140
そうするとTPUv2 1基だとAlphaZeroは、R4300未満なわけで、要するにaperypaqのほうが強いということですよ。
もしかして、TPUv2 1基だとaperypaqより弱かったので、4基にしたんじゃねぇの…。
まあ、2年前の論文(※)の時点で、TPU 4基と書いてあるので別にそういうわけでもないのだろうけど、これ、aperypaqに負けてたら、圧勝するまでTPUどんどん増やしていたのではなかろうか…。
※ https://arxiv.org/abs/1712.01815
そもそも、なんで4基使ってるの?1基でGeForce RTX 2080 Tiの10倍以上の性能があるのに(※)、わざわざ4基使うのずるくない?
※ TPU v2 = 180TFLOPS , GeForce RTX 2080 Ti = 13.4TFLOPS である。実際はこの1/10ぐらいの演算性能にしかならないけども、まあ、アバウトな性能比較にはなるかと…。
あと、再現実験できるようにGeForce RTX 2080 Tiとかでやってくれないかなぁ…。まあ、2080 TiだとTPUv2に較べてnpsが1/10以下になって(同じネットワーク構成の場合の話)、つまりは、-R800ぐらい下がるんだろうけども。
そう考えると、GeForce RTX 2080 Ti 1基でAlphaZeroを動かした場合、-R1000ぐらいになってR3500ぐらいしか出ないことになる。なんとかちゃんねるの書き込みでそう試算している人がいたんだけど、それはわりと正しいのではないかと私は思っている。
それからすると、gpsfish(R3000相当)にGeForce 1080で勝ち越せるようになっている山岡さんのdlshogi(※)、かなり凄いのでは?と思うわけである。
※ http://tadaoyamaoka.hatenablog.com/entry/2018/12/13/001953
山岡さんは、1年近く学習を回されていて(※)、まだ強くなり続けているとおっしゃっているわけだけども、上の計算が正しいなら、まあ、GeForce 1080(2080 Tiの7割ぐらいの性能?)だと、だいたいR3300~R3500あたりに落ち着くのかなぁと私は思いながら傍観している。
※ http://tadaoyamaoka.hatenablog.com/entry/2018/10/18/003726
そんなわけで、AlphaZeroを家庭用PC(GeForce 1080程度)で動作させたときはR3500程度だと推定されるわけであるから、家庭用PCでR4000オーバーのいまどきの将棋ソフト(『将棋神やねうら王』も含めて)には全然届いてないのではないかというのが私の試算である。
まあ、Deep Learning界隈は、ニューラルネットの構成をちょっといじくりました(e.g. ResNet)程度で、圧倒的にパフォーマンスが上がることがざらにあるので、半年後にはどうなっているかはわからないが、現状はそんな感じであるな。
追記 2019/1/18 12:00
AlphaZeroがテスト対局に用いたのはTPUv2ではなくTPUv1(初代TPU)ではないかとの指摘がありました。最新の論文を確認したところ、教師生成がTPUv1、学習がTPUv2、対局はTPUv1のようです。(最初にarxivで発表されたほうの論文には、その記述がなくて勝手にTPUv2だと私は解釈してました。) TPUv1自体はTitan V相当だと言われています。だとすると、家庭用PC(GeForce 1080程度)で動かした場合、上の本文の見積りよりは強いことになります。) この点、修正してお詫びいたします。
追記 2019/1/18 13:00
上の本文中にRTX 2080 Tiの性能として書いた13.4TFLOPSはFP32(32bitの浮動小数点数の計算)の性能で、FP16の場合、110TFLOPSだそうです。あれ?TPU v2とFLOPS上はそんなに差が無いのかな…。むむむむむ。詳しい人、コメント欄で教えてください。
追記2019/1/19 16:30
この記事の計算、ざっくりしすぎだったので、LeelaChessZeroのbenchmarksの値から正確な値を計算しなおしました。
論文の主旨は「汎用の手法で短時間で学習」が肝ですよね。誰も真似できないマシンパワーが裏付けであるのはもちろん,目立たないように変更されていますが対局時の探索アルゴリズムの改良に相当の試行錯誤があるように思います。後者が一昨年の発表から一年近くかかった理由かと邪推してます。
教師を作るのに使用している計算資源が我々よりAlphaZeroのほうが2桁ぐらい多いように思うのです。(おそらく生成されている教師の質は同じぐらいのはず) RootStrap + elmo式の効率が良すぎるのでしょうか…。
正確にはLeela Zeroみたいなのやってみないと分からないですかねぇ。頭打ちの仕方がかなり違うと思われます。
別のコメントへの返信かと勘違いして、ちぐはぐな返信してしまいました。(´ω`) さきほどのコメント削除しました。
まあ、その通りでございます。
将棋の神(上限)に近づけば近づくほど、計算力による棋力向上の度合いは漸減していくと思うんですが、まだまだ線形に向上していくなんて、夢がありますね。
(という理解で合っていますかね?)
> 計算力による棋力向上の度合いは漸減していく
いまどきの将棋ソフトで思考時間を片側だけ2倍に増やすと+R200になる(1秒 vs 2秒、2秒 vs 4秒、…、32秒 vs 64秒ぐらいまで確認)ので、R6000ぐらいまでは線形に(増やした時間の対数に比例するように)レートが伸びることは間違いなさそうです。
夢が・・・・・! 広がりんぐ・・・・・・・・・・・・・!!!!
今まで、
アルファナンチャラ+一部屋まるごとコンピュータ
と
ポナンザ+ガレリア1台
みたいなのが同等くらいなんじゃないかと思っていたけど、たいして間違ってなかったということなのだろうか?w
「アルファナンチャラ」は、(我々の購入できるGPUだと)小学校の体育館丸ごとコンピュータである可能性も微レ存。
たしかにAlphaZeroが他を圧倒しているとは私も感じません。というのもelmoと対戦した棋譜を眺めても、どれも似たような展開が多く、奇抜な手もあまり無く、正直圧倒的な強さは感じられませんでした。でも数字ではelmoを圧倒している。これはそもそもDeep Learning仕様なので相手よりもやや有利であれば良しという指し方になってしまったのではないかと考えています。電王戦と世界Comの議論でもありましたが強さを平等に比べるというのは難しいですね。
WCSC28で聞いたところ、GPUで遅い理由はメモリアクセスがネックになっているらしいです。
第28回世界コンピュータ将棋選手権【会場から生放送!】
https://www.youtube.com/watch?v=ZsDKaoCLvpQ
の2:21:30頃
convolution、重いですからねぇ…。
>> あれ?TPU v2とFLOPS上はそんなに差が無いのかな…。むむむむむ。
https://news.mynavi.jp/article/20180424-621091/2
GoogleはTPUを外販していないが、
社外にもクラウドでTPUを使わせるクラウドTPUというサービスを行っている。
現在、TPU v2の1時間の使用料は6.50ドルである。
ここはやねうらお氏が6.50ドル支払って測定するしかない
測定するためのソフトをプリーズ。LeelaZeroでも動かしますか..
TPUv1ということだと、演算はおそらく8ビット整数(INT8)で行っていると思います
その場合の理論性能は92TOPSです
一方RTX2080TiのTensor CoreもINT8対応で、その理論性能は約227TOPSです
場合によってはRTX2080TiでもTPU4機と同じくらいのnpsがでるかも…?
おお、なるほど…。
強さの比較にまつわる計算資源としては:
・強化学習にかけるリソース
・対局の時に使うリソース
の2つがありますよね。
両方共圧倒的優位に立たせることが可能な Google で、かつ他のソフトの強化学習の計算資源を特定するのが困難に思える以上( DeepMind 以外に、それこそやねさん御本人を始めとして、学習資源を出版していないでしょうし)、公平な比較は難しそうに見えます。
結局、
「弱すぎ、ワロタ」
のやねさんの解析の実質的内容としては、
対局時の不公平な計算資源によるレーティングのインフレ は
強化学習でのチート に置き換えることができることは必ずしも自明でない
と解釈してよろしいでしょうか?
AlphaZeroがやっているconvolution演算、あれ、めちゃくちゃ重い(足し算と掛け算の回数が多い)演算なのですが、やねうら王+Aperypaq側の数十倍の演算をして、同じぐらいの強さにしかならないの、逆におかしいのではないかと思っています。R1000ぐらい強くなって然りなのに…。AlphaZero、まだまだ工夫の余地があるんでしょうね。
Science 誌にアクセプトされることが主要目的なので、現状以上強化学習に計算資源を割くインセンティブがなかったんだと想像します。AlphaGoZero の論文出版時には、自前の前バージョンであるところの AlphaGo Master が強すぎたので、今回よりも強化学習に相当計算資源を要したんではないですかね? AQ の山口さんの推定では在野のプログラマではとうてい無理な強化学習の計算資源だということでした。
結局、澤田さんもおっしゃっていますが、「定量的に」 AlphaZero が最強というところまでは主張していないと思います。
やねさんご指摘のように、交差検証のような問題も AlphaZero で他のソフトに比べて解決されているかと言えば、全く自明でない気もしますし。囲碁で Lee Sedol に破れた時に、 GAN みたいな敵対的学習を試してみたいみたいな感じのことを DeepMind の人たちが言っていた記憶がありますが、その後、結局 Zero の論文ではこれにふれられていませんよね。
今回は、汎用アルゴリズムで他のアルゴリズムのソフトを(対局条件の公平性はともかく)凌駕したことが主要貢献なんでしょう。
無論、AlphaZeroの論文の学術的な意義は理解していますが、私も含めコンピュータ将棋の開発者は、自分のソフトが勝たなければいけないので、AlphaZeroにあとどれくらいの伸びしろがあるか(伸びしろがまだまだあるなら、AlphaZero方式に切り替えたい!)が最大の関心事なのです。