2023/2/20 24時間AIファッションショーのベータ版配信を停止しました

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

やること

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

実行環境とコード

Google Colaboratoryが利用可能です。

Google Colaboratory
AIワークショップ|GA vs 強化学習(DQN) 配管工おじさん、走る - connpass
connpassはイベントやIT勉強会の開催、さらに参加者の集客に便利です。コミュニティやグループの運営やイベントの検索、事前決済もできます。

マリオのエミュレータ

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

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

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

ニューラルネット

DQNの結果

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

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

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

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

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