背景
对于DRL中面对的exploration-exploition问题,目前广泛使用以下两种方法:
- ε-greedy法 通常应用于DQN类算法中,使agent以ε的概率采取随机行动,通常会在训练开始时设置ϵ为1,然后慢慢衰减
- 熵正则化(entropy regularisation) 通常用于策略梯度算法中,通过将策略π的熵加入到损失函数中,算法能够生成更为均匀平滑的策略
NoisyNet
相比较上述两种方法将exploration分别使用启发式搜索以及损失函数的方式引入算法,NoisyNet算法通过将高斯噪声添加到网络中最后的完全连接层来实现exploration的引入。
相比于普通的神经网络,NoisyNet的权重和偏置都会受到噪音的影响。设其数学表示为y=fθ(x),其中θ为受噪声影响的参数,则θ可以被定义为:
θ= def μ+Σ⊙ε
其中ζ= def (μ,Σ)为可学习的向量,ε为均值为0的高斯噪声,Σ为噪声的权重,⊙表示点乘。NoisyNet的损失函数可以表示为:
Lˉ(ζ)= def E[L(θ)]
也就是说,在优化的时候,只对ζ中的参数计算梯度,而不对噪声进行优化;但是在计算损失函数的时候,则考虑到噪声的影响,使用θ作为参数。
举个例子,考虑线性模型y=wx+b,未经过噪声扰动时,其参数为w,b;经过噪声扰动后,式子变成:
y= def (μw+σw⊙εw)x+μb+σb⊙εb
其中μw,σw,μb以及σb是可以调整的,而εw以及εb是不可以调整的。
引入噪声的方法
Noisy Networks for Exploration 一文中提供了。两种引入噪声的方法。
Independent Gaussian noise 指的是给每一个权重都添加一个独立的噪声,并且具有模型自己学习的μ和σ。假设一个具有p个神经元输入,q个神经元输出的全连接层,在这种情况下,需要的随机噪声变量个数为(pq+q)个。
Factorised Gaussian noise 指的是分配给每一个神经元一个独立的高斯噪声,每个神经元具有独立的μ和σ。具体到每一个权重,权重wij的噪声为
εi,jw=f(εi)f(εj)
偏置bj的噪声为
εjb=f(εj)
其中f可以使用f(x)=sgn(x)∣x∣
计算
根据损失函数,可以定义梯度为
∇Lˉ(ζ)=∇E[L(θ)]=E[∇μ,ΣL(μ+Σ⊙ε)]
使用蒙特卡洛法估计有
∇Lˉ(ζ)≈∇μ,ΣL(μ+Σ⊙ξ)
在DQN中存在Online network以及Target Network,其参数分别为θ以及θ′。当使用Noisy Network时,就变成了Online NetworkQ(s,a,ε;ζ)以及Target NetworkQ(s,a,ε′;ζ−)。使用蒙特卡洛法的损失函数为
Lˉ(ζ)=E[E(s,a,r,y)∼D[r+γb∈AmaxQ(s′,b,ε′;ζ−)−Q(s,a,ε;ζ)]2]
其中ε以及ε′为分别采样的噪声。作者建议在DQN中,每一个新的batch重新采样一次噪声。
具体流程如下:
Noisy Network也能应用在A3C中,具体参考 Noisy Networks for Exploration 。