2021年9月20日月曜日

回帰型(再帰型)ネットワーク(LSTM2枚)

 強い。

時系列予測などによく用いられる回帰型ネットワークを実装した。英語では Recurrent Neural Network (RNN) と呼ばれ、再帰型ネットワークとも訳される。出力を次のステップの自分の入力に入れることでループを形成し、原理的には無限ステップ離れた過去の情報にもアクセス可能になる。詳しい説明はこちらの記事などを参考にされたい。(英語が読める場合はこっちのブログ記事の方がいいかも。) 今回の実装ではLSTM(Long-Short Term Memory; 長-短期記憶)という型のRNNを用いる。

時系列を認識するタイプのネットワークなので、時間の流れを適切な順序で入れてやる必要がある。今までの学習方法ではランダムな時間を取り出してきてトレーニングしていたので、変更する必要があった。新しい方法では1試合のデータを丸ごと取り出してきて、それを1から試合終了まで順番に入れることになった。バッチサイズは今まで通り32でも大丈夫なようだった。これに伴ってメモリ構造を一から書き直す必要があり、更に Prioritized Memory が(実装が面倒だという理由で)失われた。一応こちらの論文を参考にして、完全にランダムにリプレイメモリから情報を取り出すのではなく、最後にやった試合を必ず一度は読み込むような形の実装にした。

裏でこっそり実験していた Space Invaders や Kangaroo などのゲームは元のRainbowと遜色ないペース(あるいはもっと早く)でクリアしてしまった。AIガオガエンで試してもその強さは健在で、1ストック制の試合だと1日も経たずにLv1やLv2をクリアしてしまう。

これはLSTMレイヤー2枚の結果である。まずはLv1から。

途中でメモリ構造を変えたのでLossとQの値がおかしくなっているが、1200エピソード程度でクリアしたことがわかる。次にLv2のデータである。
Qがおかしくなっていたので最初からやりなおしたものだが、ほぼ同じような振舞いで1600エピソードでクリアしている。ガオガエンの挙動自体も興味深く、ロープスイングから頻繁にラリアットを決めたり速い段階で復帰らしいこともするようになっている。
LSTM2枚のモデルの途中で1枚にする実験などを挟んだが、この記事では2枚の結果だけをまとめて載せる。Lv3の結果は以下の図である。
上の図のLv2からの継続で、2500エピソードほどでクリアラインの0.5に到達している。目覚ましい成果である。このあとLv4に行くのだが、そこで次のような結果を出す。
Lv3での成果はどこへやら、勝率を大幅に落としてしまい、更にQも上がっていかない。これはどうしたことかと思い、一度Lv3終了時に戻ってそこからLv3を継続してみることにする。(ここで自滅が気になったので3ストック制に戻す。)
2700エピソード目あたりからが新しいデータになるが、結局Lv3に戻ってもスコアが伸びることはなく、むしろ下降していく傾向が見られた。

もしかするとLv3に上がってしばらくすると戦術の再調整を迫られることになり、必然的にスコアが下がるのかもしれない。だとすると最適なポリシーを再評価するまで淡々とトレーニングを続けないといけないのかもしれない。もう少し早く学習ができるネットワークで長期間回す必要があるのかもしれない。

次回は1枚レイヤーのRNNについて書く。

0 件のコメント:

コメントを投稿