# Reinforcement Learning Algorithms {{#include ../banners/hacktricks-training.md}} ## Reinforcement Learning 強化学習 (RL) は、エージェントが環境と相互作用することで意思決定を学ぶ機械学習の一種です。エージェントは、行動に基づいて報酬または罰の形でフィードバックを受け取り、時間をかけて最適な行動を学ぶことができます。RLは、ロボティクス、ゲームプレイ、自律システムなど、解決策が逐次的な意思決定を含む問題に特に有用です。 ### Q-Learning Q-Learningは、特定の状態における行動の価値を学習するモデルフリーの強化学習アルゴリズムです。特定の状態で特定の行動を取ることの期待効用を保存するためにQテーブルを使用します。アルゴリズムは、受け取った報酬と最大期待将来報酬に基づいてQ値を更新します。 1. **初期化**: Qテーブルを任意の値(通常はゼロ)で初期化します。 2. **行動選択**: 探索戦略を使用して行動を選択します(例: ε-greedy、ここでは確率εでランダムな行動が選ばれ、確率1-εで最も高いQ値の行動が選択されます)。 - アルゴリズムは、状態に応じて既知の最良の行動を常に選択することができますが、これはエージェントがより良い報酬を得る可能性のある新しい行動を探索することを許可しません。これが、探索と活用のバランスを取るためにε-greedy変数が使用される理由です。 3. **環境との相互作用**: 環境で選択した行動を実行し、次の状態と報酬を観察します。 - この場合、ε-greedy確率に応じて、次のステップはランダムな行動(探索のため)または最良の既知の行動(活用のため)になる可能性があります。 4. **Q値の更新**: ベルマン方程式を使用して状態-行動ペアのQ値を更新します: ```plaintext Q(s, a) = Q(s, a) + α * (r + γ * max(Q(s', a')) - Q(s, a)) ``` ここで: - `Q(s, a)` は状態 `s` と行動 `a` の現在のQ値です。 - `α` は学習率 (0 < α ≤ 1) で、新しい情報が古い情報をどれだけ上書きするかを決定します。 - `r` は状態 `s` で行動 `a` を取った後に受け取った報酬です。 - `γ` は割引率 (0 ≤ γ < 1) で、将来の報酬の重要性を決定します。 - `s'` は行動 `a` を取った後の次の状態です。 - `max(Q(s', a'))` は次の状態 `s'` に対するすべての可能な行動 `a'` の中での最大Q値です。 5. **反復**: Q値が収束するか、停止基準が満たされるまでステップ2-4を繰り返します。 新しく選択された行動ごとにテーブルが更新され、エージェントは時間をかけて経験から学び、最適なポリシー(各状態で取るべき最良の行動)を見つけようとします。ただし、状態と行動が多い環境ではQテーブルが大きくなり、複雑な問題には実用的でなくなる可能性があります。そのような場合、関数近似法(例: ニューラルネットワーク)を使用してQ値を推定することができます。 > [!TIP] > ε-greedy値は通常、エージェントが環境についてより多くを学ぶにつれて探索を減らすために時間とともに更新されます。たとえば、高い値(例: ε = 1)から始め、学習が進むにつれて低い値(例: ε = 0.1)に減少させることができます。 > [!TIP] > 学習率 `α` と割引率 `γ` は、特定の問題と環境に基づいて調整する必要があるハイパーパラメータです。高い学習率はエージェントがより早く学習することを可能にしますが、不安定さを引き起こす可能性があります。一方、低い学習率はより安定した学習をもたらしますが、収束が遅くなります。割引率は、エージェントが将来の報酬をどれだけ重視するか(`γ` が1に近い)を決定します。 ### SARSA (State-Action-Reward-State-Action) SARSAは、Q-Learningに似た別のモデルフリーの強化学習アルゴリズムですが、Q値の更新方法が異なります。SARSAはState-Action-Reward-State-Actionの略で、次の状態で取られた行動に基づいてQ値を更新します。 1. **初期化**: Qテーブルを任意の値(通常はゼロ)で初期化します。 2. **行動選択**: 探索戦略を使用して行動を選択します(例: ε-greedy)。 3. **環境との相互作用**: 環境で選択した行動を実行し、次の状態と報酬を観察します。 - この場合、ε-greedy確率に応じて、次のステップはランダムな行動(探索のため)または最良の既知の行動(活用のため)になる可能性があります。 4. **Q値の更新**: SARSA更新ルールを使用して状態-行動ペアのQ値を更新します。更新ルールはQ-Learningに似ていますが、次の状態 `s'` で取られる行動を使用します: ```plaintext Q(s, a) = Q(s, a) + α * (r + γ * Q(s', a') - Q(s, a)) ``` ここで: - `Q(s, a)` は状態 `s` と行動 `a` の現在のQ値です。 - `α` は学習率です。 - `r` は状態 `s` で行動 `a` を取った後に受け取った報酬です。 - `γ` は割引率です。 - `s'` は行動 `a` を取った後の次の状態です。 - `a'` は次の状態 `s'` で取られる行動です。 5. **反復**: Q値が収束するか、停止基準が満たされるまでステップ2-4を繰り返します。 #### Softmax vs ε-Greedy Action Selection ε-greedy行動選択に加えて、SARSAはソフトマックス行動選択戦略も使用できます。ソフトマックス行動選択では、行動を選択する確率が**そのQ値に比例**し、行動空間のより微妙な探索を可能にします。状態 `s` で行動 `a` を選択する確率は次のように与えられます: ```plaintext P(a|s) = exp(Q(s, a) / τ) / Σ(exp(Q(s, a') / τ)) ``` where: - `P(a|s)` は状態 `s` における行動 `a` を選択する確率です。 - `Q(s, a)` は状態 `s` と行動 `a` の Q 値です。 - `τ` (タウ) は探索のレベルを制御する温度パラメータです。温度が高いほど探索が増え(より均一な確率)、温度が低いほど搾取が増えます(高い Q 値を持つ行動の確率が高くなります)。 > [!TIP] > これは、ε-greedy 行動選択と比較して、探索と搾取のバランスをより連続的に保つのに役立ちます。 ### オンポリシー学習とオフポリシー学習 SARSA は **オンポリシー** 学習アルゴリズムであり、現在のポリシー(ε-greedy またはソフトマックスポリシー)によって取られた行動に基づいて Q 値を更新します。対照的に、Q-Learning は **オフポリシー** 学習アルゴリズムであり、現在のポリシーによって取られた行動に関係なく、次の状態の最大 Q 値に基づいて Q 値を更新します。この違いは、アルゴリズムが環境にどのように学習し適応するかに影響を与えます。 SARSA のようなオンポリシー手法は、実際に取られた行動から学習するため、特定の環境ではより安定する可能性があります。しかし、Q-Learning のようなオフポリシー手法と比較して、収束が遅くなることがあります。 {{#include ../banners/hacktricks-training.md}}