http://gcaaa31928.github.io/FlappyBirdLearning/#
#
#
フラッピーバードの学習#
これは機械学習を利用してフラッピーバードを自動的に学習するプロジェクトであり、学習方法は Q 学習を使用しています。
一部はこちらを参考にしました http://sarvagyavaish.github.io/FlappyBirdRL
ゲームフレームワーク#
Phaser.js を使用してフラッピーバードのゲームを作成しました。以下の図を参照してください。
(参考: http://www.lessmilk.com/tutorial/flappy-bird-phaser-1)
Q 学習#
重要なのはこの式です。
しかし、この式を使用してトレーニングを開始すると、いくつかの困難に直面します。
これら 2 つの状態空間のみを使用すると、つまり QState が 2 次元空間である場合、地面や空との距離がわからないため、低い障害物が頻繁に境界外になります。
そのため、天空までの距離を表す状態空間を追加しました。
しかし、これにより別の問題が発生しました。通常の速度でブロックを通過する場合、理論的にはこのように行動するはずです!
赤い点の位置は、押さない場合に比べて Q 値が高くなるように徐々にトレーニングされるはずです。
しかし、この状況では
下降速度が速すぎるため、Q 値がブロックに衝突しないために押す必要があるとトレーニングされてしまいます。
また、これら 2 つの状態は正しい位置に収束することができず、他の位置に収束してしまいます。
そのため、速度を表す状態空間を追加する必要があります。
基本的には、これで練習を完了することができます。