厚みと模様とAlphaGo

GoogleのAlphaGoというプログラムが、韓国のプロ棋士であるFan Hui氏と囲碁で対局して勝利したというニュースが世界を駆け巡りました。
それについての参考資料のまとめと、思ったことをつらつらと。一点注意ですが、AlphaGoのアルゴリズムを解説するという内容では一切ありません。

è«–æ–‡

Mastering the Game of Go with Deep Neural Networks and Tree Search
https://storage.googleapis.com/deepmind-data/assets/papers/deepmind-mastering-go.pdf

参考資料

モンテカルロ探索およびコンピュータ囲碁の進歩について ←これ読むと歴史やアルゴリズムがわかる、大変良い
http://www-erato.ist.hokudai.ac.jp/docs/summer2012/compgo_plan_pub.pdf
コンピュータ囲碁におけるモンテカルロ法~理論編~
http://minerva.cs.uec.ac.jp/~ito/entcog/contents/lecture/date/5-yoshizoe.pdf
コンピュータ囲碁 wikipedia
https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E5%9B%B2%E7%A2%81
コンピュータ囲碁の歴史と将来の展望
http://homepage1.nifty.com/ta_ito/fit2008/sei-fit.pdf

参考書籍

コンピュータ囲碁 ―モンテカルロ法の理論と実践―

コンピュータ囲碁 ―モンテカルロ法の理論と実践―

人間に勝つコンピュータ将棋の作り方

人間に勝つコンピュータ将棋の作り方

「コンピュータと対戦した人間は何を考えるのか?」についてはこちら。
読み物として面白いのでお薦め。
棋士ランキング

Go Ratings
今回のFan Hui氏は633位、スコアは2916*1。

ソフトウェア

強いだけではなく、各種指導モードがあり、ルールを知らない入門者からアマ上級者まで楽しめるソフトウェアです。
ネット対局サービス

KGS Go Server
世界中のプレイヤーと対局可能なサービスです。
棋譜管理や検討、レーティングなどの豊富な機能があるにも関わらず無料で利用出来ます。
登録せずゲストプレイも可能なので、とりあえず打ってみたいという場合にもお薦めです。

雑感

今回のニュースは、囲碁好きで機械学習に携わったことがある方なら誰でも強い衝撃を受けるものだと思います。ただ、囲碁は知らないけど機械学習に詳しい方からすると「将棋やチェスで既にコンピュータが勝利しているのだから囲碁も例外ではないだろ?何を驚いてるの?」と言われそうです。これはちょっと囲碁経験ないとご理解頂けない感覚かなーと思ったため、何をぼんやり考えているのかをつらつら書き連ねたいと思います。これ読んでもマジで得るモノは無いです。あと私は一番勉強してた時ですら初段届くかどうか程度だったので、高段者の意見は全然違う可能性があります。

よく囲碁のプログラムを作成するのが難しい理由として、「盤面が広いから」を挙げられることがあります。
例:【やじうまPC Watch】Googleの人工知能が初めて囲碁で人間に勝利 〜10の170乗通りの選択肢の壁を破る - PC Watch
理由の1つとしてはその通りなのですが、囲碁の難しさは計算量だけではありません。難しい理由のもう一つ、そして私が最大の理由だと考えるのは、「評価関数がわかりにくいから」です。囲碁にはチェスのように「クイーンはポーンより重要」だとか、「単なる移動よりかは相手の駒を取る動きの方がより重要*2」だとか、そういうわかりやすい評価基準がなかなかありません。特に評価基準作成が困難なものとして、囲碁には「厚み」という大変捉えどころがない、けれど盤面で非常に重要な概念があります。囲碁番組を見ていると、プロですら評価が一致してるかと言われると微妙で、しかもそれを利用する(好む)かは棋士によって千差万別です。「で、その厚みって何ですか?」と聞かれるとすごく説明に困るのでとりあえずwikipedia貼っておきますが、この説明読んで理解出来ると思えないですしこの説明がしっくりくるかと言われると難しいところですが、これ以上どう説明していいのかよく分かりません。
厚み (囲碁) - Wikipedia
さらには「模様」というこれまた打たないことにはよくわからない概念もあります。
模様 (囲碁) - Wikipedia
多分これ両方読んで頂いても余計混乱するだけと思いますし、結局厚みと模様が何でどう違うのかわからないと思いますが、多分囲碁始めるとなんとなく分かると思うのでやりましょう、KGSで待ってます。

ちょっと話は変わりますが、私が囲碁を初めた際、たまたま武宮正樹 - Wikipedia氏の書籍が図書館にあったのでそれを読んで布石や手筋を学びました。当時は意識していなかったというか棋風の違いというのを知らなかったのですが、武宮氏は宇宙流という「厚み万歳!!大模様万歳!!!」な棋風の持ち主で、書籍にも「目先の地*3を取ることに拘らず、厚みを築きましょう」という旨の教えがありました。そこでなんとなく厚みというのを肌で感じ、それが性に合ったため、今も厚み万歳で大模様を張りたいという思想が根付いています。そういう背景があるため、私が囲碁のプログラムを見る際は「厚みをどう活かす仕組みになっているのか」、「厚みをどうとらえているのか」にワクワクしながら着目します。最近の囲碁ソフトは普通に市販されているものでもアマ5段程度の強さです。これは相当なもので、人が5段取ろうとするなら、単に勉強すれば良いというものではなく、ある程度才能が求められる領域だと思われます。ただ、総合力はやはり強いなと思いますが、厚みの部分をうまく活かしているのかについては疑問なところもあります。厚みの評価はコンピュータにも、いや、コンピュータにこそ難しいのかもしれません。…と思っていたら、そこに黒船としてやってきたのがAlphaGo、難攻不落と思われていたプロ棋士を破る快挙を成し遂げました。その成功要因は、、論文読めばわかるように単純に計算量がとてつもなく物凄いというのもありますが、気の遠くなるような強化学習の果てに、これまでのプログラムとは全く異なる評価関数を手にしたというのもあるでしょう。それはこれまで割と謎だった厚みをきちんと把握して有効活用するにはどうすればいいかの知見が詰まっているのではないかと夢想しています。今後、AlphaGoの振る舞いや評価関数を調べることで「厚みとは何か」、「厚みはどのように評価されるのか」を知ることが出来るんじゃないかと期待が膨らみます!

このワクワクを「機械学習についてはプロだけど囲碁は全くやったことない」って友人に説明してもあんまり同意されなかったので「頼む囲碁やってくれ頼む!!!!」ってなってる、皆さんKGSで待ってるのではよ!!!あるいはリアルで打ちましょう、よろしく!

*1:2016/1/28現在

*2:「単なる」移動と言っています、何が何でも駒を取る手が重要だとは言ってません。

*3:取った陣地のこと。点数だと思っても構いません。