Qiitaはすごい人が多くて見る専でしたが、囲碁分野なら書けることがあるんじゃないかと思い、初めて投稿します。よろしくお願いします!
プロフィールはユーザーページに書いてあるので割愛。
※囲碁AIを作る方法については次回の導入編から解説するので「早く囲碁AIを作り始めたいんじゃ~!」という人は飛ばしてOKです。
前置き
当記事は、「Python?TensorFlow?なんやねんそれ!でも囲碁AIは作ってみたい!」という機械学習について無知だった囲碁キチの僕が、自分の棋譜データ5360局分を学習させ、出来上がったAIをネット碁で動かすことに成功するまでの3か月間で得た知見をまとめたものです。
えっ?機械学習素人が3か月で囲碁AIなんて作れるわけがない?
...バレてしまっては仕方がないですね。実はPythonもTensorFlowもほとんど分かりません。
では何故、囲碁AIを作ることができたのか?答えは簡単です。
棋譜さえあれば自分だけの囲碁AIが作れそうなプロジェクトがTwitterのタイムラインに流れてきたからですよ。これはやるっきゃない!(囲碁キチ的発想)
前置きが長くなってしまいました(すみません)
それでは、囲碁が分からない人向けに囲碁とは何なのかを少し説明したいと思います。
囲碁って難しそう
2016年3月、囲碁の世界タイトル獲得数18回、「韓国棋界の魔王」と評されている李世乭(イ・セドル)とデミス・ハサビス氏率いるDeepmind社のAlphaGoによる五番勝負が行われたことは覚えているでしょうか。
その対局は、全世界2億人が見守る中、AlphaGoが4-1で勝利して全世界を震撼させました。
囲碁は創造的、戦略的思考を必要とする複雑なボードゲームであり、長い間、囲碁は、チェスのようなその他のゲームと比較して人間に勝つのがコンピュータにとってはるかに困難であると考えられていた。これは、他のボードゲームよりも可能な局面の数がはるかに大きい(約2×10172通り)ため、力まかせ探索といった伝統的なAI手法にとって極めて困難なためであった。wikipediaより引用
これだけを見ると「囲碁って難しそうだなぁ~」「ハードルが高すぎてやろうとは思えない」という声が聞こえてきそうですね。
でも実際、囲碁をやったことが無い人の大半が難しそうと感じているようです(経験談)
その原因として挙げられるのが「素人が見ても何をしてるのか分からないしどっちが勝ってるのかも分からない」という点。
でも囲碁AIなら、与えた棋譜の着手情報を元に学習して、ルールを教えなくても強くなります!
自分で囲碁を打つのはもちろん楽しいですが、囲碁AIという自分の化身を作って戦わせるのも1つの楽しみ方ではないでしょうか。