REINFORCEのロス関数 - Shinichi0713/RL-study GitHub Wiki
REINFORCEのロス関数(損失関数)は、「強化学習においてエージェントが取った行動の確率を、得られた報酬に応じて増やしたり減らしたりする」ことを目的として設計されています。
その根底にある考え方は、「報酬が高かった行動は今後も取りやすくし、報酬が低かった行動は取りにくくする」というものです。
数式的な背景
REINFORCEアルゴリズムは、方策勾配法(Policy Gradient Method)の一種です。
エージェントの方策(policy)(\pi_\theta(a|s))のパラメータ(\theta)を、期待される報酬を最大化する方向に更新します。
期待報酬の最大化
[ J(\theta) = \mathbb{E}{\tau \sim \pi\theta} [R(\tau)] ] ここで(\tau)はエピソード(状態・行動の列)、(R(\tau))は累積報酬。
方策勾配定理
[ \nabla_\theta J(\theta) = \mathbb{E}{\tau \sim \pi\theta} \left[ \sum_{t} \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot R_t \right] ] この勾配を確率的勾配降下法で最適化します。
REINFORCEのロス関数
REINFORCEでは、上記の勾配を計算するために、**損失関数(loss)**として以下のような形を使います:
[ L(\theta) = - \sum_{t} \log \pi_\theta(a_t|s_t) \cdot R_t ]
- (\log \pi_\theta(a_t|s_t)):
エージェントが実際に取った行動の対数確率 - (R_t):
その行動を取った後に得られた(または将来的に得られる)報酬
なぜこの形なのか?
- 報酬(R_t)が大きいとき、(\log \pi_\theta(a_t|s_t))を最大化(=その行動の確率を高める)したい
- 報酬(R_t)が小さい(または負)のとき、その行動の確率を下げたい
- 負号(マイナス)は、勾配降下法で期待報酬を最大化するために付けられています
まとめ
- REINFORCEのロス関数は、「報酬に比例して行動確率の対数を最大化する」形で設計されている
- これにより、良い行動は選ばれやすく、悪い行動は選ばれにくくなる
- 強化学習の「試行錯誤による最適化」の本質を、数学的に表現したものです
要約:
REINFORCEのロス関数は、「報酬が高い行動の確率を上げ、報酬が低い行動の確率を下げる」という強化学習の基本原理に基づいて設計されています。