gonypage diary

トップ > 2021/02 > 23 > 18:22

2021/02/23

18:22 ニューラルネットワークによるシューティングゲーム自動プレイ化実験

以前Pygameで作ったシューティングゲームにニューラルネットワークによる自動プレイを組み込んだものをGitHubに上げた

きっかけとしてはニューラルネットワークによるヘビゲームの自動プレイ動画をYouTubeにサジェストされて見たことだった。

機械学習によるゲームの自動プレイってすごく難しいことだと思っていたが、この例だと入力は餌、尻尾、壁への距離くらいでパラメータの更新も遺伝的アルゴリズムとのことで、これくらいだったら自分にも試してみることができるのではないかと思ったのだった。そして自分の持ち駒にはSHIPPU GSSというPygameで作ったシューティングゲームがあり、これで実験してみようと思い着手した。

基本的な手口としてはヘビゲームとほぼ同じで、入力は避けるもの(敵弾と敵)、狙うもの(敵)、画面端、あとから極太レーザーの予兆エフェクトを追加(後述)、出力は上下左右の方向キー押下状態。遺伝的アルゴリズムを使ってニューラルネットワークのパラメータ更新を試みた。

で、なんとなくニューラルくんに自機を動かしてもらうくらいならわりとすぐできて、あれ実は簡単なのでは? と思ったが、ボスを撃破してゲームクリア(もともと1ステージしかないので)できるまでを目標にしたらこれが結構大変だった。なかなかうまくならない時もパラメータの更新で局所解に入ってしまっているのか、ニューラルネットワークの性能的に限界なのかの切り分けもいまいちわからず、試行錯誤してやっとボスにたどり着いたら今度は極太レーザーに焼かれて全滅(ニューラルくんにすれば予兆エフェクトなんか見えてないんだから当然である)、入力に予兆エフェクトを追加したら入力が増えたせいかまた上達が止まり、いろいろがんばってやっとボスを撃破するに至った。

やったーついにボス撃破! とはいえ極太レーザーはまだ下には避けられず、道中ノーミスでボスに来れるようになったおかげでミスしても倒せるようになったという状態。なにはともあれめでたい pic.twitter.com/R3IHtPCtk5

— gony(LHO) (@gony) February 22, 2021

とりあえずこれで一段落...

Generated by Rui 0.4.3