一、策略迭代
如果使用值函数重新定义强化学习的目标,我们可以得到:RL就是找到最优的策略,使得每一个状态的价值最大化。相当于求解
π ∗ = a r g m a x a q π ∗ ( s , a ) \pi^{*}=argmax_{a}q_{\pi^{*}}(s,a) π∗=argmaxaqπ∗(s,a)
而对于每一个状态对应的行为,我们希望找到使其价值最大化的行为:
a ∗ = a r g m a x a q π ∗ ( s , a ) a^{*}=argmax_{a}q_{\pi^{*}}(s, a) a∗=argmaxaqπ∗(s,a)
可以看出为了求出最终的结果,我们需要同时更新交织在一起的策略与价值。这个问题有一个解决算法是 策略迭代法。
只要能得到精确的值函数,就可以使用贝尔曼公式求出最优策略,也就是说最优策略满足上面提到的公式2。
二、策略梯度
策略梯度法不采用迂回的方式更新策略,而是直接计算策略可能更新的方向。
回到问题的本质,RL的目标是最大化长期回报期望,于是目标可以写成如下形式:
π ∗ = argmax π E τ ∼ π ( τ ) [ r ( τ ) ] \pi^{*}=\operatorname{argmax}_{\pi} E_{\boldsymbol{\tau} \sim \pi(\boldsymbol{\tau})}[r(\boldsymbol{\tau})] π∗=argmaxπEτ∼π(τ)[r(τ)]
其中 τ \tau τ 表示使用策略进行交互得到的一条轨迹, r ( τ ) r(\tau) r(τ) 表示这条轨迹的总体回报。由于值函数也是一个函数,我们可以将之表示为策略参数的函数,然后就可以通过求导的方式,使参数沿着梯度上升的方向更新,也就是提升策略了。这就是利用梯度的方法进行策略优化。
算法推导
将上述目标函数用 J ( θ ) J(\theta) J(θ) 表示,将轨迹的期望回报展开,可以得到
J ( θ ) = E τ ∼ π θ ( τ ) [ r ( τ ) ] = ∫ τ ∼ π θ ( τ ) π θ ( τ ) r ( τ ) d τ J(\theta)=E_{\boldsymbol{\tau} \sim \pi_{\theta}(\tau)}[r(\boldsymbol{\tau})]=\int_{\boldsymbol{\tau} \sim \pi_{\theta}(\tau)} \pi_{\theta}(\boldsymbol{\tau}) r(\boldsymbol{\tau}) \mathrm{d} \boldsymbol{\tau} J(θ)=Eτ∼πθ(τ)[r(τ)]=∫τ∼πθ(τ)πθ(τ)r(τ)dτ
由于策略函数通常是定义良好的函数,所以求导运算可以和积分运算互换,这样可以得到
∇ θ J ( θ ) = ∫ τ ∼ π θ ( τ ) ∇ θ π θ ( τ