トップサービス導入事例強み開発ブログよくある質問会社案内 お問い合わせ
Dev Blog

DQN(Deep Q-Network)を復習する

DQN(Deep Q-Network)は2017年くらいに大きく注目された。 最近「Jetson Nano」を使ったAIロボットカー「JetBot」のハンズオンセミナーの記事をよく目にする。 またAWS Summit 2019にてAWSのブースでも「Jetson Nano」を使った展示があった。DQNを復習する。

ゲームでの事例が多いが、車の自動運転とか、ロボットの自動化などに利用できる。 DQNのサンプルでよくあるものをkerasで実装してみた。

障害物のY座標が最下段の場合、エージェント(操作対象)と衝突判定をする。 ・当たっていなければ報酬「+1」 ・当たっていたら報酬「-1」

という条件で学習させる。 学習時間は1,000エポックで15分程度。

■状態を表す行列の例(8 * 8) 「1.0」がエージェント、「0.5」が障害物を表す。

DQNの状態を表す8×8行列の例

■学習結果をmatplotlibで描画。きちんと避け続けている。

matplotlibで描画した学習結果、障害物を避け続ける様子

■pygameで描画

pygameで描画したDQNの実行結果

画像認識、回帰予測などAIと呼ばれる分野ではあるが、こういったDQNをつかった強化学習が一番AIっぽい感じがするし、わかりやすい。 なにより楽しい。