G検定(ジェネラリスト検定)
れいんふぉーす
REINFORCE
REINFORCE
Reinforce Algorithm
REINFORCEは方策勾配法の古典的なアルゴリズムで、時刻tに実際に取った1つの行動Atと、エピソードの終わりまでの完全な収益Gtを使って方策のパラメータthetaを更新します。エピソードが終わってから更新するので、モンテカルロ法の一種です。
詳しい説明
実際に取った1つの行動だけで更新するアルゴリズム
REINFORCEは、方策勾配法に含まれる古典的なアルゴリズムです。Sutton と Barto の教科書 Reinforcement Learning: An Introduction 第2版(2018年)の第13章では、Williams(1992)のアルゴリズムとして紹介されています。
このアルゴリズムの特徴は、時刻tの更新で使う行動が1つだけという点です。使うのは、時刻tに実際に取った行動Atです。方策pi(At|St,theta_t)は、状態Stで行動Atを取る確率を、パラメータtheta_tで表したものです。REINFORCEはこのthetaを直接更新します。
G検定シラバス2024では、中項目9. 強化学習のキーワードとしてREINFORCEが挙げられています。同じ中項目には方策勾配法やActor-Criticなども並んでいます。方策勾配法の考え方そのものは、方策勾配法の項目で扱います。
REINFORCEの更新式
教科書では、次の更新式(式13.8)が示されています。
theta_(t+1) = theta_t + alpha*Gt*(grad pi(At|St,theta_t) / pi(At|St,theta_t))
記号の意味は次のとおりです。
- theta_t: 時刻tの方策のパラメータ
- alpha: 学習率
- Gt: 時刻tからの収益
- pi(At|St,theta_t): 状態Stで、実際に取った行動Atを取る確率
- grad pi(At|St,theta_t): その確率の勾配
式の中に出てくる行動はAtだけです。ほかに取り得た行動は更新に使いません。
更新の大きさは収益に比例し、行動の確率に反比例する
1回の更新の増分は、収益Gtと1つのベクトルの積に比例します。そのベクトルは、実際に取った行動を取る確率の勾配を、その行動を取る確率で割ったものです。
パラメータは、この勾配の方向へ動きます。動く大きさには次の2つの性質があります。
- 収益Gtが大きいほど、増分は大きくなります。高い収益につながった行動ほど、その行動を取る確率が高まる方向へ強く更新されます。
- 行動を取る確率pi(At|St,theta_t)が高いほど、増分は小さくなります。確率で割るのは、頻繁に選ばれる行動が、選ばれる回数が多いというだけで不当に有利にならないようにするためです。
計算例: 1回分の更新を数値でたどる
本来、パラメータthetaはベクトルです。ここでは式の読み方をつかむため、簡単のためにthetaを1つのスカラー値として扱います。
次の値を前提として置きます。
- 更新前のパラメータ: theta_t = 1.0
- 学習率: alpha = 0.1
- 時刻tからエピソードの終わりまでの収益: Gt = 4
- 実際に取った行動Atを取る確率の勾配を、その確率自身で割った値: grad pi(At|St,theta_t) / pi(At|St,theta_t) = 0.5(この比率の値を0.5とします)
これを更新式に当てはめます。
1. 増分を計算します。alpha*Gt*(比率) = 0.1*4*0.5 = 0.2
2. 更新前のパラメータに増分を足します。theta_(t+1) = 1.0 + 0.2 = 1.2
更新後のパラメータは theta_(t+1) = 1.2 です。
同じ条件で、収益だけを Gt = 8 に変えてみます。増分は 0.1*8*0.5 = 0.4 となり、theta_(t+1) = 1.0 + 0.4 = 1.4 です。収益が2倍になると増分も2倍になり、更新の大きさが収益に比例することを数値で確かめられます。
完全な収益を使うモンテカルロ法
REINFORCEが使う収益Gtは、時刻tからエピソードの終わりまでのすべての報酬を含む完全な収益です。教科書は、この意味でREINFORCEをモンテカルロ法のアルゴリズムと説明しています。
Gtはエピソードが終わるまで確定しません。そのため、REINFORCEが明確に定義されるのは、エピソードに終わりがある場合だけです。更新はすべて、エピソードが完了したあとに、さかのぼって行います。
試験で問われること
G検定
- REINFORCEは方策勾配法の古典的なアルゴリズムで、Williams(1992)によるものとして紹介されている。
- 時刻tの更新では、時刻tに実際に取った1つの行動Atだけを使う。更新式は theta_(t+1) = theta_t + alpha*Gt*(grad pi(At|St,theta_t) / pi(At|St,theta_t)) である。
- 更新の増分は収益Gtに比例し、その行動を取る確率に反比例する。確率で割ることで、頻繁に選ばれる行動が不当に有利にならないようにしている。
- 時刻tからエピソードの終わりまでのすべての報酬を含む完全な収益Gtを使うので、モンテカルロ法の一種である。
- エピソードが終わるまで収益が確定しないため、エピソードに終わりがある場合にだけ明確に定義される。更新はエピソードの完了後にさかのぼって行う。
- 更新式は、増分 alpha*Gt*(比率) を求めて theta_t に足すという順で読める。thetaをスカラーとして、theta_t = 1.0、alpha = 0.1、Gt = 4、比率 = 0.5 とすると、増分は 0.1*4*0.5 = 0.2、theta_(t+1) = 1.2 となる。
最終更新日: 2026/09/23