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のロス関数は、「報酬が高い行動の確率を上げ、報酬が低い行動の確率を下げる」という強化学習の基本原理に基づいて設計されています。