コンピュータ将棋に機械学習が導入されたBonanza以降、私はずっと思っているのだが、3駒関係にしても他の駒の配置を暗黙的に仮定しているフシがある。
例えば、居飛車の棋譜からしか学習させなければ、飛車は28の升にあるものと仮定して、そのときに勝ちやすい駒のポジションを学習してしまう。このとき、88玉-78金-77銀という3駒関係を評価しているはずが、実質的に、28の飛車を絡めた4駒関係を評価していることになりかねない。
現在においてプロの棋譜を用いて学習させることはなくなったが、教師局面を生成するために自己対局させるときに、何らかの定跡で進めてからランダムムーブを入れて、そこからの自己対局をさせることがある。この場合、この教師から学習させるとその定跡の局面周辺の局面(において、良い駒のポジション)を学習してしまう。
では、教師局面を生成するときに用いる定跡と、ソフトが強くなったかを評価するときに用いる開始局面(定跡)とが同じだとしたら、これでソフトが強くなっているかを正しく評価できるのだろうか?
統計学において、交差検証(Cross-validation)という考えかたがある。標本データを分割して、一部を解析に使い、残りをその解析のテストに用いて解析自身の妥当性を確認する手法のことである。機械学習の分野においても、学習がきちんとされているかを確認するには、この交差検証がとても重要である。
ところが、上の例のように、教師局面を生成するときの定跡と、ソフトが強くなったかどうかを自己対局させるときの定跡が同じなのは、交差検証がなされているとは言い難いわけである。
もちろん、将棋が本質的に、ここで用いている定跡の類似局面が高い頻度で出てくるゲームであるならば、それらの局面を開始局面にして棋力を計測するのは妥当なことであろう。しかし、本当にそうなのだろうか。残念ながら私はその答えを持ち合わせていない。
AlphaZeroの棋譜に居飛車の対局が多いと言われているが、居飛車は(飛車先の歩を突くので)、弱い棋力のうちは即効性が高く、勝ちやすいと言える。なので弱い段階で居飛車に高い点数をつけるようになるのは自然である。そこからさらに自己対局を繰り返して学習させていくと、どうしても居飛車の類似局面ばかりを学習してしまい、教師棋譜を作るときの対局シミュレーションにおいて居飛車以外の勝率が悪くなり、そこから学習させるので結果として居飛車以外が苦手になってしまう。ある意味、悪循環である。
数年前からコンピュータ将棋は居飛車を好む(高い評価値をつける)とよく言われているが、本当はそれは単なる過学習で、振り飛車もソフトの出す評価値ほど悪いものではないのではないかと私は思っているのだが、しかし、残念ながらその答えも私は持ち合わせていない。
これは❗囲碁AIが三々入りを好む理由もこれと同じではないかと思うのですが、しかし残念ながら私も思うだけで答えを持ちあわせてない。 https://t.co/5cZ60NbYL0
— 大橋拓文☁碁は雲の中 (@ohashihirofumi) January 31, 2019
Qhapaq の澤田さんが、ノーマル四間飛車と居飛穴の局面から指させると評価値は居飛車寄りでも勝率はほぼ5割というブログ書いてたので、評価関数の学習は改善の余地が在りそうですね(特に振り飛車
ほほー。
げにげに。
初っぱなからランダムムーブだと死ぬほど非効率なのでしょうか。いや、非効率でしょうけど、そこを前提にした上で精いっぱいの効率化を図る努力も、AIが棋神に至るどこかのタイミングで、取り組まなきゃならないのではないでしょうか。
SDT5のときのやねうら王は、初期局面からランダムムーブ5手でした。力戦は強いものの、定跡絡みの局面は弱いような気がしました。(´ω`)
AlphaZeroの初期局面作成にはやや問題有りそうですね。
http://tadaoyamaoka.hatenablog.com/entry/2018/04/06/001745
ただ、もし初手からランダムムーブしても居飛車のほうが評価値が高くなってしまうのであれば、初期配置の飛車と角の入れ替えをある程度の割合でやる必要があるかもしれないですね。
飛車・角の入れ替え、面白いですね。
「左右対称をどう扱うべきか問題」って進展してるんでしたっけ?
http://yaneuraou.yaneu.com/2014/12/23/kpp%E3%81%A7%E3%81%AF%E5%B7%A6%E5%8F%B3%E3%81%AE%E5%AF%BE%E7%A7%B0%E6%80%A7%E3%82%92%E8%80%83%E6%85%AE%E3%81%99%E3%82%8B%E3%81%A8%E5%BC%B1%E3%81%8F%E3%81%AA%E3%82%8B%EF%BC%81%EF%BC%9F/
左右対称にして学習すべきではないとは思うのですが、実際には左右対称に扱うほうが強い(教師局面が半分で済むため)ことのほうが多くて…。
近い将来、鏡の国から攻めてきた振り飛車(or両刀)AIに既存AIがこてんぱんにされる、なんて展開になると、傍目にはとてもエキサイティングなんですが(笑)。
対抗形(▲7六歩△3四歩▲2六歩△4四歩▲4八銀△4二飛など)で連続対局ぶん回せば20~30%は振り飛車勝てますよね
それが一定数たまればリソースとしてつかえると思います。
設定教えてくだされば、こちらで振り飛車勝局提出しますよ。
いまの学習方式ですと、勝った棋譜と負けた棋譜がほぼ均等にないといけないです(´ω`)
elmo式は勝敗を局面にフィードバックさせるので全部が勝利局ですと、それは単に定数項にすぎなくて…。
チェス960のように初期配置をランダムにして学習させるのはどうなんでしょう?
理論上、このルールでの最強AIは、普通の将棋でも最強なはずで、また、振り飛車や居飛車に対する好みもないはず(本当か?)
やねうら王(SDT5)が初期局面からランダムムーブ4手(5手だったかな?)なので、それに近いんですけども、まあ、定跡風の局面に対して駒の良い配置を学習できなくて(結局、これが実戦で有効)、そんなに強くならなかったです(´ω`)
大橋さんのコメントはむしろ逆と個人的には思いますね。
将棋での居飛車の過学習の可能性と比べて、囲碁での早めの33入は従来の人間の感性からするとものすごく「独創的」です。
もしくはなんらかの過学習の可能性はありますが、
「居飛車は(飛車先の歩を突くので)、弱い棋力のうちは即効性が高く、勝ちやすいと言える。なので弱い段階で居飛車に高い点数をつけるようになるのは自然である。そこからさらに自己対局を繰り返して学習させていくと、どうしても居飛車の類似局面ばかりを学習してしまい、教師棋譜を作るときの対局シミュレーションにおいて居飛車以外の勝率が悪くなり、そこから学習させるので結果として居飛車以外が苦手になってしまう。ある意味、悪循環である。」
のような過学習とは全く無関係で、
むしろ強化学習が相当進んで棋力がめちゃくちゃ高くなってから生じた独創的なパターン(そして、このパターンには人間は独自には全く到達できなかった)を過度に利用した過学習となります。
囲碁の三々戦法、AlphaZeroに比べて弱い囲碁ソフトでもやってくるのでないですか?(囲碁はよく知りませんが..)
もしくは やねさん のご関心とずれるかもしれませんが、関連する囲碁事情を分かる範囲で簡単に説明しておきます。
・三々「入り」戦法(三々戦法は従来から人間でも採用されていたスタンダードな戦法です)は確かに AlphaZero より弱いソフト(っていうかやねさんのような厳密な解析をしない限りはすべてのソフトは AlphaZero より弱い)でも打ちます。
しかし、これを布石の早い段階で採用するソフトは、私の知る限りではすべて AlphaGo チルドレンです。つまり、2016年の AlphaGo 論文以前のソフトでそういう戦法を採用したソフトはありません。33入りを早めに打つソフトは、プログラマが論文を読んで、 deep learning の技術を利用したプログラムです。さらに言えば、AlphaGoZero 論文以降、こういう棋風が学習されてきていて、2016 年バージョンの AlphaGo は33入りは打ちません。
・現状、ネット対局所で活躍している関連ソフトは、わざと棋力を抑えているもの以外は、全て人間の棋力ははるか凌駕しています。互先で最低勝率99%程度です。
中国のトップソフトの絶芸はネット対局所でトッププロにも角落ちちみたいなハンディで98%とかの勝率です。
・そもそも囲碁の場合、よくご存知の通り、序盤の場合の数が将棋と全く比較にならず(将棋は相対的に中終盤の場合の数が多い)、
AlphaGoZero (AlphaZero ではない)の論文で公表されていた棋譜では、強化学習の初期の弱い頃では三々どころか隅に打たず、盤の中央付近で適当に打っているように見えました。かなり教師なしの人間の初心者の打ち方と似ています。おそらく盤面の端っこの方は勝率がめちゃくちゃ低く、早めに学習候補から外されちゃうと思いますが、それ以外の着手については、相当万遍なく MCTS の探索で十分な重みで試されていると想像されます。
なので、今回の記事にあるような「初心者の時に勝率が高そうな」居飛車の過学習と定性的なイメージは大分異なるだろうと思います。
詳細な解説ありがとうございます。理解しました(`・ω・´)b
そして、そのいただいた解説により、本記事の価値がますまず上がったのではないかと確信しました。誠にありがとうございます。
人間の将棋史を見ると、振り飛車戦法は香落ち上手の作戦として発達し、その成果が平手に応用された、と見ることは出来ると思います。
個体発生は系統発生を繰り返すという観点から、コンピューターの学習において香落ちを多数採用し、その成果を平手に反映させる事は可能なのでしょうか?
駒落ちに限らず、盤面サイズや駒種が少ないほうが学習しやすいという性質はあるので、盤面サイズを縮めて、学習し、その成果を本将棋盤用に転移できれば面白いのですが、このような転移学習が将棋において有効なのかどうかは私にはよくわかりません…。(深層学習の世界では色んな分野で転移学習の成功例が最近出てきてますけども。)
どうぶつ将棋みたいに偏りがありそうな状況での学習でも問題にはならないですか?
問題にならない程度の内容しか転移学習できないのでは。
あ、やっぱり?w
ありがとうございます。