目录
带有Baseline的策略梯度
策略梯度方法中常用Baseline来降低方差,可以让收敛更快
数学推导
定义Baseline函数b,它与变量A是完全独立的,则根据之前推导的公式,可以得到如下推论:
由此得到性质:如果b独立于动作A则b·f(A)关于A求期望的值为0.则前文的策略梯度求解公式就可以加入Baseline变形为:
总结:如果Baseline函数b与动作A无关,则策略梯度就可以表示为:
b不会影响期望的求解,但是会影响蒙特卡洛近似的进行。
蒙特卡洛近似(With Baseline)
将梯度算式中的期望部分记为g(At),依据策略函数π(·|st;θ)随机选择动作at,并可以计算出g(at),g(at)就可以最为关于策略梯度的一个无偏估计
实际训练网络时,就可以使用g(at)来做梯度上升。在看g(at)的表达式,因为b与A完全独立,因此b的加入不会 影响期望值,但是b的加入会影响到具体的g(at)值,选择合适的b,可以使得g(at)有更小的方差(越接近Qπ)
Reinforce With Baseline
Reinforce:使用观测到的回报ut来近似Qπ
取上文中的b为Vπ(st),并用神经网络函数近似Qπ,得到如下关系式:
一共使用了三次近似(包含两次蒙特卡洛)
因此需要两个网络,一个用来控制Agent,也即策略网络,另一个用来训练价值,也即价值网络。
使用Reinforce算法训练:
策略网络
价值网络Value Network:
更新通过策略梯度更新策略网络,使用梯度上升思想:
更新价值网络:因为公式中是使用v(st,w)来近似的ut。因此希望通过学习过程的进行,两者的误差逐渐减小,便是一个梯度下降的过程。
Advantage Actor-Critic(A2C)
将Baseline应用于AC网络:
这与原来的AC网络结构完全一致,关键在于如何训练神经网络。
A2C的训练:
- 观测到一个transition:
- 计算TDtarget:
- 计算TD error:
- 分别更新策略网络与价值网络:
Reinforce与A2C对比
A2C与Reinforce虽然使用的神经网络基本一致,但是价值网络的功能有所区别。A2C中的价值网络也即Critic角色,用来评价动作价值的好坏。而Reinforce中的价值网络仅仅是一个Baseline而已,其唯一用途就是降低随机梯度的方差。
回顾Reinforce with Baseline的计算过程:
其余A2C的最大不同之处是,Reinforce方法是使用了一整个过程中的真实回报ut来计算误差,而A2C方法使用的则是 TD Error,部分基于价值函数,部分基于环境的真实回报。
A2C通常使用多步TDTarget(With Bootstrapping):
Reinforce则使用观测 到的回报:
ut可以理解为yt的一种特例,也即Reinforce也是A2C的一种特例。