マナティ

マイナビ出版らしい1冊!『将棋AIで学ぶディープラーニング』

将棋本を手掛けるマイナビ出版から、「将棋AIで学ぶディープラーニング」をご紹介します。

CPUの創りかた



 

将棋+ディープラーニング!

この記事を読んでいる皆様はディープラーニングに興味を持ったことがあるでしょう。本を買ったこともあるかもしれません。
よくあるディープラーニングの入門書だと、最終的に手書きの数字を認識してみるのがゴールになる場合が多いのではないでしょうか。

『将棋AIで学ぶディープラーニング』では実際に対局できる将棋AIを作ります。
ご存知の通り、マイナビ出版では将棋の本も扱っています(。将棋とディープラーニング、どちらにも興味がある方におすすめの一冊です。

理論編

いきなり将棋AIを作り始めても、自分が何をしているのか理解していないとあまり意味はありませんね。そこで、本書は『理論編』と『実践編』の二部構成になっています。 まずは理論編を紹介します。
理論編では、将棋AIや、囲碁AIで使われているアルゴリズムを例にゲームAI作成の手法について解説しています。

shogi_Ai1.jpg
 
shogi_Ai2.jpg

最近話題になったAlpha Goで使われている手法についても解説しているので読み物としても面白いでしょう。
理論編を通じて、ゲームにおけるディープラーニングの概要を学ぶことができます。

実践編

5章までしっかりと理論編を終えたら、いよいよ将棋AIを作っていきます。ちなみに、本書ではGPUの使用を前提にしていますが、現在はGoogle ColabでGPUを利用できるのでご自身のPCに設備がなくても大丈夫です。Google Colab対応のコードは著者が公開しています。

7章

6章の環境構築とデモの手書き数字認識は飛ばして、実際に将棋AIを作りはじめる7章から見てみましょう。

shogi_Ai3.jpg

まずは、駒の盤上での移動を表現する方法から解説しています。将棋を知っている方なら棋譜の読み方はご存じでしょうが、コンピュータは7六歩、5八金右、6八金上、といった表現を理解しづらいので専用の形式で表現する必要があります。
コンピュータならではの棋譜表現を理解したら、コンピュータ将棋対局場のfloodgateから教師データ用の棋譜をダウンロードします。ダウンロードした棋譜を見てもパッとわからないかもしれませんが、要は「どの方向から指定の場所に移動してきたか?」ということを示しています。この方がコンピュータは読みやすいのです。

ダウンロードした棋譜はそのまま全部使うというわけではありません。中には手数が短すぎる、長すぎる、将棋の内容があまりよくない(人間同士の対局でもうっかりして王手飛車をかけられる、一手詰を見逃してしまうなどの経験があるでしょう)など、様々な理由でデータとして不適切なものが含まれているでしょう。
不適切なデータを削除・整形をする工程を前処理といいます。この工程はディープラーニングの結果を左右するほど重要です。もちろん、将棋AIだけではなくどんな分野でも必要になります。
このように、実際のディープラーニング実装に役に立つスキルを将棋AI構築を通して身につけられるのが本書の特徴です。

shogi_Ai4.jpg

前処理もして、教師データを訓練データとテストデータ(このあたりは本を読んでください)に分けて、学習をすれば将棋AIが出来上がります!

8章

7章までで一応、将棋AIはできあがっています。でもまだ一番重要な対局ができていませんね? それでは面白くありません。そこで、8章では自分が作った将棋AIをソフトウェアに実装する方法を解説しています。

shogi_Ai5.jpg

機械学習は作って終わりではなく、何かに組み込んで誰かに見せることではじめて価値を持ちます。本書では、実際に対局できる将棋ソフトに組み込みながらデータを可視化する工程を学ぶことができます。

将棋AIをさらに強くしたい方のための9章~

8章までの内容で作った将棋AIと対局してみると、序盤はともかく中盤に変な手を指すし少し物足りないという実力者もいらっしゃることでしょう。
本書のカバーには、「人より強い将棋プログラムを作る!」と書いてあるのにこの程度か…そう思った方もいるでしょう。
でも、安心してください。ここまではディープラーニングを最低限学んで動かすための内容です。9章以降は作成した将棋AIをさらに強くする手法を解説しています!

shogi_Ai6.jpg

ぜひ、取り組んでみて対局してみてください。きっとご満足いただけるものになるでしょう!
 

ここまで解説した『将棋AIで学ぶディープラーニング』は

• AlphaGoやAlphaZeroが動く仕組みに興味のある方
• ディープラーニングを応用したプログラムを作ってみたい方
• ディープラーニングを使って将棋AIを作ってみたい方

こんな方にお勧めの一冊です。特にディープラーニングを応用して何かを作ってみたい人にはピッタリでしょう。
書いてあるコード自体はそれほど難しくはないので、プログラミングの素養のある将棋ファンの方にもおすすめです。

また、この本の内容を超えてもっと強い将棋AIを作りたいと思った方にはC++でディープラーニングを実装することをお勧めします。manateeでも販売中の『C++で学ぶディープラーニング』がお勧めです。

 

著者プロフィール

Manatee編集部(著者)