Q-学習入門 第1部への紹介
Introduction to Q-Learning Part 1
ハギングフェイスと一緒に行うディープ強化学習クラスのユニット2、パート1 🤗
⚠️ この記事の新しいバージョンがこちらで利用可能です 👉 https://huggingface.co/deep-rl-course/unit1/introduction
この記事はディープ強化学習クラスの一部です。初心者からエキスパートまでの無料コースです。シラバスはこちらをご覧ください。
⚠️ この記事の新しいバージョンがこちらで利用可能です 👉 https://huggingface.co/deep-rl-course/unit1/introduction
この記事はディープ強化学習クラスの一部です。初心者からエキスパートまでの無料コースです。シラバスはこちらをご覧ください。
このクラスの第1章では、強化学習(RL)、RLプロセス、およびRL問題を解決するための異なる手法について学びました。また、最初のランダーエージェントをトレーニングして、月面に正しく着陸させ、Hugging Face Hubにアップロードしました。
今日は、強化学習のメソッドの一つである価値ベースの手法について詳しく掘り下げて、最初のRLアルゴリズムであるQ-Learningを学びます。
また、スクラッチから最初のRLエージェントを実装し、2つの環境でトレーニングします:
- Frozen-Lake-v1(滑りにくいバージョン):エージェントは凍ったタイル(F)の上を歩き、穴(H)を避けて、開始状態(S)からゴール状態(G)へ移動する必要があります。
- 自動タクシーは、都市をナビゲートすることを学び、乗客をポイントAからポイントBまで輸送する必要があります。
このユニットは2つのパートに分かれています:
第1部では、価値ベースの手法とモンテカルロ法と時間差学習の違いについて学びます。
そして、第2部では、最初のRLアルゴリズムであるQ-Learningを学び、最初のRLエージェントを実装します。
このユニットは、Deep Q-Learning(ユニット3)で作業できるようになるためには基礎となるものです。これは最初のDeep RLアルゴリズムであり、Atariゲームをプレイし、いくつかのゲームで人間のレベルを超えることができました(breakout、space invadersなど)。
では、始めましょう!
- RLとは? 簡単な復習
- 2つの価値ベースの手法
- 状態価値関数
- 行動価値関数
- ベルマン方程式:値の推定を簡略化する
- モンテカルロ法と時間差学習
- モンテカルロ法:エピソードの終わりで学習
- 時間差学習:各ステップで学習
RLとは? 簡単な復習
RLでは、賢い判断を下すエージェントを作成します。たとえば、ビデオゲームをプレイすることを学ぶエージェント、またはどの株式を買い、いつ売るかという賢い判断を下すトレーディングエージェントなどです。
しかし、賢い判断をするためには、エージェントは環境と試行錯誤を通じて対話し、報酬(正または負)を受け取ることで学習する必要があります。
その目標は、期待される累積報酬を最大化することです(報酬の仮説のため)。
エージェントの意思決定プロセスはポリシーπと呼ばれます:状態が与えられた場合、ポリシーはアクションまたはアクションの確率分布を出力します。つまり、環境の観測値が与えられた場合、ポリシーはエージェントが取るべきアクション(または各アクションに対する複数の確率)を提供します。
私たちの目標は、最適な方策π *、つまり、最も良い期待累積報酬につながる方策を見つけることです。
そして、この最適な方策を見つけるために(したがってRL問題を解決するために)、主に2つのタイプのRL手法があります:
- 方策ベースの手法:状態が与えられた場合にどのアクションを選択するかを学習するために、方策を直接トレーニングします。
- 価値ベースの手法:より価値の高い状態を学習するために、価値関数をトレーニングし、この価値関数に基づいてアクションを選択します。
そして、この章では、価値ベースの手法により詳しく掘り下げます。
価値ベースの手法の2つのタイプ
価値ベースの手法では、状態をその状態での期待値にマッピングする価値関数を学習します。
状態の価値とは、エージェントがその状態で開始し、方策に従って行動した場合に得られる期待割引報酬です。
割引率について忘れてしまった場合は、このセクションを読んでください。
しかし、方策に従って行動するとはどういう意味ですか?結局のところ、価値ベースの手法では方策を持っていないため、方策関数ではなく価値関数をトレーニングしているからです。
強化学習エージェントの目標は、最適な方策πを持つことです。
それを見つけるために、2つの異なる方法があることを学びました:
- 方策ベースの手法:状態が与えられた場合にどのアクションを選択するか(またはその状態でのアクションの確率分布)を直接トレーニングします。この場合、価値関数はありません。
方策は、状態を入力として受け取り、その状態で取るべきアクションを出力します(確定的な方策)。
したがって、方策の動作を手動で定義しないでしょう。トレーニングがそれを定義します。
- 価値ベースの手法:状態または状態-アクションペアの値を出力する価値関数をトレーニングすることによって、間接的に方策を見つけます。この価値関数に基づいて、方策はアクションを選択します。
しかし、方策をトレーニングしなかったため、方策の動作を指定する必要があります。たとえば、価値関数に基づいて常に最大の報酬につながるアクションを実行する方策(グリーディ方策)を作成します。
したがって、問題を解決するために使用する方法に関係なく、方策は存在しますが、価値ベースの手法ではトレーニングしないため、方策は単純な関数です(たとえば、グリーディ方策)そして、この方策は価値関数から得られた値を使用してアクションを選択します。
したがって、違いは次のとおりです:
- 方策ベースでは、最適な方策は方策を直接トレーニングすることで見つかります。
- 価値ベースでは、最適な価値関数を見つけることで最適な方策を持つことになります。
実際、価値ベースの手法では、ほとんどの場合、探索/利用のトレードオフを処理するイプシロン-グリーディ方策を使用します。このユニットの後半でQ学習について話します。
ですので、2つの種類の価値関数があります:
状態価値関数
状態価値関数は、次のようにポリシーπに基づいて表されます:
各状態に対して、状態価値関数は、エージェントがその状態から開始し、その後永遠にポリシーに従った場合(時間ステップがすべての未来の場合)、予測されるリターンを出力します。
行動価値関数
行動価値関数では、各状態と行動の組み合わせに対して、行動価値関数はエージェントがその状態で始めて行動を取り、その後永遠にポリシーに従った場合の予測されるリターンを出力します。
ポリシーπの下で、状態sで行動aを取ることの価値は次のようになります:
差は次のとおりです:
- 状態価値関数では、状態S t S_t S t の価値を計算します
- 行動価値関数では、その状態でその行動を取ることの価値( S t , A t S_t, A_t S t , A t の状態-行動の組み合わせの価値)を計算します
どちらの場合でも、選択する価値関数(状態価値関数または行動価値関数)の価値は予測されるリターンです。
ただし、問題は、各状態または状態-行動のペアの価値を計算するために、エージェントがその状態で得ることができるすべての報酬を合計する必要があるということです。
これは手間のかかるプロセスであり、それを支援するベルマン方程式が役立ちます。
ベルマン方程式:価値の推定を簡略化する
ベルマン方程式は、状態価値または状態-行動価値の計算を簡略化します。
今まで学んだことから、V ( S t ) V(S_t) V ( S t )(状態の価値)を計算する場合、その状態から開始し、その後永遠にポリシーに従ってリターンを計算する必要があることを知っています。(以下の例で定義したポリシーは貪欲ポリシーであり、報酬を割引しないため、簡略化のために)
したがって、V ( S t ) V(S_t) V ( S t ) を計算するためには、予測される報酬の合計を行う必要があります。したがって:
次に、V ( S t + 1 ) V(S_{t+1}) V ( S t + 1 ) を計算するために、状態 S t + 1 S_{t+1} S t + 1 から開始してリターンを計算する必要があります。
ですので、各状態値または状態行動値ごとにこれを行う必要がある場合、それはかなり手間のかかるプロセスです。
各状態または各状態行動ペアの期待リターンを計算する代わりに、ベルマン方程式を使用できます。
ベルマン方程式は再帰的な方程式で、次のように機能します。状態ごとに最初からリターンを計算する代わりに、任意の状態の値を以下のように考えることができます:
即時報酬 R t + 1 R_{t+1} R t + 1 + 次の状態の割引価値 ( g a m m a ∗ V ( S t + 1 ) gamma * V(S_{t+1}) g a m m a ∗ V ( S t + 1 ) ) 。
私たちの例に戻ると、State 1の価値は、その状態で開始した場合の期待累積リターンです。
State 1の価値を計算するためには、その状態でエージェントが開始し、その後すべての時間ステップで方針に従った場合の報酬の合計です。
これは、V ( S t ) V(S_{t}) V ( S t ) = 即時報酬 R t + 1 R_{t+1} R t + 1 + 次の状態の割引価値 g a m m a ∗ V ( S t + 1 ) gamma * V(S_{t+1}) g a m m a ∗ V ( S t + 1 ) と同等です。
ここでは割引を行わないため、gamma = 1としています。
- V ( S t + 1 ) V(S_{t+1}) V ( S t + 1 ) の値は、即時報酬 R t + 2 R_{t+2} R t + 2 + 次の状態の割引価値 ( g a m m a ∗ V ( S t + 2 ) gamma * V(S_{t+2}) g a m m a ∗ V ( S t + 2 ) ) です。
- これを繰り返します。
まとめると、ベルマン方程式のアイデアは、期待リターンの合計を計算する代わりに、長いプロセスである。これは、即時報酬の合計+次の状態の割引価値と同等です。
モンテカルロ法と時間差分学習
Q学習に入る前に話すべき最後のことは、2つの学習方法です。
RLエージェントは環境との相互作用によって学習します。アイデアは、取得した経験を使用して、報酬を得ることによって、値または方針を更新することです。
モンテカルロ法と時間差分学習は、値関数または方策関数をトレーニングするための2つの異なる戦略です。どちらも経験を使用してRL問題を解決します。
一方、モンテカルロ法は学習の前にエピソード全体の経験を使用します。一方、時間差分学習は1ステップ(S t , A t , R t + 1 , S t + 1 S_t, A_t, R_{t+1}, S_{t+1} S t , A t , R t + 1 , S t + 1 )のみを使用して学習します。
両方の方法を値ベースの手法の例を使って説明します。
モンテカルロ:エピソードの終わりでの学習
モンテカルロはエピソードの終わりまで待ち、G t G_t G t (リターン)を計算し、それをV ( S t ) V(S_t) V ( S t ) の更新のターゲットとして使用します。
そのため、値関数の更新前に完全なエピソードの相互作用が必要です。
例を挙げると:
-
エピソードは常に同じ開始点で始まります。
-
エージェントはポリシーを使用して行動を取ります。例えば、探索(ランダムなアクション)と利用の間を交互に行うEpsilon Greedy戦略を使用します。
-
報酬と次の状態を取得します。
-
ネコがネズミを食べた場合、またはネズミが10ステップ以上移動した場合、エピソードを終了します。
-
エピソードの終わりには、状態、アクション、報酬、および次の状態のリストがあります
-
エージェントは合計報酬 G t G_t G t を合計します(どれだけうまくやったかを確認するため)。
-
その後、以下の式に基づいてV ( s t ) V(s_t) V ( s t ) を更新します
- その後、この新しい知識で新しいゲームを開始します
さらにエピソードを実行することで、エージェントはますます上手にプレイするように学習します。
たとえば、モンテカルロを使用して状態価値関数をトレーニングする場合:
- まだ値関数のトレーニングを開始したばかりなので、各状態に対して0の値を返します
- 学習率(lr)は0.1で割引率は1です(割引しない)
- ネズミは環境を探索し、ランダムなアクションを取ります
- ネズミは10ステップ以上進んだので、エピソードが終了します。
- 状態、アクション、報酬、次の状態のリストがありますが、リターン G t G{t} G t を計算する必要があります
- G t = R t + 1 + R t + 2 + R t + 3 . . . G_t = R_{t+1} + R_{t+2} + R_{t+3} … G t = R t + 1 + R t + 2 + R t + 3 . . .
- G t = 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + 0 G_t = 1 + 0 + 0 + 0+ 0 + 0 + 1 + 1 + 0 + 0 G t = 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + 0
- G t = 3 G_t= 3 G t = 3
- 今、V ( S 0 ) V(S_0) V ( S 0 ) を更新できます:
- 新しい V ( S 0 ) = V ( S 0 ) + l r ∗ [ G t — V ( S 0 ) ]
- 新しい V ( S 0 ) = 0 + 0.1 ∗ [ 3 – 0 ]
- 新しい V ( S 0 ) = 0.3
一時差分学習:各ステップでの学習
- 一方、一時差分は、1つの相互作用(1つのステップ) S t + 1 S_{t+1} S t + 1 だけを待つ
- TD ターゲットを形成し、R t + 1 R_{t+1} R t + 1 と g a m m a ∗ V ( S t + 1 ) gamma * V(S_{t+1}) g a m m a ∗ V ( S t + 1 ) を使用して V ( S t ) V(S_t) V ( S t ) を更新します。
TD のアイデアは、各ステップで V ( S t ) V(S_t) V ( S t ) を更新することです。
ただし、エピソード全体をプレイしなかったため、G t G_t G t (予測リターン)は利用できません。その代わりに、R t + 1 R_{t+1} R t + 1 と次の状態の割引価値を追加して G t G_t G t を推定します。
これはブートストラッピングと呼ばれます。TD は、更新パートを完全なサンプル G t G_t G t ではなく既存の推定値 V ( S t + 1 ) V(S_{t+1}) V ( S t + 1 ) に基づいて行います。
この方法は TD(0) または1ステップ TD(各個別ステップ後に値関数を更新)と呼ばれます。
同じ例を取ると、
- 私たちはまだ価値関数のトレーニングを始めたばかりなので、各状態に対して0の値を返します。
- 学習率(lr)は0.1であり、割引率は1(割引なし)です。
- マウスは環境を探索し、ランダムなアクションを取ります:左に進む
- 報酬 R t + 1 = 1 です。チーズを食べたため
これにより、V ( S 0 ) V(S_0) V ( S 0 ) を更新できます:
新しい V ( S 0 ) = V ( S 0 ) + l r ∗ [ R 1 + g a m m a ∗ V ( S 1 ) − V ( S 0 ) ]
新しいV(S0)= 0 + 0.1 * [1 + 1 * 0–0]
V(S0)= 0.1
したがって、状態0の値関数を更新しました。
今、更新された値関数を使用してこの環境と対話し続けます。
まとめると:
- モンテカルロ法では、完全なエピソードから値関数を更新し、したがって、このエピソードの実際の正確な割引適用後のリターンを使用します。
- TD学習では、ステップから値関数を更新し、Gtを持っていないため、推定されたリターンであるTDターゲットでそれを置き換えます。
では、Q学習に移る前に、学んだことをまとめましょう:
2つのタイプの価値ベースの関数があります:
- 状態価値関数:エージェントが特定の状態で始まり、その後永遠にポリシーに従って行動した場合の予想リターンを出力します。
- 行動価値関数:エージェントが特定の状態で始まり、その状態で特定のアクションを取り、その後永遠にポリシーに従って行動する場合の予想リターンを出力します。
- 価値ベースの手法では、ポリシーはトレーニングせずに手動で定義します。最適な値関数があれば、最適なポリシーが得られるという考えです。
価値関数のポリシーを学習するための2つの方法があります:
- モンテカルロ法では、完全なエピソードから値関数を更新し、したがって、このエピソードの実際の正確な割引適用後のリターンを使用します。
- TD学習では、ステップから値関数を更新し、Gtを持っていないため、推定されたリターンであるTDターゲットでそれを置き換えます。
今日は以上です。この章の第1部を完了しました!情報がたくさんありましたので、おめでとうございます。
これらの要素についてまだ混乱している場合は、それは正常です。私やRLを学んだすべての人にとっても同じでした。
続ける前に、素材を本当に理解するために時間をかけてください。
そして、学習し、能力の錯覚を避ける最良の方法は、自分自身をテストすることです。学習を補強する必要がある場所を見つけるために、クイズを作成しました。知識を確認してください👉 https://github.com/huggingface/deep-rl-class/blob/main/unit2/quiz1.md
第2部では、最初のRLアルゴリズムであるQ学習を学び、2つの環境で最初のRLエージェントを実装します:
- Frozen-Lake-v1(非滑りバージョン):エージェントは凍ったタイル(F)の上を歩き、穴(H)を避けて、出発地(S)から目的地(G)まで移動する必要があります。
- 自律タクシーは都市をナビゲートする必要があり、乗客をポイントAからポイントBまで輸送する必要があります。
学びたい友達と共有するのを忘れないでください!
最後に、フィードバックを受けてコースを改善し、更新し続けたいと思っています。ご意見があれば、このフォームに記入してください👉 https://forms.gle/3HgA7bEHwAmmLfwh9
学び続けて、素晴らしい人生を送りましょう、
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles