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