12/9(月) 応用科学学会シンポジウムで自動運転に関する講演を担当します☆彡

3-2. DQNで迷路を解く

やること

DQNのプログラムは非常に高度ですが、勉強会で配布されたコードは比較的シンプルで読み解きやすいです。今日は、DQNで地雷原を進むゲームを解いてみましょう。

環境とコード

Google Colaboratoryが利用可能です。

Google Colab
AIワークショップ|初心者だけど強化学習(DQN)できちゃった (2018/09/28 19:00〜)
# 情報交換はAI FASHIONのSlack(参加ボタン)の方でお願いします。 ## 概要 ノートPCを持参して、強化学習で「迷路を解く」AIを作ってみよう。 「プログラム環境の準備」からやりますので、初心者におすすめです。 ## コンセプト AIって教師データ集めが大変って聞いたけど、強化学習っていうのは...

ゲームのルール

できるだけ地雷を踏まないように、左上から右下のゴールを目指すゲームです。一歩進むごとに-1点、地雷には-1点と-2点のものがあり、繰り返し踏むことができます。ゴールすると+50点もらえます。盤面はランダムに自動生成されますので、臨機応変な判断が必要です。

ニューラルネットモデル

ニューラルネットは「状態」を入力とし、「行動」を出力します。入力は5*5*2chで、1ch目は地雷情報、2ch目はエージェントの位置情報を含んでいます。これを畳み込んだり全結合したりし、最終的に4ユニットのOne-hotな出力とします。例えば、(1, 0, 0, 0)であれば「上移動」、(0, 1, 0, 0)であれば「下移動」 といった感じです。

プログラムを実行する

配布されたプログラムは、ゲームの定義(上半分)とDQN(下半分)から成ります。オンライン実行環境であるGoogle Colaboratoryは、Kerasは初期装備ですが、ゲーム環境を記述するための「gym」や、強化学習用のパッケージ「Keras-rl」は追加でpipインストールしなければいけません。

  • !pip install gym
  • !pip install keras-rl

学習の結果

実行すると、1エピソード(ゴールするか100回行動したら終了)ごとに1行の出力が出ます。はじめのうちは闇雲に動き回るため、上限の100回まで行動して-100点未満を連発していますが、たまたまゴールを見つけると行動基準が大幅に改善され、以降はスコアが改善していきます。20エピソードにもなると、最短距離である「8ステップでゴール」を連発するようになり、以降はできるだけ地雷を踏まないように学習が進んでいきます。

スコアを縦軸に取った学習曲線を見ると、安定して30~40点を取れるようになっています。+50点(ゴール時)-8点(最短で8歩)-地雷分なので、ちょうどこれくらいの点数になります。

地雷原を進む

指定したエピソードごとに重みとバイアスを保存するようになっているので、固定した盤面でニューラルネットの成長を見てみます。

  • 0エピソード・・・ゴールできない
  • 100エピソード・・・ゴールできる
  • 1000エピソード・・・地雷を避けてゴールできる
  • 10000エピソード・・・賢く地雷を避けてゴールできる

しかし、10000エピソード学習したエージェントでも、盤面をランダム生成して何度か試してみると、まだ賢くないことが分かります。次回はニューラルネットを工夫して、右側の難しい問題にリベンジしてみましょう。

タイトルとURLをコピーしました