E資格対策・強化学習の重要数式の覚え方(6)TD誤差とTD学習の更新式を語呂合わせと計算例で確実に覚える

こんにちは。ゆうせいです。

E資格の強化学習で出題される重要数式を、1つずつ覚えていくシリーズの第6回です。

第4回と第5回で学んだベルマン方程式は、環境の遷移確率 p が分かっていることが前提でした。しかし、現実の問題では、「この行動をすると、どの確率でどの状態に移るか」が分からないことがほとんどです。

そこで登場するのが、今回取り上げる「TD誤差」です。TD誤差を使うと、遷移確率が分からなくても、実際に行動して得た経験から価値を少しずつ学べます。

TD誤差は、第7回のSARSA、第8回のQ学習、第9回のDQN、そしてActor-Criticの基礎になる式です。ここから先の回は、すべて今回の式の応用なので、しっかり覚えておきましょう。

この記事のゴール

  • TD誤差の式と、TD学習の更新式を何も見ずに書けるようになる
  • TD誤差が正のとき、負のときに、価値がどう変わるかを説明できるようになる
  • 学習率 α(アルファ)の役割を説明できるようになる
  • モンテカルロ法とTD学習の違いを説明できるようになる

これまでの復習

第4回のベルマン期待方程式を、期待値の形で確認します。

V^{\pi}(s) = \mathbb{E}_{\pi}[R_{t+1} + \gamma V^{\pi}(S_{t+1}) \mid S_t = s]

覚え方は「ブイは、ある我慢ブイ」でした。今の価値は、平均すると「すぐの報酬 + γ × 次の価値」に等しい、という関係です。

また、第2回では、実際に得た割引収益を平均して価値を推定する方法として、モンテカルロ法を紹介しました。今回は、この2つの考え方を組み合わせます。

TD誤差とTD学習の更新式

今回覚える式は、次の2つです。

TD誤差:

\delta_t = R_{t+1} + \gamma V(S_{t+1}) - V(S_t)

TD学習の更新式:

V(S_t) \leftarrow V(S_t) + \alpha \delta_t

記号の意味は次のとおりです。

記号読み方意味
\delta_tデルタ・ティーTD誤差。予想と、一歩進んで分かった結果とのズレ
V(S_t)ブイ・エス・ティー今の状態の価値の推定値(今の予想)
R_{t+1} + \gamma V(S_{t+1})-一歩進んで分かった、価値の新しい見積もり(目標値)
αアルファ学習率。1回の更新でズレをどれだけ反映させるか。0 より大きく 1 以下
←矢印左辺の値を、右辺の値で置き換える(上書きする)

TD は Temporal Difference(時間的差分)の略です。「時刻 t の予想」と「時刻 t+1 に分かった見積もり」という、時間のずれた2つの値の差を使うことから、この名前が付いています。

なお、ここでの V には右肩の π が付いていません。これは、V が本当の価値そのものではなく、学習途中の推定値(予想)であることを表しています。

式の意味:一歩進んで答え合わせ

TD誤差は、「一歩進んでみたら、予想とどれくらいズレていたか」を表します。

通勤で考えてみます。家を出るとき、「会社まで40分かかる」と予想したとします。

  1. 家を出る時点の予想:会社まで40分
  2. 駅に着くまでに、実際に15分かかった
  3. 駅で、「ここから会社まで30分かかる」と見積もった
  4. 一歩進んで分かった見積もりは、15 + 30 = 45分
  5. ズレは、45 − 40 = 5分

会社に着く前に、駅に着いた時点で「最初の予想は5分甘かった」と分かります。次からは、家を出るときの予想を少し長めに修正すればよいわけです。

強化学習に当てはめると、次のようになります。

通勤の例TD誤差の式
家を出るときの予想 40分今の予想 V(S_t)
駅までに実際にかかった 15分すぐもらえる報酬 R_{t+1}
駅で見積もった残り 30分次の状態の価値の予想 V(S_{t+1})
一歩進んで分かった見積もり 45分目標値 R_{t+1} + \gamma V(S_{t+1})
ズレ 5分TD誤差 \delta_t

ゴールまで待たなくても、一歩進むごとに答え合わせができるのが、TD誤差の大きな特徴です。

