পাঠ ১১ · ৩২-এর মধ্যে · মডিউল ২

Temporal Difference (TD) learning

TD learning — bootstrapping from one-step experience
৮ মিনিট পড়া উচ্চ · Advanced Python কোডসহ

এই পাঠে যা শিখবেন

  • TD(0) — সরলতম TD method
  • TD error δ — RL-এর "dopamine signal"
  • n-step TD — MC ও TD-এর spectrum
  • TD(λ) — eligibility traces

১ · The big idea — bootstrap

MC: $V(s) = \mathbb{E}[G_t]$ — full episode return-এর গড়।
DP: $V(s) = \mathbb{E}[r + \gamma V(s')]$ — model দিয়ে next state value।
TD: $V(s) = $ sample $r + \gamma V(s')$ — sample, কিন্তু বর্তমান $V$ estimate ব্যবহার।

TD(0) update rule

$$V(s_t) \leftarrow V(s_t) + \alpha [\underbrace{r_{t+1} + \gamma V(s_{t+1})}_{\text{TD target}} - V(s_t)]$$

$\delta_t = r_{t+1} + \gamma V(s_{t+1}) - V(s_t)$ — TD error।

২ · কেন TD revolutionary

  • Online: প্রতি step-এ update — episode-শেষ চাই না।
  • Continuing tasks: infinite horizon-এও কাজ করে।
  • Variance কম: single $r + \gamma V(s')$ — full $G$ না।
  • Bias আছে: $V(s')$ estimate (boots-strap)।

৩ · TD error — biological connection

Schultz, Dayan, Montague (১৯৯৭) — dopaminergic neurons-এর firing pattern TD error-এর সাথে match। মস্তিষ্ক natural TD-প্রকৃতির। RL ↔ neuroscience-এর সবচেয়ে strong link।

আপনি ছবিতে দেখলেন বন্ধু এসেছে — চমৎকার। এই "চমৎকার" — expected value হঠাৎ বেড়েছে। এটাই positive TD error। মস্তিষ্ক dopamine release করে। RL agent same — δ > 0 হলে অভ্যাস strengthen।

৪ · TD(0) Python implementation

Python · TD(0)
import numpy as np

# 5-state random walk, terminals at 0 (-1) and 4 (+1)
n = 5
gamma = 1.0
alpha = 0.1

def episode():
    s = 2
    traj = []
    while s not in [0, 4]:
        a = np.random.choice([-1, 1])
        s_next = s + a
        if s_next == 4: r = 1
        elif s_next == 0: r = -1
        else: r = 0
        traj.append((s, r, s_next))
        s = s_next
    return traj

V = np.zeros(n)
np.random.seed(0)

for ep in range(500):
    traj = episode()
    for (s, r, s_next) in traj:
        terminal = s_next in [0, 4]
        V_next = 0 if terminal else V[s_next]
        td_error = r + gamma * V_next - V[s]
        V[s] += alpha * td_error

print("TD(0) estimate:")
for s in range(n):
    print(f"  V({s}) = {V[s]:.3f}")
# Analytical: V(s) = (s - 2)/2 for s in [1,2,3]
# V(1)=-0.5, V(2)=0, V(3)=0.5

    
TD(0) ৫০০ episode-এ analytical-এর কাছাকাছি। MC একই accuracy পেতে আরও episode লাগে — variance বেশি।

৫ · TD vs MC — bias-variance

  • MC: unbiased, high variance। full $G$ — long horizon noise।
  • TD: biased (bootstrapping), low variance। single $r + \gamma V$।
  • Practice: TD usually faster convergence on Markov problems। MC robust to non-Markov।

৬ · n-step TD

Spectrum between TD(0) and MC:

$$G_t^{(n)} = r_{t+1} + \gamma r_{t+2} + \ldots + \gamma^{n-1} r_{t+n} + \gamma^n V(s_{t+n})$$

$n=1$ → TD(0)। $n=\infty$ → MC।

Trade-off:

  • Larger $n$ — less bias (more sample, less bootstrap), more variance।
  • Smaller $n$ — more bias, less variance।
  • Optimal $n$ — task-dependent। Atari-এ $n=3$-$5$ common।

৭ · TD(λ) — eligibility traces

Single $n$ বাছার বদলে — সব $n$-step return-এর geometric average:

$$G_t^\lambda = (1-\lambda) \sum_{n=1}^\infty \lambda^{n-1} G_t^{(n)}$$

$\lambda=0$ → TD(0)। $\lambda=1$ → MC।

Eligibility trace: efficient online implementation —

$$e_t(s) = \gamma \lambda e_{t-1}(s) + \mathbb{1}[s_t = s]$$

Update: $V(s) \leftarrow V(s) + \alpha \delta_t e_t(s)$ — সব state-এ trace অনুযায়ী।

TD ও MC Backup — কতটা গভীরে দেখে TD(0) $s_t$ r $s_{t+1}$ use V(s_{t+1}) এক step look low variance, biased n-step TD $s_t$ $s_{t+n}$ use V(s_{t+n}) n step look balanced Monte Carlo $s_t$ $s_T$ terminal পুরো episode unbiased, noisy Trade-off: • TD(0): low variance + bias from V estimate • MC: zero bias + high variance from full G • n-step / TD(λ): tunable spectrum • In practice: n=3-5 or λ=0.9 common (Atari, MuJoCo) → TD-এর deeper extension সব modern RL-এ (DQN, PPO, A2C)।
TD(0), n-step TD, ও MC — backup-এর গভীরতা spectrum। modern RL এই spectrum-এর intermediate point ব্যবহার।

৮ · n-step TD Python

Python · n-step TD
def n_step_td(n_steps=3, n_episodes=500, alpha=0.1):
    V = np.zeros(n)
    for ep in range(n_episodes):
        traj = episode()
        for t in range(len(traj)):
            # n-step return
            G = 0
            for k in range(n_steps):
                if t + k >= len(traj): break
                G += (gamma ** k) * traj[t+k][1]
            # bootstrap from V at end
            if t + n_steps < len(traj):
                G += (gamma ** n_steps) * V[traj[t+n_steps][0]]
            s = traj[t][0]
            V[s] += alpha * (G - V[s])
    return V

for n in [1, 2, 5, 100]:
    V_est = n_step_td(n_steps=n)
    print(f"n={n}: V = {V_est.round(3)}")

    
Different $n$ — different convergence pattern। $n=1$ (TD(0)) দ্রুত start কিন্তু biased। $n$ বড় → MC-এর কাছাকাছি — slower but unbiased।

৯ · TD-এর প্রভাব — কোথায় ব্যবহার

  • Q-learning, SARSA — TD-based control।
  • DQN — TD + neural net।
  • A2C, A3C — n-step advantage TD-based।
  • PPO, TRPO — GAE-based, TD-extended।
  • SAC, TD3 — TD critic update।

প্রায় সব modern RL algorithm — TD-এর কোনো-না-কোনো রূপ।

ভাবনার প্রশ্ন

প্র ০১TD-এর "bootstrap" শব্দটি কী মানে — এবং কেন bias আনে?

Bootstrap = "নিজেকে নিজে টানা"। TD update-এ next state-এর value estimate ব্যবহার — যা agent নিজেই learning। তাই self-referential।

Bias source: $V(s')$ true value না, current estimate। ভুল হলে — সেটা $V(s)$-এ propagate।

কিন্তু কেন কাজ করে:

  • Convergence guaranteed (tabular case): contraction।
  • Errors decrease with iteration।
  • Sample-efficient: full episode wait নেই।

Function approximation-এ সমস্যা: NN-এ bootstrapping-এর "deadly triad" — যেটি DQN-এ target net + replay buffer দিয়ে handle।

প্র ০২TD error-এর neuroscience interpretation কী?

Schultz et al. (1997) — monkey-এর midbrain dopamine neurons-এর recording:

  • Unexpected reward — burst firing (positive TD error)।
  • Predicted reward — no extra burst (zero TD error)।
  • Expected reward absent — dip in firing (negative TD error)।

এই pattern exactly TD error-এর behavior। মস্তিষ্ক naturally TD computer।

Implications:

  • Addiction — drug induces artificial positive TD error।
  • Depression — chronic negative TD error → low value estimate।
  • Parkinson's — dopamine deficit → TD signal disrupted → motor learning হারায়।

Reverse application: RL theory mental health-এ insight দেয়। computational psychiatry — emerging field।

প্র ০৩Random walk-এ TD কেন MC-এর চেয়ে দ্রুত converge?

Sutton-Barto-র classic experiment। Random walk Markov — TD assumption সঠিক।

কেন TD জেতে:

  • Variance কম: full $G$-র noise এড়ায়।
  • Markov-এ bias minimal — V estimate true value-র কাছে।
  • Information propagation: এক episode-এর update পরের episode-এ instantly available।

MC কেন slow:

  • Long episode-এর full $G$ noisy।
  • Episode-শেষে only update — within-episode information unused।
  • Convergence-এ অনেক episode প্রয়োজন।

কখন MC জেতে:

  • Non-Markov environment — TD bias amplify।
  • Function approximation + offline — MC simpler।
প্র ০৪Eligibility trace কীভাবে credit assignment করে?

TD(0) — শুধু last visited state credit পায়। Eligibility trace — past states-ও credit পায় (decaying)।

$e_t(s) = \gamma \lambda e_{t-1}(s) + \mathbb{1}[s_t = s]$

Visualization:

  • State $s$-এ visit হলো — trace 1-এ jump।
  • Time pass — trace exponentially decay ($\gamma \lambda$ rate)।
  • Reward এলে — সব trace-এর share পায় credit।

Backward view interpretation: TD error δ আসলে — সব state-এ এটার trace অনুযায়ী allocate হয়।

Forward equivalence: Sutton প্রমাণ করেছেন — backward (eligibility) ও forward (n-step return mixture) computationally equivalent।

Practical: TD(λ) tabular-এ excellent। NN-এর সাথে eligibility trace কঠিন (parameter space-এ trace), তাই modern deep RL-এ rarely. কিন্তু GAE (PPO-এ) — TD(λ)-এর spirit।

অনুশীলন

  1. TD update manual: $V(s)=2, V(s')=4, r=1, \gamma=0.9, \alpha=0.1$। TD error ও new $V(s)$?

    $\delta = 1 + 0.9 \cdot 4 - 2 = 2.6$। $V(s) \leftarrow 2 + 0.1 \cdot 2.6 = 2.26$।

  2. n-step return: $r_1=1, r_2=2, r_3=3$, $V(s_3)=5$, $\gamma=0.9$। 3-step return $G^{(3)}$?

    $G^{(3)} = 1 + 0.9 \cdot 2 + 0.81 \cdot 3 + 0.729 \cdot 5 = 1 + 1.8 + 2.43 + 3.645 = 8.875$।

  3. TD vs MC code: উপরের code-এ MC version implement করুন; sample efficiency compare।

    MC version-এ — episode শেষ পর্যন্ত wait, all (s, G) pair update। TD version per-step। সাধারণত TD ৩-১০× কম episode-এ similar accuracy।

আরও পড়ুন

পূর্ববর্তী পাঠ
পাঠ ১০ · Monte Carlo