强化学习基础数学基础1
这篇笔记由李宏毅老师的强化学习公开课整理而来
强化学习的基本步骤:
- Step 1:定义一个Neural Network作为一个Actor
- Step 2:定义评估函数,有些评估函数可能也是一个策略网络
- Step 3:选择或者训练出一个最佳的函数作为Actor和评估函数
强化的学习的Actor是一个Neural Network,把环境作为输入,输出的是当前环境下所有选择的概率值。
假设πθ(S)\pi_{\theta}(S)πθ(S) 表示一个Actor,其中SSS是输入,即当前的环境,θ\thetaθ表示神经网络的参数。那么,从当前状态开始,每一次Actor都会采取一个行动aia_iai,使得局面到达Si+1S_{i+1}Si+1,同时获取的奖励是rir_iri。
那么总的奖励:
(1)total reward: Rθ=∑t=1Trt
total\ reward: \ R_{\theta}=\sum_{t=1}^{T}r_{t} \tag{1}
total reward: Rθ=t=1∑Trt(1)
注意,RθR_{\theta}Rθ每次可能都是不同的,原因是:
- 选择的过程本身就是随机的。因为Actor的输出是每个选择的一个概率
- 游戏本身具有随机性,我们不知道环境可能会发生的变化
我们把一次完整的过程称为一个eposide
。
令符号
τ={s0,(s1,a1,r1),(s2,t2,r2),⋯ ,(st,at,rt)}
\tau=\{s_0,(s_1,a_1,r_1),(s_2,t_2,r_2),\cdots,(s_t,a_t,r_t)\}
τ={s0,(s1,a1,r1),(s2,t2,r2),⋯,(st,at,rt)}
表示一个完整的游戏过程。上述的意思是,从初始状态s0s_0s0采取行动a1a_1a1,然后到达状态s1s_1s1,获得的奖励是r1r_1r1,一次类推,直到最终状态sts_tst。总的奖励就是累加,见公式(1)(1)(1)。
我们知道,从某个给定的局面开始到游戏结束,每次的游戏过程都基本都是不一样的,那么有某个游戏过程τ\tauτ, 则该过程出现的概率是P(τ∣θ)P(\tau | \theta)P(τ∣θ)。所以,如果输入一个局面SSS,它的期望获得的奖励是:
(2)Rˉθ=∑τR(τ)P(τ∣θ)≈1N∑i=1NR(τ(i))
\bar{R}_{\theta} = \sum_{\tau}R(\tau)P(\tau|\theta)\approx\frac{1}{N}\sum_{i=1}^{N}R(\tau^{(i)}) \tag{2}
Rˉθ=τ∑R(τ)P(τ∣θ)≈N1i=1∑NR(τ(i))(2)
其中NNN表示进行足够多的模拟次数。
因为上述公式中,一般来说,可以认为所有的游戏状态是无穷多个,只能通过足够多的模拟次数来近似求解。
通过Gradient Descent
进行Actor的参数优化。优化的方式为:
θ∗=argmaxθRˉθ
\theta^{*}=\mathop{argmax}\limits_{\theta}\bar{R}_{\theta}
θ∗=θargmaxRˉθ
那么初始化随机所有的参数为θ(0)\theta^{(0)}θ(0),每次进行如下的迭代:
θ(i)=θ(i−1)+η∇Rˉθ(i−1)
\theta^{(i)}=\theta^{(i-1)}+\eta \nabla \bar{R}_{\theta^{(i-1)}}
θ(i)=θ(i−1)+η∇Rˉθ(i−1)
其中,η\etaη是学习速率。对公式中的∇Rˉθ(i−1)\nabla \bar{R}_{\theta^{(i-1)}}∇Rˉθ(i−1)进行展开,得到:
(3)∇Rˉθ=∇∑τR(τ)P(τ∣θ)=∑τR(τ)∇P(τ∣θ)
\nabla \bar{R}_{\theta} =\nabla\sum_{\tau}R(\tau) P(\tau|\theta)=\sum_{\tau}R(\tau)\nabla P(\tau|\theta) \tag{3}
∇Rˉθ=∇τ∑R(τ)P(τ∣θ)=τ∑R(τ)∇P(τ∣θ)(3)
注意,R(τ)R(\tau)R(τ)这个是固定的,与Actor的参数θ\thetaθ无关。
因为有
d(logf(x))dx=1f(x)df(x)dx
\frac{d(\log f(x))}{dx}=\frac{1}{f(x)}\frac{df(x)}{dx}
dxd(logf(x))=f(x)1dxdf(x)
那么,(3)(3)(3)公式可以写成
(4)∇Rˉθ=∑τR(τ)P(τ∣θ)∇P(τ∣θ)P(τ∣θ)=∑τR(τ)P(τ∣θ)∇logP(τ∣θ)≈1N∑i=1NR(τ(i))∇logP(τ(i)∣θ)
\nabla{\bar{R}_{\theta}}=\sum_{\tau} R(\tau)P(\tau|\theta)\frac{\nabla P(\tau|\theta)}{P(\tau|\theta)} =
\sum_{\tau}R(\tau)P(\tau|\theta)\nabla\log P(\tau|\theta)
\approx\frac{1}{N}\sum_{i=1}^{N}R(\tau^{(i)})\nabla\log P(\tau^{(i)}|\theta) \tag{4}
∇Rˉθ=τ∑R(τ)P(τ∣θ)P(τ∣θ)∇P(τ∣θ)=τ∑R(τ)P(τ∣θ)∇logP(τ∣θ)≈N1i=1∑NR(τ(i))∇logP(τ(i)∣θ)(4)
在根据概率论的乘法公式和τ\tauτ过程的意义,又可以得出
P(τ∣θ)=P(s1)P(a1∣s1,θ)P(r1,s2∣s1,a1)P(a2∣s2,a1)P(r2,s3∣s2,a2)⋯
P(\tau|\theta)=P(s_1)P(a_1|s_1,\theta)P(r_1,s_2|s_1,a_1)P(a_2|s_2,a_1)P(r_2,s_3|s_2,a_2)\cdots
P(τ∣θ)=P(s1)P(a1∣s1,θ)P(r1,s2∣s1,a1)P(a2∣s2,a1)P(r2,s3∣s2,a2)⋯
那么上式可以写成
(5)P(τ∣θ)=P(s1)∏t=1TP(at∣st,θ)P(rt,st+1∣st,at)
P(\tau|\theta)=P(s_1)\prod_{t=1}^{T}P(a_t|s_t,\theta)P(r_t,s_{t+1}|s_{t},a_t) \tag{5}
P(τ∣θ)=P(s1)t=1∏TP(at∣st,θ)P(rt,st+1∣st,at)(5)
符号说明:
- P(at∣st,θ)P(a_t|s_t,\theta)P(at∣st,θ):在θ\thetaθ参数、sts_tst环境下,采取ata_tat的概率。这一点取决于Actor。
- P(rt,st+1∣st,at)P(r_t, s_{t+1}|s_{t},a_t)P(rt,st+1∣st,at):sts_tst环境下采取行动ata_tat获得奖励rtr_trt的条件下,到达环境st+1s_{t+1}st+1的概率。这一点和Actor无关,只和环境有关系,所以对Actor参数θ\thetaθ 微分的时候结果是0 !!!
又因为
logP(τ∣θ)=logP(s1)+∑t=1T[logP(at∣st,θ)+logP(rt,st+1∣st,at)]
\log P(\tau|\theta)=\log P(s_1)+\sum_{t=1}^{T}\left[\log P(a_t|s_t, \theta)+\log P(r_t,s_{t+1}|s_{t},a_t) \right]
logP(τ∣θ)=logP(s1)+t=1∑T[logP(at∣st,θ)+logP(rt,st+1∣st,at)]
所以有
(6)∇logP(τ∣θ)=∑t=1TlogP(at∣st,θ)
\nabla \log{P(\tau|\theta)}=\sum_{t=1}^{T}\log{P(a_t|s_t,\theta)} \tag{6}
∇logP(τ∣θ)=t=1∑TlogP(at∣st,θ)(6)
结合公式(4)(4)(4)和(6)(6)(6),能推导出平均奖励的更新梯度公式:
(7)∇Rˉθ≈1N∑i=1NR(τ(i))∇logP(τ(i)∣θ)=1N∑i=1N[R(τ(i))∑t=1TlogP(at(i)∣st(i),θ)]=1N∑i=1N∑t=1T[R(τ(i))logP(at(i)∣st(i),θ)]
\nabla\bar{R}_{\theta}\approx\frac{1}{N}\sum_{i=1}^{N}R(\tau^{(i)})\nabla \log{P(\tau^{(i)}|\theta)}\\=\frac{1}{N}\sum_{i=1}^{N}\left[R(\tau^{(i)})\sum_{t=1}^{T}\log{P(a_{t}^{(i)}|s_{t}^{(i)},\theta)} \right] \\=\frac{1}{N}\sum_{i=1}^{N}\sum_{t=1}^{T}\left[R(\tau^{(i)})\log{P(a_{t}^{(i)}|s_{t}^{(i)},\theta)} \right] \tag{7}
∇Rˉθ≈N1i=1∑NR(τ(i))∇logP(τ(i)∣θ)=N1i=1∑N[R(τ(i))t=1∑TlogP(at(i)∣st(i),θ)]=N1i=1∑Nt=1∑T[R(τ(i))logP(at(i)∣st(i),θ)](7)
如果某个行动没有被模拟到,那么进行梯度更新的时候,这个行动在下次模拟过程中没有被sample的概率将减小。因为可以这么理解,所有可能行动的概率和是1,如果某些行动被模拟到了,说明概率比较高,梯度更新的时候,会增加它们的概率值,对于那些没有被模拟到的,概率将越来越小。修正方式也很容易,把奖励减去常数bbb即可,给出公式:
(8)∇Rˉθ=1N∑i=1N∑t=1T[(R(τ(i))−b)logP(at(i)∣st(i),θ)]
\nabla \bar{R}_{\theta}=\frac{1}{N}\sum_{i=1}^{N}\sum_{t=1}^{T}\left[\left(R(\tau^{(i)} )-b\right)\log{P(a_{t}^{(i)}|s_{t}^{(i)},\theta)} \right] \tag{8}
∇Rˉθ=N1i=1∑Nt=1∑T[(R(τ(i))−b)logP(at(i)∣st(i),θ)](8)