AI研所属14のいしづです。このたびは記事を書かせていただくことになりました。なぜかAI研カテゴリ初の投稿となっており、おっかなびっくりしてます。

さて私が取り組んでいるお題は「2048を自動で解くAI」です。
みなさんは2048というゲームをご存知でしょうか。

言葉で説明するよりも公式サイト(http://gabrielecirulli.github.io/2048/)にいって
実際にやってみるのがいいと思います。簡単に説明すると、
タイルを移動して同じ数字を足し合わせて数を大きくしていくゲームです。


まず初めに本家のソースコードに手を加えて、自動で動かせるようにしました。

ここからはAIを作るという一番のキモなわけですが、今回は強化学習のモンテカルロ法を用いました。

マサカリを恐れずに言うと、
テキトーに行動して結果によって行動を評価する
 のがモンテカルロ法です。

今回の2048AIにおいては
・ゲームオーバーまで上下左右動かしていって
・「最終スコアをもとに
・出す手を決める
とい う流れになっています。

そんな感じで実装していくと、こんな風にそこそこ強いAIが出来上がります。
モンテカルロ法の利点はスコアを計算するだけなので、
 自分で評価関数を考えなくても良い点にあります。

これはつまり2048の解き方やコツを知らずとも2048solverが作れるということです。
なかなか面白い話ですね。プログラムさんは試行錯誤の結果を出して
いるだけで本当に2048の解くコツというものはわかっていないわけです。
少し哲学じみていますね。

話が脱線してしまいました(汗)今回はモンテカルロ法をつかって2048のAIを作ってみました。
しかし、スコアは人間に及ぶものではないので、
人間と同程度のスコアをだすAIが作れたらいいなと思います。2048AI