囲碁AIは”答え”を提示しない

「AIが人間に取って代わる」

そう言われ始めて、何年経ったでしょうか?

「囲碁AIに教わる時代が来るのではないか」

このように述べる方がちらほら出てきました。

確かに棋力としては人間を超えました。

人間とは異なる発想の手を打ちます。

それでも、「教わる」ことができる……わけではありません。

今回は、囲碁AIの根っこのところに触れながら、囲碁の学び方について少しお話ししたいと思います。

囲碁AIってどんなシステム?

囲碁AI……というか「コンピュータ囲碁」という呼び名の方が個人的にはなじみが深いのですが、ここでは時代に合わせて囲碁AIと称することにしましょう。

囲碁AIの歴史は大きく3時代に分けることができます。

①~2005年 ②2006年~2015年 ③2016年~

~2005年

チェスは1997年に世界チャンピオンに勝利し、将棋は2005年時点でアマ竜王戦ベスト16でしたが、この時代の囲碁AIは、アマ初段以下でした。

囲碁AIの仕組みは、以下の3つでできていました。

―囲碁AIの仕組み―
①探索(先読み)
②評価関数(形勢の善し悪しを数値で返す関数)
③その他

棋力が上がらない一番のネックは「評価関数」でした。いわゆる「評価値」と言われているものを作る仕組みです。最近はこの「評価値」って言葉も知らない人が減りましたねぇ。

実際、探索も深いモノではありませんでした。実際、囲碁は「打つ手に制限がほとんどない」ため、上手く絞らないといけませんが、そこを解決する仕組みがこの時代はまだなかったのです。

2006年~2015年

2006年に囲碁AIにとって1度目ブレイクスルーが起きました。

それが「モンテカルロ木探索(MCTS:Mote Calo Tree Search)」の導入です。

探索という言葉の通り、さっきの3つの要素のうち、①探索 部分に該当する仕組みです。

「モンテカルロ」とは、シミュレーション(最後まで打ち切ること)を何度も繰り返して結果の平均を取ることです。

つまり、結果の見通しが立たないなら作ってしまえ!って作戦ですね。

ですが、単純計算ではとても処理しきれる計算量ではありません。

そこで、「木探索」として、良さそうな手は何度も調べ、良い手を優先的に調べることを行ってます。

この二つの仕組みを併せ持っているのが、「モンテカルロ木探索(MCTS)」なのです。

この仕組みにより、囲碁AIはアマ高段者のレベルに達し、プロ相手に4子のハンデで勝負できるようになりました。

しかし、2012年以降(~2015年)は目に見える進歩がありませんでした。

2015年以降

2016年3月。Google DeepMind社の開発した囲碁AI、AlphaGoが李世乭氏(韓国の囲碁トッププレイヤーの一人)を4勝1敗で打ち倒しました。

2回目のブレイクスルーは、「Deep Learning」によるものでした。

Deep Learningとは、階層の深いニューラルネットワーク(簡単な関数をたくさんつないで、より複雑な処理を可能にしたもの)です。

その中でも、DCNN(Deep convolutional Neural Network)という、高精度の物体認識機能がAlphaGoの肝です。

DCNNってなんぞや?って人に簡単に説明すると、

ネコっぽいモノを「ネコ」と認識する機能です。

つまり、こういう写真を見て、ペットとして同じくメジャーなイヌでもなく、同じネコ科のトラでもなく、ネコだと断言するのがDCNNってことです。

この技術はいきなり現れたわけではなく、応用はこれ以前からありました。しかし仕組み的に遅いため、探索部にしか使えないものでした。

さて、AlphaGoに視点を移しましょう。AlphaGoは主に3つの仕組みでできています。

―AlphaGoを構成する3つの仕組み―

①MCTS用高速予測器(探索部分)

②Policy-Network(Deep Learningした遅いけど正確な予測器:探索補助)

③Value-Network(Policy-Networkの強化版から学んだ勝率予測装置:評価関数)

これらを組み合わせてMCTSして戦ってくるのが、AlphaGoでした。

2017年5月。人間のトップ棋士、柯潔氏との対戦を3戦全勝し、AlphaGoは引退しました。

こうして完全に人間を越えてしまったのです。

