Main Content

深層 Q ネットワーク (DQN) エージェント

深層 Q ネットワーク (DQN) アルゴリズムは、モデルフリーのオンライン Off-Policy 強化学習手法です。DQN エージェントは、最適な方策に従った場合の割引累積長期報酬の期待値を推定するようにクリティックに学習させる価値ベースの強化学習エージェントです。DQN は、ターゲット クリティックと経験バッファーを特徴とする Q 学習のバリアントです。Q 学習の詳細については、Q 学習エージェントを参照してください。

さまざまな種類の強化学習エージェントの詳細については、強化学習エージェントを参照してください。

DQN エージェントは、次の観測空間と行動空間をもつ環境で学習させることができます。

観測空間行動空間
連続または離散離散

DQN エージェントは次のクリティックを使用します。

クリティックアクター

Q 値関数クリティック Q(S,A)。rlQValueFunction または rlVectorQValueFunction を使用して作成

DQN エージェントはアクターを使用しません。

学習が実行されている間、エージェントは次を行います。

  • 学習時に各タイム ステップでクリティックのプロパティを更新する。

  • ε-greedy 探索を使用して行動空間を探索する。各制御間隔中に、エージェントは確率 ϵ でランダムなアクションを選択するか、確率 1-ϵ で行動価値関数に関して貪欲にアクションを選択します。貪欲なアクションは、行動価値関数が最大となるアクションです。

  • リング経験バッファーを使用して過去の経験を保存する。エージェントは、バッファーからランダムにサンプリングされた経験のミニバッチに基づいてクリティックを更新します。

クリティック関数近似器

最適な方策の価値を推定するために、DQN エージェントは 2 つのパラメーター化された行動価値関数を使用します。各関数は、対応するクリティックによって維持されます。

  • クリティック Q(S,A;ϕ) — 観測値 S とアクション A が与えられた場合、このクリティックは、最適な方策に従った場合の割引累積長期報酬の期待値の対応する推定値を保存します (これは最適な方策の価値です)。

  • ターゲット クリティック Qt(S,A;ϕt) — 最適化の安定性を向上させるために、エージェントは最新のクリティック パラメーター値を使用してターゲット クリティック パラメーター ϕt を周期的に更新します。

Q(S,A;ϕ) と Qt(S,A;ϕt) は両方とも、同じ構造とパラメーター表現をもつ関数近似器オブジェクトによって実装されます。

価値関数近似のためのクリティック作成の詳細については、Create Policies and Value Functionsを参照してください。

学習が実行されている間、エージェントは ϕ のパラメーター値を調整します。学習後、パラメーターは調整された値のままになり、学習済みの価値関数近似器がクリティック Q(S,A) に保存されます。

エージェントの作成

DQN エージェントの作成および学習は、MATLAB® コマンド ラインまたは強化学習デザイナー アプリを使用して行うことができます。強化学習デザイナーを使用したエージェントの作成の詳細については、Create Agents Using Reinforcement Learning Designerを参照してください。

コマンド ラインで、環境からの観測仕様とアクション仕様に基づいて既定の DQN エージェントを作成できます。既定の DQN エージェントは、深層ニューラル ネットワーク モデルに依存する関数の既定の近似器を使用します。これを行うには、次の手順を実行します。

  1. 環境用の観測仕様を作成します。既に環境インターフェイス オブジェクトがある場合は、getObservationInfo を使用してこの仕様を取得できます。

  2. 環境用のアクション仕様を作成します。既に環境インターフェイス オブジェクトがある場合は、getActionInfo を使用してこの仕様を取得できます。

  3. 必要に応じて、それぞれの学習可能な層のニューロンの数 (既定は 256 ニューロン)、または LSTM 層を使用するかどうか (既定では LSTM 層は使用されない) を指定します。これを行うには、rlAgentInitializationOptions を使用してエージェント初期化オプション オブジェクトを作成します。

  4. 必要に応じて、rlDQNAgentOptions オブジェクトを使用してエージェント オプションを指定します。

  5. rlDQNAgent オブジェクトを使用してエージェントを作成します。

あるいは、クリティックを作成し、それを使用してエージェントを作成することもできます。この場合、クリティック内の観測層とアクション層の次元が、その環境の対応するアクション仕様および観測仕様と確実に一致するようにしてください。

  1. rlQValueFunction または rlVectorQValueFunction オブジェクトを使用してクリティックを作成します。

  2. rlDQNAgentOptions オブジェクトを使用してエージェント オプションを指定します。あるいは、最初にエージェントを作成してから (ステップ 3)、ドット表記を使用してそのオプション オブジェクトにアクセスし、オプションを変更することもできます。

  3. rlDQNAgent オブジェクトを使用してエージェントを作成します。

