DQN : Deep Q Networkで障害物を超えたパスを描けるかの実験です。RL系の経験はないので、まずはDQNをスクラッチ実装せず、Keras-RL2でDQNを呼んで使用させて頂きました。OpenAI Gymのデモシーンは確かに面白そうなのですが、チャンピオンシーンのような気もしないでもなく、自分が使いたいようなシーンで果たしてどこまでエージェントが上手くいくのか試してみました。以下のようなタスク設定し実験してみました。
左図のような画像左上をスタートとして、右下をゴールとします。図中の黒いエリアは障害として、エリアの中は通過できないとします。赤い点をゴールまで移動出来たら成功とします。
CNNでQ値に相当する推定器を作成。プレイ中の画像を入力とする。
範囲外、黒いエリアにぶつかると大きな負の報酬(とともにそこでステップもterminate)
右端で大きな成功報酬、収束のため画面下に行くほどボーナス報酬
ポリシーはεグリーディアルゴ(0.1)
# エージェントをどう動かすか、ポリシーをどうするか、報酬のパラメータ設定も何気にムズイですね。以前、自動運転界隈では強化学習手法はほとんどデプロイされてないと聞いたことがありますが、動的な系の難しさは説明可能性も含めて中々難しそうなことを少し感じました。
以下に学習させたwalkerの結果を示します。初期状態ではランダムウォークのように徘徊しているだけですが、ステップを回すにつれ、画像左端を目指すようになり、800ステップで右図のようなパスを描くようになりました。
さらに学習を進めると別のルートでも行けるようになりました。以下は何ステップか回した結果です。