推定値で推定値を直す

TD誤差の目標値 R_{t+1} + \gamma V(S_{t+1}) には、次の状態の価値の「予想」が含まれています。つまり、TD学習では、予想を使って予想を修正しています。

この考え方をブートストラップと呼びます。自分の靴ひも(ブーツのつまみ)を引っ張って自分を持ち上げる、という英語の言い回しに由来する言葉です。

予想を使って予想を直すと聞くと、不安に感じるかもしれません。しかし、目標値には実際にもらった報酬 R_{t+1} という本物の情報が含まれています。この本物の情報が少しずつ入り込むことで、繰り返すうちに予想は正しい値に近づいていきます。

練習問題1

TD誤差の式として正しいものを選んでください。

  • ア:\delta_t = R_{t+1} + \gamma V(S_t) - V(S_{t+1})
  • イ:\delta_t = G_t - V(S_t)
  • ウ:\delta_t = \gamma R_{t+1} + V(S_{t+1}) - V(S_t)
  • エ:\delta_t = R_{t+1} + \gamma V(S_{t+1}) - V(S_t)

練習問題1の解答と解説

正解はエです。

「一歩進んで分かった見積もり(すぐの報酬 + γ × 次の価値)」から「今の予想」を引いています。

  • アは誤りです。今の状態と次の状態の価値が入れ替わっています。割り引くのは次の状態の価値で、引くのは今の状態の価値です。
  • イは誤りです。実際の割引収益 G を目標値にしているので、TD誤差ではなく、モンテカルロ法で使う誤差です。
  • ウは誤りです。割引率 γ が報酬に掛かっています。第4回の「ある我慢ブイ」のとおり、γ が掛かるのは次の状態の価値です。

語呂合わせで覚える

語呂合わせ1:ある我慢ブイ、引く今のブイ

TD誤差の式は、第4回のベルマン期待方程式のかっこの中から、今の価値を引いたものです。

  • 前半:R_{t+1} + \gamma V(S_{t+1}) … ある我慢ブイ(ベルマン方程式と同じ)
  • 後半:- V(S_t) … 引く今のブイ

覚え方は「ある我慢ブイ、引く今のブイ」です。

ベルマン方程式が正しく成り立っていれば、平均するとこのズレは 0 になります。つまり、TD誤差は「ベルマン方程式がどれくらい成り立っていないか」を表す値とも言えます。

語呂合わせ2:デルタは答え合わせのズレ

δ(デルタ)は、数学で「差」や「変化」を表すときによく使われる文字です。

覚え方は「デルタは、答え合わせのズレ」です。

TD誤差の符号(プラスかマイナスか)によって、意味が次のように変わります。

TD誤差の符号意味価値の修正
正(プラス)思ったより良かった予想を上方修正する
0予想どおりだった修正しない
負(マイナス)思ったより悪かった予想を下方修正する

テストで、70点を予想していたのに80点だったら、次からは自分の実力の予想を少し上げます。60点だったら、少し下げます。TD誤差も同じ考え方です。

語呂合わせ3:アルファは、ある程度だけ直す

更新式の α(アルファ)は学習率です。ズレが分かっても、予想を一度に全部直すわけではありません。ズレのうち、α の割合だけ直します。

覚え方は「アルファは、ある程度だけ直す」です。

  • α = 1:ズレを全部反映する。最新の1回の結果に振り回されやすい
  • α = 0.1:ズレの1割だけ反映する。ゆっくりだが安定して学習できる
  • α = 0:まったく直さない。学習が進まない

1回の結果は、たまたま良かったり悪かったりします。そのため、少しずつ直して、多くの経験を平均するように学習するのが一般的です。α は、山道を下るときの「歩幅」と考えることもできます。歩幅が大きすぎると行き過ぎ、小さすぎるとなかなか進みません。

語呂合わせ4:新しい予想は、古い予想にアルファ・デルタ

更新式は、次のように読みます。

V(S_t) \leftarrow V(S_t) + \alpha \delta_t

「新しい予想は、古い予想に、アルファ・デルタを足す」

この形は、強化学習の更新式に何度も登場する共通の型です。

