Q-Learningの紹介 パート2/2
'Q-Learningの紹介 パート2/2'
ディープ強化学習クラスのユニット2、パート2(Hugging Faceと共に)
⚠️ この記事の新しい更新版はこちらで入手できます 👉 https://huggingface.co/deep-rl-course/unit1/introduction
この記事はディープ強化学習クラスの一部です。初心者からエキスパートまでの無料コースです。シラバスはこちらをご確認ください。
⚠️ この記事の新しい更新版はこちらで入手できます 👉 https://huggingface.co/deep-rl-course/unit1/introduction
- スペースインベーダーとの深層Q学習
- 機械学習インサイトディレクター【パート3:ファイナンスエディション】
- IntelとHugging Faceがパートナーシップを結び、機械学習ハードウェアアクセラレーションを民主化する
この記事はディープ強化学習クラスの一部です。初心者からエキスパートまでの無料コースです。シラバスはこちらをご確認ください。
このユニットの第1部では、価値ベースの手法とモンテカルロ法と時差学習の違いについて学びました。
したがって、第2部では、Q-Learningを学び、スクラッチから最初のRLエージェントであるQ-Learningエージェントを実装し、2つの環境でトレーニングします:
- 凍った湖 v1 ❄️:エージェントは凍ったタイル(F)の上を歩き、穴(H)を避けて、開始状態(S)からゴール状態(G)に移動する必要があります。
- 自律運転タクシー 🚕:エージェントは都市をナビゲートし、乗客を地点Aから地点Bに輸送する必要があります。
このユニットは、ディープQ-Learning(ユニット3)で作業を行うためには基礎となるものです。
では、始めましょう! 🚀
- Q-Learningの紹介
- Q-Learningとは?
- Q-Learningアルゴリズム
- オフポリシーとオンポリシー
- Q-Learningの例
Q-Learningの紹介
Q-Learningとは?
Q-Learningは、オフポリシーの価値ベースの手法であり、TDアプローチを使用して行動価値関数をトレーニングする方法です:
- オフポリシー:この章の最後で説明します。
- 価値ベースの手法:最適ポリシーを間接的に見つけるために、各状態または各状態行動ペアの価値または行動価値関数をトレーニングします。
- TDアプローチを使用:エピソードの最後ではなく、各ステップで行動価値関数を更新します。
Q-Learningは私たちがQ関数をトレーニングするために使用するアルゴリズムです。Q関数は、特定の状態における特定の行動を取ることの価値を決定する行動価値関数です。
Qは、「その状態でのその行動の品質」を意味します。
内部的に、私たちのQ関数にはQテーブルがあり、各セルが状態-行動価値ペアの値に対応しているテーブルがあります。このQテーブルは、Q関数のメモリまたはチートシートと考えることができます。
この迷路の例を考えてみましょう:
Qテーブルが初期化されます。そのため、すべての値が = 0 です。このテーブルには、各状態に対して4つの状態-行動価値が含まれています。
ここで、初期状態から上に移動するときの状態-行動価値は0であることがわかります。
したがって、Q関数には各状態アクションペアの値を持つQテーブルが含まれています。そして、状態とアクションが与えられた場合、Q関数はそのQテーブル内を検索して値を出力します。
まとめると、Q学習は以下のRLアルゴリズムです:
- すべての状態アクションペアの値を含む行動価値関数であるQ関数を訓練します。
- 状態とアクションが与えられた場合、私たちのQ関数はそのQテーブル内を検索して対応する値を見つけます。
- 訓練が完了すると、最適なQ関数、つまり最適なQテーブルが得られます。
- そして、最適なQ関数があれば、最適な方策も得られます。なぜなら、それぞれの状態に対して最適なアクションがわかるからです。
しかし、最初はQテーブルは無意味です。各状態アクションペアに対して任意の値を与えます(ほとんどの場合、Qテーブルは0で初期化されます)。しかし、環境を探索し、Qテーブルを更新することで、近似値がどんどん向上していきます。
したがって、Q学習、Q関数、およびQテーブルが理解できたので、Q学習アルゴリズムの詳細を掘り下げましょう。
Q学習アルゴリズム
これはQ学習の疑似コードです。各部分を学習し、実装する前に簡単な例でどのように動作するかを見てみましょう。見た目よりも簡単ですので、一つずつ進めましょう。
ステップ1: Qテーブルを初期化する
各状態アクションペアのためにQテーブルを初期化する必要があります。ほとんどの場合、値を0で初期化します。
ステップ2: イプシロングリーディー戦略を使用してアクションを選択する
イプシロングリーディー戦略は、探索と利用のトレードオフを扱う方策です。
アイデアは、イプシロンɛ = 1.0を定義することです:
- 確率1 – ɛで利用を行います(つまり、エージェントは最も高い状態アクションペアの値を持つアクションを選択します)。
- 確率ɛで探索を行います(ランダムなアクションを試します)。
トレーニングの初めでは、探索を行う確率が非常に高いため、ほとんどの場合は探索を行います。しかし、トレーニングが進むにつれて、そして結果として私たちのQテーブルが推定値でより良くなるにつれて、徐々にイプシロンの値を減らしていきます。つまり、探索が少なくなり、利用が増えるようにします。
ステップ3:アクションAtを実行し、報酬Rt+1と次の状態St+1を取得する
ステップ4:Q(St, At)を更新する
TD学習では、1ステップの相互作用の後に方策または価値関数(選択した強化学習の方法に応じて)を更新します。
TDターゲットを生成するために、即時報酬Rt+1に次の状態の最適な状態-アクションペアの割引価値(ブートストラップと呼ぶ)を加えます。
したがって、Q(St, At)の更新式は次のようになります:
Q(St, At)を更新するには:
- S t, A t, R t+1, S t+1が必要です。
- 特定の状態-アクションペアのQ値を更新するために、TDターゲットを使用します。
TDターゲットはどのように形成されますか?
- アクションを実行した後の報酬Rt+1を取得します。
- 次の最適な状態-アクションペアの値を取得するために、貪欲方策を使用します。これはε-greedy方策ではなく、常に状態-アクションの値が最も高いアクションを選択します。
このQ値の更新が完了したら、新しい状態で始めてε-greedy方策を使用してアクションを選択します。
これがオフポリシーアルゴリズムである理由です。
オフポリシー vs オンポリシー
違いは微妙です:
- オフポリシー:行動と更新に異なるポリシーを使用する。
たとえば、Q学習では、エプシロングリーディポリシー(行動するポリシー)は、Q値(更新するポリシー)を更新するために最適な次の状態-アクション値を選択するために使用される貪欲ポリシーとは異なります。
これはトレーニングの間に使用するポリシーとは異なります:
- オンポリシー:行動と更新に同じポリシーを使用する。
たとえば、別の価値ベースのアルゴリズムであるSarsaでは、エプシロングリーディポリシーは次の状態-アクションペアを選択するために使用されます。
Q学習の例
Q学習をより理解するために、簡単な例を見てみましょう:
- この小さな迷路であなたはネズミです。常に同じ出発点からスタートします。
- 目標は、右下の大きなチーズを食べ、毒を避けることです。だって、誰だってチーズが好きでしょう?
- エピソードは、毒を食べた場合、大量のチーズを食べた場合、または5ステップ以上経過した場合に終了します。
- 学習率は0.1です。
- ガンマ(割引率)は0.99です。
報酬関数は以下のようになります:
- +0: チーズのない状態に移動する。
- +1: 少量のチーズのある状態に移動する。
- +10: 大量のチーズのある状態に移動する。
- -10: 毒のある状態に移動して死ぬ。
- +0: 5ステップ以上費やす場合。
最適な方策(右、右、下に進む方策)をエージェントに訓練するために、Q-Learningアルゴリズムを使用します。
ステップ1: Qテーブルを初期化する
現時点では、Qテーブルは役に立たない。Q関数を訓練するために、Q-Learningアルゴリズムを使用する必要があります。
2つの訓練時間ステップで行いましょう:
訓練時間ステップ1:
ステップ2: ε-Greedy戦略を使用して行動を選択する
εが大きい(1.0)ので、ランダムな行動を選択します。この場合、右に進みます。
ステップ3: 行動Atを実行し、Rt+1とSt+1を取得する
右に進むことで、小さなチーズを手に入れました。したがって、R t + 1 = 1 となり、新しい状態にいます。
ステップ4: Q(S t , A t )を更新する
この時点で、Q ( S t , A t )を以下の数式を使用して更新できます。
訓練時間ステップ2:
ステップ2: ε-Greedy戦略を使用して行動を選択する
εが大きい(0.99)ため、再びランダムな行動を選択します(訓練が進むにつれて、探索を少なくしたいので、少し減衰させます)。
下に移動しましたが、毒に至るので良い行動ではありません。
ステップ3: 行動Atを実行し、Rt+1とSt+1を取得する
毒の状態に移動したため、R t + 1 = -10となり、死にます。
ステップ4: Q(S t , A t )を更新する
死んだので、新しいエピソードを開始します。ただし、ここでわかるのは、2つの探索ステップでエージェントがより賢くなったことです。
環境を探索し、利用し、TDターゲットを使用してQ値を更新することで、Qテーブルはより良い近似値を提供します。そして、訓練の終わりには、最適なQ関数の推定値を得ることができます。
ここまでQ-Learningの理論を学びましたので、ゼロから実装してみましょう。2つの環境で訓練するQ-Learningエージェントです:
- Frozen-Lake-v1 ❄️(滑りにくいバージョン):エージェントは、凍ったタイル(F)上を歩き、穴(H)を避けながら、開始状態(S)からゴール状態(G)まで進む必要があります。
- 自律タクシー🚕は、都市をナビゲートすることを学び、乗客を地点Aから地点Bまで輸送する必要があります。
チュートリアルはこちらから始める 👉 https://colab.research.google.com/github/huggingface/deep-rl-class/blob/main/unit2/unit2.ipynb
リーダーボードはこちら 👉 https://huggingface.co/spaces/chrisjay/Deep-Reinforcement-Learning-Leaderboard
この章を終えたこと、おめでとうございます!たくさんの情報がありました。そして、チュートリアルも終了しました。これで、スクラッチから最初の強化学習エージェントを実装し、Hubで共有しました🥳。
新しいアーキテクチャを学ぶ際には、スクラッチから実装することが重要です。それによって、その仕組みを理解することができます。
これらの要素に関してまだ混乱していると感じるのは普通です。私や強化学習を学んだ他の人々にとっても同じでした。
次に進む前に、材料をしっかりと理解するために時間をかけてください。
そして、学習し、自信を持つための最良の方法は自分自身を試すことです。私たちはあなたが学習を強化する必要がある箇所を見つけるのに役立つクイズを用意しました。あなたの知識をチェックしてください 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit2/quiz2.md
これらの要素をマスターし、堅固な基礎を築くことは重要です。そして、楽しい部分に入る前に、実装を変更したり、改善方法を試したり、環境を変更したりすることを躊躇しないでください。学ぶ最良の方法は、自分自身で試してみることです!
シラバスには、より深く掘り下げるための追加の読み物が掲載されています。詳しくはこちらをご覧ください 👉 https://github.com/huggingface/deep-rl-class/blob/main/unit2/README.md
次のユニットでは、Deep-Q-Learningについて学びます。
そして、学びたい友達と共有することを忘れないでください🤗!
最後に、私たちはあなたのフィードバックをもとにコースを改善し、逐次更新したいと考えています。フィードバックがある場合は、このフォームに記入してください👉 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