什么是优势函数
优势函数表达在状态s下,某动作a相对于平均而言的优势。
从数量关系来看,就是随机变量相对均值的偏差。
使用优势函数是深度强化学习极其重要的一种策略,尤其对于基于policy的学习。
定义如下:
归一化、激活函数等学习问题
以下是常见的激活函数,梯度学习时,可以发现:
- Sigmoid一类的激活函数,x在两边时,函数趋于饱和;
- 在0附近曲线几乎线性,学习速率最大;
- Relu一类的激活函数,函数随x无限增大,学习会变得响应过敏感,难以控制。
总之,输入x不能过大,否则学习会变得效率低,以至于学不到最优。
对于Sigmoid,归一化是将输入标准化到均值为0,方差为1的标准正态分布上,提高学习效率。
注意不必纠结归一化、标准化具体表述细节上,我们这里用归一化表达一种数据scale思想:不改变数据本质,将数据scale到可控范围而提高学习效率的手段。
为什么要使用优势函数
优势函数其实就是将Q-Value“归一化”到Value baseline上,如上讨论的,这样有助于提高学习效率,同时使学习更加稳定;
同时经验表明,优势函数也有助于减小方差,而方差过大导致过拟合的重要因素。
常见的优势函数
A3C、PPO的优势函数如下:
VPG、TRPO等的优势函数也可以选择以上估计方式;
这都常见的近似方式是优势函数定义的有偏估计(but not too biased),但可以接受。
优势函数的一般估计(GAE)
GAE借鉴了TD(λ)思想,注意这里处理的是优势函数而不是Value Function,通过调整λ,可以得到不同的近似估计。
大的思想一是Q(s,a)的近似,二是V(s)的表达,二者差表征优势函数A(s, a)。
两个特例是:
要特别注意,TD Residual是优势函数的一个不错的估计,但它们是两个概念,这很容易混淆,时序差分主要表达的是一种微分思想,优势函数描述的是一个相对量。