新しい推定 = 古い推定 + 学習率 ×(目標 − 古い推定)

TD誤差を代入して書くと、次のようになります。

V(S_t) \leftarrow V(S_t) + \alpha [R_{t+1} + \gamma V(S_{t+1}) - V(S_t)]

第7回のSARSA、第8回のQ学習も、この型の「目標」の部分が少し変わるだけです。今回この型を覚えておけば、次の2回は目標の部分だけを覚えれば済みます。

練習問題2

TD学習の更新式における学習率 α の説明として、最も適切なものを選んでください。

  • ア:1回の更新で、ズレをどの割合だけ価値に反映させるかを決める
  • イ:将来の報酬を、どの程度割り引いて価値に反映させるかを決める
  • ウ:ランダムに行動を選んで、新しい行動を試す確率を決める値である
  • エ:TD誤差が正か負かを判定して、更新の向きを決めるための値である

練習問題2の解答と解説

正解はアです。

α は学習率で、TD誤差(ズレ)のうち、どの割合を予想の修正に使うかを決めます。

  • イは誤りです。将来の報酬の割り引き方を決めるのは割引率 γ です。α と γ はどちらもギリシャ文字なので、混同しないように注意しましょう。
  • ウは誤りです。ランダムに行動を選ぶ確率は、ε-greedy法の ε(イプシロン)です。
  • エは誤りです。更新の向きは、TD誤差 δ そのものの符号で決まります。α は 0 より大きい値なので、向きを変えることはありません。

計算例で確かめる

計算例1:TD誤差が正の場合

次の状況を考えます。

  • 今の状態の価値の予想:V(S_t) = 5
  • すぐもらえた報酬:R_{t+1} = 2
  • 次の状態の価値の予想:V(S_{t+1}) = 6
  • 割引率 γ = 0.9、学習率 α = 0.1

まず、TD誤差を計算します。

\delta_t = 2 + 0.9 \times 6 - 5 = 2 + 5.4 - 5 = 2.4

TD誤差は正なので、思ったより良かったことになります。次に、価値を更新します。

V(S_t) \leftarrow 5 + 0.1 \times 2.4 = 5 + 0.24 = 5.24

予想は 5 から 5.24 に、少しだけ上方修正されました。目標値の 7.4 まで一気に上げるのではなく、「ある程度だけ直す」ことを確認してください。

計算例2:TD誤差が負の場合

同じ状態で、今度は報酬が 0 だったとします。

\delta_t = 0 + 0.9 \times 6 - 5 = 5.4 - 5 = 0.4

報酬が 0 でも、次の状態の価値が高いため、TD誤差はわずかに正になりました。では、次の状態の価値の予想が 4 だった場合はどうでしょうか。

\delta_t = 0 + 0.9 \times 4 - 5 = 3.6 - 5 = -1.4

TD誤差は負なので、思ったより悪かったことになります。

V(S_t) \leftarrow 5 + 0.1 \times (-1.4) = 5 - 0.14 = 4.86

予想は 5 から 4.86 に下方修正されました。TD誤差の符号を見るだけで、予想を上げるべきか下げるべきかが分かります。

計算例3:終端状態に着いた場合

次の状態が終端状態のときは、終端状態の価値を 0 として計算します。第2回で学んだ「終端状態の価値は0」がここで役立ちます。

  • 今の状態の価値の予想:V(S_t) = 3
  • すぐもらえた報酬:R_{t+1} = 5
  • 次の状態は終端状態(価値は 0)
  • 学習率 α = 0.5

\delta_t = 5 + \gamma \times 0 - 3 = 2

V(S_t) \leftarrow 3 + 0.5 \times 2 = 4

終端状態に着いたときは、γ の値に関係なく、TD誤差は「報酬 − 今の予想」になります。

練習問題3

次の状況で、TD学習の更新後の V(S_t) の値を選んでください。

  • 今の状態の価値の予想:V(S_t) = 4
  • すぐもらえた報酬:R_{t+1} = 1
  • 次の状態の価値の予想:V(S_{t+1}) = 10
  • 割引率 γ = 0.9、学習率 α = 0.5
  • ア:10.0
  • イ:7.0
  • ウ:7.5
  • エ:1.0

練習問題3の解答と解説

