- 超シンプルにTensorFlowでDQN (Deep Q Network) を実装してみる 〜解説編② 学習の流れを理解する〜
- 超シンプルにTensorFlowでDQN (Deep Q Network) を実装してみる 〜解説編① ゲーム (環境) の実装を理解する〜
- 超シンプルにTensorFlowでDQN (Deep Q Network) を実装してみる 〜導入編〜
今回は、学習の流れについて解説します。
対象とするソースコードは下記となります。
https://github.com/algolab-inc/tf-dqn-simple/blob/master/train.py
学習の流れ
学習の肝となるのは、上記のコードとなります。
フロー図で示したものが下記となります。
登場人物として、プレイヤーを操作するエージェント と、ゲーム (環境) があります。

それでは、順を追って見ていきましょう。
① アクションを選択
エージェントは、時刻tにおけるゲームの状態 (state_t
) を受け取って、アクションを選択します。詳細は後述しますが、一定割合 (self.exploration
) ではランダム選択、残りの割合では学習結果から最適なものを選択、という処理をしています。
② アクションを実行
選択されたアクションを、ゲームで実行します。
③ 観察
アクションが実行された結果を観察します。具体的には、次 (時刻t1) の状態 (state_t_1
)、報酬 (reward_t
)、終了フラグ (terminal
) を受け取ります。
④ 経験を蓄積
エージェントは、学習を行うための経験を蓄積します。具体的には、ある状態 (state_t
) に対して、あるアクション (action_t
) を行なった結果、どのような状態になったか(state_t_1
)、報酬はいくらか (reward_t
)、ゲームの終了フラグ(terminal
) を保持して、学習に活かします。
⑤ 経験再生
これまで蓄積した経験をもとに学習を行います。こちらについても詳細は後述します。
まとめ
今回は学習の流れについて解説しました。
次回はエージェントの中身について見ていきます。(最終回となる予定です)
- 超シンプルにTensorFlowでDQN (Deep Q Network) を実装してみる 〜解説編② 学習の流れを理解する〜
- 超シンプルにTensorFlowでDQN (Deep Q Network) を実装してみる 〜解説編① ゲーム (環境) の実装を理解する〜
- 超シンプルにTensorFlowでDQN (Deep Q Network) を実装してみる 〜導入編〜