Hum chahte hain ∇θJ(θ). Dikkat yeh hai: expectation ek aisi distribution par hai jo θ par depend karti hai. Hum gradient andar directly nahin daal sakte — isliye hum log-derivative trick use karte hain.
Step 1 — Expectation ko trajectories par ek integral ki tarah likho.J(θ)=∫pθ(τ)R(τ)dτKyun? Ek expectation bas quantity ka probability-weighted sum/integral hai.
Step 2 — Differentiate karo; gradient integral ke andar jaata hai (linear operator).∇θJ=∫∇θpθ(τ)R(τ)dτKyun?R(τ)θ par depend nahin karta (rewards environment se aate hain), sirf pθ(τ) karta hai.
Step 3 — Log-derivative trick. Yeh identity note karo:
∇θpθ(τ)=pθ(τ)∇θlogpθ(τ)Kyun? Kyunki ∇θlogp=p∇θp — bas log par chain rule. Dono sides ko p se multiply karo.
Substitute karo:
∇θJ=∫pθ(τ)∇θlogpθ(τ)R(τ)dτ=Eτ[∇θlogpθ(τ)R(τ)]Yeh kyun important hai: iska matlab ek expectation-ka-gradient ek gradient-ki-expectation mein badal gaya, jise hum trajectories sample karke estimate kar sakte hain (Monte Carlo).
Step 4 — logpθ(τ) expand karo. Trajectory probability hai:
pθ(τ)=ρ(s0)∏t=0Tπθ(at∣st)P(st+1∣st,at)
Log lo (product → sum):
logpθ(τ)=logρ(s0)+∑tlogπθ(at∣st)+∑tlogP(st+1∣st,at)
Ab θ ke w.r.t. differentiate karo. Environment ke terms ρ aur Pθ par depend nahin karte, isliye unke gradients zero ho jaate hain!
∇θlogpθ(τ)=∑t=0T∇θlogπθ(at∣st)Yeh kyun badi baat hai: Hum gradient paate hain transition model P jaane bina — REINFORCE model-free hai.
Gt (reward-to-go) kyun, poora R(τ) kyun nahin? Time t par action sirf future rewards ko affect kar sakta hai. t se pehle mile rewards at ke credit ke nazariye se noise hain. Unhe hatane se estimator unbiased rehta hai lekin variance kam hoti hai. Yeh causality hai.
Yeh unbiased kyun hai? Kisi bhi baseline ke liye jo action par depend na kare:
Ea∼π[∇θlogπθ(a∣s)b(s)]=b(s)∑a∇θπθ(a∣s)=b(s)∇θ=1a∑πθ(a∣s)=b(s)⋅0=0
Isliye baseline variance change karta hai lekin zero bias add karta hai. Ek common choice: b(st)=V^(st), jo advantageAt=Gt−V^(st) deta hai.
Socho tum ek kutte ko treats se train kar rahe ho. Tum kutte ko exactly bata nahin sakte kya karna hai. Toh tum bas dekhte ho: jab bhi woh kuch karta hai aur phir achhi cheezein hoti hain, tum kaho "aur karo!" aur jab buri cheezein follow hoti hain, "yeh mat karo!" Tum un moves ko strengthen karte ho jo rewards ke baad aaye. REINFORCE exactly yahi karta hai computer ke liye: jo actions bahut saara reward layi unhe aur likely banata hai, aur jo thoda reward layi unhe kam likely. Fairly ke liye, yeh kisi action ko sirf wahi judge karta hai jo uske baad hua (pehle wala nahin), aur ek "average din" se compare karta hai taaki woh genuinely achhe move aur sirf lucky din mein fark kar sake.
Gt (reward-to-go) kya hai aur ise kyun use karte hain?
Gt=∑k≥tγk−trk; ise use karne se (poore return ki jagah) causally-irrelevant past rewards drop hote hain, variance kam hoti hai aur unbiased rehta hai.
Baseline b(s) subtract karna gradient ko bias kyun nahin karta?