正解はイです。

まず、TD誤差を計算します。

\delta_t = 1 + 0.9 \times 10 - 4 = 1 + 9 - 4 = 6

次に、価値を更新します。

V(S_t) \leftarrow 4 + 0.5 \times 6 = 4 + 3 = 7

  • アの10.0は、学習率を掛け忘れて 4 + 6 とした値です。ズレを全部反映してしまっています。
  • ウの7.5は、割引率を掛け忘れた値です。TD誤差が 1 + 10 − 4 = 7 になり、4 + 0.5 × 7 = 7.5 となります。
  • エの1.0は、TD誤差を引いてしまった値です。4 − 0.5 × 6 = 1 となり、修正の向きが逆になっています。

経験を重ねると価値が伝わっていく

TD学習では、1回の更新で直すのは「今の状態」の価値だけです。それでも、経験を重ねると、ゴールの情報が少しずつ前の状態へ伝わっていきます。

計算例4:一本道を3回たどる

次の一本道を考えます。

  • 状態 A から必ず状態 B に移り、報酬 0 をもらう
  • 状態 B から必ず終端状態に移り、報酬 1 をもらう
  • 割引率 γ = 0.9、学習率 α = 0.5
  • 価値の予想は、すべて 0 から始める

第4回の方法で計算すると、本当の価値は V(B) = 1、V(A) = 0.9 です。TD学習で、この値に近づくかを確かめます。

1回目のエピソードです。

  • 状態 A の更新:δ = 0 + 0.9 × 0 − 0 = 0 なので、V(A) = 0 のまま
  • 状態 B の更新:δ = 1 + 0 − 0 = 1 なので、V(B) = 0 + 0.5 × 1 = 0.5

2回目のエピソードです。

  • 状態 A の更新:δ = 0 + 0.9 × 0.5 − 0 = 0.45 なので、V(A) = 0 + 0.5 × 0.45 = 0.225
  • 状態 B の更新:δ = 1 − 0.5 = 0.5 なので、V(B) = 0.5 + 0.5 × 0.5 = 0.75

3回目のエピソードです。

  • 状態 A の更新:δ = 0 + 0.9 × 0.75 − 0.225 = 0.45 なので、V(A) = 0.225 + 0.5 × 0.45 = 0.45
  • 状態 B の更新:δ = 1 − 0.75 = 0.25 なので、V(B) = 0.75 + 0.5 × 0.25 = 0.875
エピソードV(A)V(B)
開始時00
1回目の後00.5
2回目の後0.2250.75
3回目の後0.450.875
本当の価値0.91

1回目では、ゴールに近い状態 B の価値だけが上がりました。2回目になって、状態 B の価値が状態 A に伝わり始めています。回数を重ねるごとに、両方の値が本当の価値に近づいていく様子が分かります。

ゴールの報酬が、バケツリレーのように後ろから前へ伝わっていくイメージを持っておきましょう。

練習問題4

一本道の環境で、状態 B から終端状態に移って報酬 4 をもらいました。更新前の予想が V(B) = 2、学習率が α = 0.25 のとき、TD学習による更新後の V(B) を求めてください。

練習問題4の解答と解説

答えは2.5です。

次の状態は終端状態なので、その価値は 0 です。

  • TD誤差:δ = 4 + γ × 0 − 2 = 2
  • 更新後:V(B) = 2 + 0.25 × 2 = 2.5

終端状態では、TD誤差が「報酬 − 今の予想」になることを確認しておきましょう。

モンテカルロ法とTD学習の比較

第2回で紹介したモンテカルロ法も、更新式の形にすると次のようになります。

V(S_t) \leftarrow V(S_t) + \alpha [G_t - V(S_t)]

TD学習との違いは、目標値だけです。

項目モンテカルロ法TD学習
目標値実際の割引収益 G_tR_{t+1} + \gamma V(S_{t+1})
更新できるタイミングエピソードが終わってから一歩進むごと
終わりのないタスク使えない使える
目標値の偏り(バイアス)なし。実際の結果だけを使うあり。予想を含むため
目標値のばらつき(分散)大きい。最後までの運が影響する小さい。一歩分の運だけが影響する