2017年10月。新たなAlphaGo、AlphaGoZeroが登場しました。

このAlphaGoZeroは、それ以前の囲碁AIがやっていた人間の棋譜(記録)から学習せず、自己対戦で一から学んでいった囲碁AIです。それでありながら、それまでのAlphaGoより強いのだから、恐ろしいものです。

このAlphaGoZeroの仕組みは以下の通りです。

―AlphaGoZeroの仕組み―
①Neural Network(Policy-Network & Value-Network)
AlphaGoZeroは、最初ルールだけを学び、MCTSで自己対戦を繰り返し、その棋譜からPolicy-Network(着手確率)とValue-Network(勝率)を学びました。そして、対局時は一つのNeural NetworkだけでTree Searchして戦うのです。

囲碁AIから学べるのか?

人を超える囲碁AIを開発したDeepMind社ですが、AlphaGoTeachというツールを公開してます。

https://alphagoteach.deepmind.com/ja

これは、人間の打つ手とAlphaGoの打つ手を評価値を見ながら比較できるツールです。
序盤の数十手だけですが。

これを見てこう思うのではないでしょうか?

「AlphaGoと同じ手を打てるようにすれば、強くなれる……」と。

果たして本当にそうでしょうか?

このサイトの下部にAlphaGoの勝率予測についてこんな記載があります。

AlphaGo は、必ずしも勝率予測値の高い手を選ぶとは限りません。これは、AlphaGoの探索にはランダム性があり、それぞれ全て打つ手の勝率が単独に1000万回の模擬探索によって得ているからです。そのためAlphaGo は違う探索で、その時に勝率が近い違う打ち方を選ぶ可能性もあります。

要は、こういうことです。

たまたま今回はこれが正しいと思って打ってるけど、毎回同じルートを考えているわけじゃないから、次は違う答えになるかもよ。

両手で数えられるPhaseで出来ているなら、これを見よう見まねしても構わないと思いますがが、囲碁は100手以内で終わることが稀なゲームです。見よう見まねなんかしてたら、日が暮れるどころか、人生200年くらいは必要でしょう(それでも足らないかもしれませんがね)。

加えて、(人間にとって)囲碁AIの最悪の特徴が、評価値とその提示方法だと思います。

(この話をするために、長々しく囲碁AIの仕組みを書きました)

これを単純に言うなら、

「答えだけあげるよ。導出過程は教えられないけど」

って言われているようなものです。

もう一度言います。

「過程はすっ飛ばして、私の出した答えだけあげるよ」

酷い話ですよ。

3 以上の自然数nについて、xn + yn = zn となる自然数の組 (x, y, z) は存在しないんだ。試しに使ってみてね。

ってことですから。

そんなものが使えるわけないのです。

囲碁AIにはどこにも過程を言語化する術はないのです。

あらためて、学習についての図を出しましょう。

答えをInputすることはできるでしょう。

しかし、その答えをSortするヒントさえ得られないのです。

それではOutputなんて夢のまた夢の話です。

つまり、囲碁を学ぶ上で、Sortする技術は囲碁AIからは得られない、ということです。

逆に言うなら、Sortする技術を持ち合わせている人だけが、囲碁AIから囲碁をまともに学べる、というわけです。

従来から「強い人が人を強く出来る」わけではありません。

同様に「強いAIが人を強くする」こともなかなかできることではないのです。

そして、以前書評でも述べましたが、

大橋拓文著『よくわかる囲碁AI大全』を読了しましたので、書評および考察を以下に記述します。 一言で言う...

これからの時代は、囲碁に限らず「知性」が求められる時代になるでしょう。

それと同時に「知性」から簡単に逃げられる時代にもなります。

そんな中でどのようにAIと付き合っていくのか、このことに向き合い続けていかなくちゃならないのです。

最後に。本内容を記述する上で、囲碁AI開発者である荒木伸夫氏より以前いただいたプレゼン資料(2016年1月)と、大橋拓文著『よくわかる囲碁AI大全』を主に参考にしました。両名に心より感謝申し上げます。なお、わかりやすさを重視する上で表現を工夫したため、(専門家的には)不正確な記述が含まれているかもしれません。このことはご了承いただければ幸いであります。