Policy-based
将神经网络作为一个Actor,输入是观测observation,表示形式是一个向量或一个矩阵。输出是每个行为对应的概率,类似于分类问题中的判断类别,会对应每个类别有个概率,如下如所示:

考虑一个episode τ={s1,a1,r1,s2,a2,r2,...,sT,aT,rT,}。对于参数为θ的Actor,产生这个episode的概率为:
p(τ∣θ)=p(s1)p(a1∣s1,θ)p(r1,s2∣s1,a1)p(a2∣s2,θ)p(r2,s3∣s2,a2)...=p(s1)t=1∏Tnp(at∣st,θ)p(rt,st+1∣st,at) (1)
其中p(s1)和p(rt,st+1∣st,at)部分不是由actor决定的,p(at∣st,θ)是actor对于属于观测st所预测的结果为at的概率。对于这个τ,产生的奖励值为R(τ)=∑t=1Tnrt
使用actor玩N次游戏,也就是在p(τ∣θ)分布下N次抽样τ,得到N个episode {τ1,τ2,...,τN},得到的奖励的期望为:
Rˉθ=τ∑R(τ)p(τ∣θ)
我们的优化目标是最大化期望奖励:
θ∗=argθmaxRˉθ
求解梯度:
∇Rˉθ=τ∑R(τ)∇p(τ∣θ)=τ∑R(τ)p(τ∣θ)p(τ∣θ)∇p(τ∣θ)=τ∑R(τ)p(τ∣θ)∇logp(τ∣θ)≈N1i=1∑NR(τn)∇logp(τn∣θ)=N1n=1∑NR(τn)∇log[p(s1n)t=1∏Tp(atn∣stn,θ)p(rtn,st+1n∣stn,atn)]=N1n=1∑NR(τn)t=1∑T∇logp(atn∣stn,θ) #ignore the term not related θ=N1n=1∑Nt=1∑TR(τn)∇logp(atn∣stn,θ)
使用梯度提升更新参数:θ←θ+ηRθˉ
Actor参数θ的优化可以从分类的角度去优化。
将每一个τ分解产生多个(s,a),每一个(s,a)都是一个训练数据。


最大化优化交叉熵:max∑i=13yi^logyi
对于一个数据(s,a=left),对应的交叉熵为:logp(a=left∣s)
此时对于N次τ,对应的梯度为:
N1n=1∑Nt=1∑Tn∇logp(atn∣stn,θ)
每一个训练数据要通过R(τ)进行加权,因为奖励大的数据占的权重也大,经过加权之后的误差与上面同奖励得到的梯度一致了
N1n=1∑Nt=1∑TnR(τn)∇logp(atn∣stn,θ)
R(τ)通常都是正数,为了防止某些动作没有被抽样到,减去一个噪声常数b,确保模型能够发生各种行为:
N1n=1∑Nt=1∑Tn(R(τn)−b)∇logp(atn∣stn,θ)
如果一开始模型抽样到的所有行为都会产生了正反馈调节,那么这些行为后续出现的概率将增大,其他行为的概率将会减小,进而使得接下来的更新更偏向于上一轮抽样到的样本。减去一个噪声常数确保了Actor对一些奖励小的行为进行抑制,确保大的奖励才能更新,消除了不公平现象。