覚え方は「モンテカルロはゴールで答え合わせ、TDは一歩先で答え合わせ」です。

バイアスと分散の違いは、E資格でよく問われます。モンテカルロ法は、本物の結果だけを使うので偏りはありませんが、最後までの運の影響を受けるため、値が大きくばらつきます。TD学習は、予想を使う分だけ偏りが生じますが、一歩分の運しか影響しないので、ばらつきが小さくなります。

なお、2つの方法の中間として、何歩か先まで実際の報酬を使う「nステップTD法」もあります。

練習問題5

TD学習について、適切でないものを選んでください。

  • ア:環境の遷移確率 p を知らなくても、経験から価値を学習できる
  • イ:TD誤差が正のときは、今の状態の価値の予想を上方修正する
  • ウ:エピソードが終わるまで、価値の予想を更新することができない
  • エ:次の状態の価値の予想を使って、今の状態の価値の予想を直す

練習問題5の解答と解説

正解はウです。

TD学習は、一歩進むごとに価値を更新できます。エピソードが終わるまで更新できないのは、モンテカルロ法の特徴です。

  • アは正しい説明です。TD学習は、実際に行動して得た報酬と次の状態だけを使うので、遷移確率を知る必要がありません。
  • イは正しい説明です。TD誤差が正なら、思ったより良かったということなので、予想を上げます。
  • エは正しい説明です。予想を使って予想を直す、ブートストラップの考え方です。

TD誤差はこの先も登場する

TD誤差は、今後の回で次のように使われます。

  • 第7回 SARSA:V を Q に置き換えたTD誤差で、行動価値を学習する
  • 第8回 Q学習:目標値の中で max を使うTD誤差で、最適な行動価値を学習する
  • 第9回 DQN:TD誤差の2乗を損失関数にして、ニューラルネットワークを学習する
  • Actor-Critic:TD誤差を「その行動がどれくらい良かったか」の指標として使い、方策を改善する

また、脳科学の研究では、報酬の予想とのズレに反応する神経細胞(ドーパミン神経細胞)の活動が、TD誤差とよく似た振る舞いをすることが知られています。TD誤差は、生き物の学習の仕組みとも関わりの深い考え方です。

初学者がつまずきやすい点

つまずきやすい点正しい理解
今の価値と次の価値を逆にするある我慢ブイ(次の価値)、引く今のブイ
γ を報酬に掛けてしまうγ が掛かるのは次の状態の価値だけ
α を掛け忘れて、ズレを全部足すアルファは、ある程度だけ直す
α と γ を混同するα は学習率(直す割合)、γ は割引率(我慢)
終端状態の価値を予想のまま使う終端状態の価値は 0 として計算する
TD学習はゴールまで更新できないと考えるゴールで答え合わせはモンテカルロ法。TDは一歩先で答え合わせ

白紙に書いて確認しよう

記事を読み終えたら、何も見ずに次の5つを紙に書いてみてください。

  1. TD誤差の式
  2. TD学習の更新式(δ を使った短い形)
  3. TD学習の更新式(δ を代入した長い形)
  4. 強化学習の更新式の共通の型(新しい推定 = …)
  5. モンテカルロ法とTD学習の目標値の違い

書き終えたら、今の価値と次の価値の位置、γ の位置、α の掛け忘れの3点を確認してください。

まとめ

  • TD誤差は、予想と、一歩進んで分かった見積もりとのズレです。デルタは答え合わせのズレです
  • 式は「ある我慢ブイ、引く今のブイ」の順に書きます
  • TD誤差が正なら上方修正、負なら下方修正します
  • 更新式は「新しい予想は、古い予想にアルファ・デルタ」です。アルファは、ある程度だけ直します
  • 遷移確率 p が分からなくても、経験から価値を学べます
  • モンテカルロはゴールで答え合わせ、TDは一歩先で答え合わせです

次回は、TD学習の考え方を行動価値 Q に当てはめた「SARSA」を取り上げます。今回の更新式の V を Q に変え、目標値に「次に実際に選んだ行動」を使うだけです。今回の共通の型「新しい推定 = 古い推定 + 学習率 ×(目標 − 古い推定)」を白紙に書ける状態にしてから読み進めてください。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。