Hoppa till innehållet
AI-grafen
E· Universitetreinforcement-learning· ca 60 min· grundläggande — ändras sällan· verifierad 2026-09-20

Reinforcement learning — grunderna

Kunna förklara agent, miljö, belöning och policy, och implementera en enkel policy-gradient.

Förkunskaper

Intuition

I övervakad inlärning får modellen facit per exempel. I RL får agenten bara en belöning — ofta sent, ofta sparsam — och måste själv lista ut vilka handlingar som ledde dit.

Ordlista: tillstånd s (vad agenten ser), handling a, belöning r, policy π(a|s) (agentens beteende, ofta ett neuronnät), avkastning G = summan av (diskonterade) belöningar från nu.

Policy gradient (REINFORCE): kör en episod, och för varje handling: gör den mer sannolik om avkastningen efter den var hög, mindre om låg. Gradienten är ∑ₜ ∇log π(aₜ|sₜ)·Gₜ. Enkelt, men bullrigt — en episod säger lite om vilken handling som var bra (kredittilldelning). Man drar ifrån en baslinje (medelavkastning) för att minska variansen.

RLHF för språkmodeller är precis detta: tillstånd = prompten hittills, handling = nästa token, belöning = en belöningsmodells poäng på hela svaret.

Kod

import numpy as np
rng = np.random.default_rng(0)

# Miljö: gå från 0 till 5 på en linje; handling 0 = vänster, 1 = höger; belöning 1 vid mål, max 20 steg
def episode(theta):
    s, traj = 0, []
    for _ in range(20):
        p = 1 / (1 + np.exp(-theta[s]))           # π(höger | s)
        a = int(rng.random() < p)
        traj.append((s, a, p))
        s = min(5, max(0, s + (1 if a else -1)))
        if s == 5: return traj, 1.0
    return traj, 0.0

theta = np.zeros(6); lr = 0.5; baseline = 0.0
for it in range(300):
    traj, G = episode(theta)
    adv = G - baseline; baseline = 0.9 * baseline + 0.1 * G
    for s, a, p in traj:
        theta[s] += lr * adv * ((a - p))            # ∇log π för Bernoulli/sigmoid
print(np.round(1 / (1 + np.exp(-theta)), 2))         # → nära 1 överallt: «gå höger»

Formellt

Mål: maximera J(θ)=Eτ∼πθ[G(τ)]J(\theta) = \mathbb E_{\tau\sim\pi_\theta}[G(\tau)]. Policy gradient-satsen: ∇θJ=E[∑t∇θlog⁡πθ(at∣st) (Gt−b(st))]\nabla_\theta J = \mathbb E\big[\sum_t \nabla_\theta\log\pi_\theta(a_t\mid s_t)\,(G_t - b(s_t))\big], där baslinjen bb inte ändrar väntevärdet men sänker variansen. Med b=Vπ(s)b = V^\pi(s) blir Gt−bG_t - b en skattning av advantage A(s,a)A(s,a) — grunden för actor–critic och PPO. Diskontering Gt=∑kγkrt+kG_t = \sum_k \gamma^k r_{t+k} med γ∈[0,1)\gamma\in[0,1) ger ändlig avkastning och kortare kredittilldelningshorisont.

Behärskning innebär

  • Definierar agent, miljö, tillstånd, handling, belöning, policy
  • Implementerar REINFORCE på en enkel miljö
  • Förklarar varför RL är svårt: kredittilldelning, varians, utforskning

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser