Help us understand the problem. What is going on with this article?

720万手をディープラーニングで学習したオセロAIをChainerで作ってみた

More than 3 years have passed since last update.

ちょっと前のニュースになってしまいますが、AlphaGoが世界チャンピョンに3連勝したのはすごかったですよね。それに触発されて、今回は同じボードゲームのオセロのAIを作ってみました。

なぜオセロにしたかというと、コンピュータリソースが足りない!!からです。AlphaGoの開発では50GPUで3週間というとてつもないことをしていますが、そんなの個人では絶対不可能です。そこで碁盤が小さくルールも簡単なオセロを選びました。

AlphaGoを話題にあげましたが、AlphaGoとは使っている技術が違います。AlphaGoは教師あり深層学習と、深層強化学習と、モンテカルロ木探索の3つを組み合わせていますが、今回は教師あり深層学習のみを使っています。性能は出ませんが、逆に、アルゴリズムがとてもシンプルなので、今聞いた後半の2つを知らない方でも(私も深層強化学習は分かりますがモンテカルロ木探索はよく分かりません)、深層学習の知識のみで理解できちゃいます!以下の説明では深層学習に関するある程度の理解(ゼロから作るディープラーニングを読んだことがあるくらい=私)があるとします。

概要

オセロの譜面データとしてはフランスオセロ協会のサイトのデータを使いました。WTHORという謎のフォーマットを使っていたのでデータの加工が結構大変でした。

ニューラルネットワークは、入力データに譜面状態(0:なし,1:自分の石,2:相手の石)を、出力データに各手を打つ確率を使いました。教師データには自分が打った手の位置を使いました。言葉だけだと分かりにくいと思うので、図を示します。

説明1.png

ニューラルネットワークの構造

AlphaGoと同じく畳み込み層のみを使い、全結合層は使いませんでした。出力が2次元データなのでCNNのままが良いと考えられるからです。出力層にはSoftmaxを使い、他の層ではConv->BN->ReLUとしました。Batch Normalization(BN)を導入すると学習が安定するのでおすすめです。

ニューラルネットワークの学習

損失関数にはオーソドックスに交差エントロピー誤差を使いました。
最適化アルゴリズムにはAdamを使いました。SGDに比べ、学習が早く進み、最終的な結果も良好です。

ソースコード

お待ちかねのソースコードはgithubにあげてあります
細かいパラメータなどはソースコードを見てください。

学習結果

AIの性能は…
ルールはだいたい理解したみたいですが、残念ながらあまり強くはなりませんでした。
原因はおそらく教師あり深層学習のみを用いたことでしょう。

しかし、時間の都合上CPUだけのPCで2時間半くらいしか学習していないので、まだ強くなる可能性もあります。

ということで、GPUを持っている人求む!

GPUで1日ぐらい学習すれば強くなるかも?

Matchlab
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした