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

3-4. DQNでスーパーマリオ1-1をクリアする(動作確認編)

やること

DQNでマリオをクリアします。9-3ではGAでマリオをクリアしましたが、あれはいわば「目を閉じて走り、ジャンプのタイミングを最適化」しているに過ぎません。ここではきちんと画面を見て、進み方を学習してもらいましょう。マリオの動かし方については9-3を、DQNのアルゴリズムについては3-1をご参照ください。

実行環境とコード

Google Colaboratoryが利用可能です。

Google Colab
AIワークショップ|GA vs 強化学習(DQN) 配管工おじさん、走る (2019/04/24 19:00〜)
## ★オンライン配信を行います★ ~~自宅で参加できるかも!? テスト配信ですので、うまく映らなくても泣かないでください。~~ テスト配信してみました、たぶん大丈夫だと思います! こちらで視聴可能です。 ## 参加方法 抽選や承認はありませんので、好き勝手にお越しください。 ## オンラインコミュニティ ...

マリオのエミュレータ

Kautenjaさんが作った環境は、Colab上で問題なく動作しましたが、報酬体系が少し惜しい感じでした。具体的には、「右に進んだら+x点」「左に進んだら-x点」「死んだら-x点」という3種類の報酬しか用意されていません。マリオがクリボーや崖を恐れてしまい学習に失敗する可能性があります。これは、クリボーを踏み越えるご褒美よりも、クリボーで死ぬペナルティのほうが大きいためです。

ppaquetteさんが作った環境は、ソースコードを一部書き換えることでColab上でなんとか動きました(それもまあまあ大変でしたが…)。一方で報酬体系はとても良いようで、Kautenjaさんの基本報酬に加え、「クリボーを踏んだら+x点」「崖を飛び越えたら+x点」といったきめ細やかなご褒美が用意されています。しかし残念ながら、keras-rlとの相性が悪いようで、DQNの学習ができませんでした。

よって、今回は前者の環境を採用することにします。

ニューラルネット

DQNの結果

13800エピソード時点のマリオです。

18800エピソード時点のマリオはさっきよりも早く死んでしまいます。

GAで走ったマリオに比べると、やたらにジャンプしないので賢く見えます。

今回は20000エピソードまで学習しましたが、ゴールはできませんでした。原因は、1エピソードが長かったことです。ランダムにステージを生成し、2画面分くらいの長さ単位で学習を行えば、きっとうまくいくと思います。

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