DQN エージェントは、再帰型深層ニューラル ネットワークを関数近似器として使用するクリティックをサポートします。

関数近似のためのアクターとクリティックの作成の詳細については、Create Policies and Value Functionsを参照してください。

学習アルゴリズム

DQN エージェントは以下の学習アルゴリズムを使用し、タイム ステップごとにクリティック モデルを更新します。学習アルゴリズムを構成するには、rlDQNAgentOptions オブジェクトを使用してオプションを指定します。

  • クリティック Q(s,a;ϕ) をランダムなパラメーター値 ϕ で初期化し、同じ値でターゲット クリティック パラメーター ϕt を初期化する (ϕt=ϕ)。

  • 各学習タイム ステップについて、次のようにする。

    1. 現在の観測値 S に対して、確率 ϵ でのランダム アクション A を選択します。それ以外の場合は、クリティック価値関数が最大となるアクションを選択します。

      A=argmaxAQ(S,A;ϕ)

      ϵ とその減衰率を指定するには、EpsilonGreedyExploration オプションを使用します。

    2. アクション A を実行します。報酬 R と次の観測値 S' を観測します。

    3. 経験 (S,A,R,S') を経験バッファーに保存します。経験バッファーのサイズを指定するには、ExperienceBufferLength オプションを使用します。

    4. 経験バッファーから M 個の経験 (Si,Ai,Ri,S'i) のランダムなミニバッチをサンプリングします。M を指定するには、MiniBatchSize オプションを使用します。

    5. ミニバッチ内のすべての経験について、S'i が終了状態の場合に価値関数のターゲット yi を Ri に設定します。それ以外の場合、次のように設定します。

      Amax=argmaxA'Q(Si',A';ϕ)yi=Ri+γQt(Si',Amax;ϕt)(doubleDQN)yi=Ri+γmaxA'Qt(Si',A';ϕt)(DQN)

      ここで、通常の DQN アルゴリズムはターゲット クリティックによって維持される行動価値関数を最大化するアクションを選択しますが、double DQN アルゴリズムはベース クリティックによって維持されるアクション価値関数を最大化するアクションを選択します。

      割引係数 γ を設定するには、DiscountFactor オプションを使用します。double DQN を使用するには、UseDoubleDQN オプションを true に設定します。

      NumStepsToLookAhead の値を N に等しいと指定した場合、N ステップの収益 (次の N ステップの報酬と、N 番目の報酬を発生させた状態の割引推定値を加算したもの) がターゲット yi の計算に使用されます。

    6. すべてのサンプリングされた経験にわたる損失 L の 1 ステップ最小化により、クリティック パラメーターを更新します。

      L=12Mi=1M(yiQ(Si,Ai;ϕ))2

    7. ターゲットの更新方法に応じて、ターゲットとなるクリティックのパラメーターを更新します。詳細については、ターゲットの更新方法を参照してください。

    8. EpsilonGreedyExploration オプションで指定した減衰率に基づいて、ランダム アクションを選択するための確率しきい値 ϵ を更新します。

ターゲットの更新方法

DQN エージェントは、以下のターゲット更新方法のいずれかを使用して、ターゲットとなるクリティックのパラメーターを更新します。

  • 平滑化 — 平滑化係数 τ を使用して、タイム ステップごとにターゲット パラメーターを更新します。平滑化係数を指定するには、TargetSmoothFactor オプションを使用します。

    ϕt=τϕ+(1τ)ϕt

  • 周期的 — 平滑化なしでターゲット パラメーターを周期的に更新します (TargetSmoothFactor = 1)。更新期間を指定するには、TargetUpdateFrequency パラメーターを使用します。

  • 周期的平滑化 — 平滑化を使用してターゲット パラメーターを周期的に更新します。

ターゲット更新方法を構成するには、rlDQNAgentOptions オブジェクトを作成し、次の表に示すように TargetUpdateFrequency パラメーターと TargetSmoothFactor パラメーターを設定します。

更新方法TargetUpdateFrequencyTargetSmoothFactor
平滑化 (既定)11 未満
周期的1 より大きい1
周期的平滑化1 より大きい1 未満

参照

[1] Mnih, Volodymyr, Koray Kavukcuoglu, David Silver, Alex Graves, Ioannis Antonoglou, Daan Wierstra, and Martin Riedmiller. “Playing Atari with Deep Reinforcement Learning.” ArXiv:1312.5602 [Cs], December 19, 2013. https://arxiv.org/abs/1312.5602.

参考

オブジェクト

関連する例

詳細