Noisy Network

Tuesday, March 2, 2021

背景

对于DRL中面对的exploration-exploition问题,目前广泛使用以下两种方法:

  • ε-greedy法 通常应用于DQN类算法中,使agent以εε的概率采取随机行动,通常会在训练开始时设置ϵ\epsilon为1,然后慢慢衰减
  • 熵正则化(entropy regularisation) 通常用于策略梯度算法中,通过将策略π\pi的熵加入到损失函数中,算法能够生成更为均匀平滑的策略

NoisyNet

相比较上述两种方法将exploration分别使用启发式搜索以及损失函数的方式引入算法,NoisyNet算法通过将高斯噪声添加到网络中最后的完全连接层来实现exploration的引入。

相比于普通的神经网络,NoisyNet的权重和偏置都会受到噪音的影响。设其数学表示为y=fθ(x)y=f_{\theta}(x),其中θ\theta为受噪声影响的参数,则θ\theta可以被定义为:

θ= def μ+Σε \theta \stackrel{\text { def }}{=} \mu+\Sigma \odot \varepsilon

其中ζ= def (μ,Σ)\zeta \stackrel{\text { def }}{=}(\mu, \Sigma)为可学习的向量,ε\varepsilon为均值为0的高斯噪声,Σ\Sigma为噪声的权重,\odot表示点乘。NoisyNet的损失函数可以表示为:

Lˉ(ζ)= def E[L(θ)] \bar{L}(\zeta) \stackrel{\text { def }}{=} \mathbb{E}[L(\theta)]

也就是说,在优化的时候,只对ζ\zeta中的参数计算梯度,而不对噪声进行优化;但是在计算损失函数的时候,则考虑到噪声的影响,使用θ\theta作为参数。

举个例子,考虑线性模型y=wx+by=w x+b,未经过噪声扰动时,其参数为wwbb;经过噪声扰动后,式子变成:

y= def (μw+σwεw)x+μb+σbεb y \stackrel{\text { def }}{=}\left(\mu^{w}+\sigma^{w} \odot \varepsilon^{w}\right) x+\mu^{b}+\sigma^{b} \odot \varepsilon^{b}

其中μw\mu^{w},σw\sigma^{w},μb\mu^{b}以及σb\sigma^{b}是可以调整的,而εw\varepsilon^{w}以及εb\varepsilon^{b}是不可以调整的。

引入噪声的方法

Noisy Networks for Exploration 一文中提供了。两种引入噪声的方法。

  • Independent Gaussian noise 指的是给每一个权重都添加一个独立的噪声,并且具有模型自己学习的μ\muσ\sigma。假设一个具有p个神经元输入,q个神经元输出的全连接层,在这种情况下,需要的随机噪声变量个数为(pq+q)个。

  • Factorised Gaussian noise 指的是分配给每一个神经元一个独立的高斯噪声,每个神经元具有独立的μ\muσ\sigma。具体到每一个权重,权重wijw_{i j}的噪声为

εi,jw=f(εi)f(εj) \varepsilon_{i, j}^{w}=f\left(\varepsilon_{i}\right) f\left(\varepsilon_{j}\right)

偏置bjb_{j}的噪声为

εjb=f(εj) \varepsilon_{j}^{b}=f\left(\varepsilon_{j}\right)

其中ff可以使用f(x)=sgn(x)xf(x)=\operatorname{sgn}(x) \sqrt{|x|}

计算

根据损失函数,可以定义梯度为

Lˉ(ζ)=E[L(θ)]=E[μ,ΣL(μ+Σε)] \nabla \bar{L}(\zeta)=\nabla \mathbb{E}[L(\theta)]=\mathbb{E}\left[\nabla_{\mu, \Sigma} L(\mu+\Sigma \odot \varepsilon)\right]

使用蒙特卡洛法估计有

Lˉ(ζ)μ,ΣL(μ+Σξ) \nabla \bar{L}(\zeta) \approx \nabla_{\mu, \Sigma} L(\mu+\Sigma \odot \xi)

在DQN中存在Online network以及Target Network,其参数分别为θ\theta以及θ\theta'。当使用Noisy Network时,就变成了Online NetworkQ(s,a,ε;ζ)Q(s, a, \varepsilon ; \zeta)以及Target NetworkQ(s,a,ε;ζ)Q\left(s, a, \varepsilon^{\prime} ; \zeta^{-}\right)。使用蒙特卡洛法的损失函数为

Lˉ(ζ)=E[E(s,a,r,y)D[r+γmaxbAQ(s,b,ε;ζ)Q(s,a,ε;ζ)]2] \bar{L}(\zeta)=\mathbb{E}\left[\mathbb{E}_{(s, a, r, y) \sim D}\left[r+\gamma \max _{b \in A} Q\left(s', b, \varepsilon^{\prime} ; \zeta^{-}\right)-Q(s, a, \varepsilon ; \zeta)\right]^{2}\right]

其中ε\varepsilon以及ε\varepsilon'为分别采样的噪声。作者建议在DQN中,每一个新的batch重新采样一次噪声。

具体流程如下:

png

Noisy Network也能应用在A3C中,具体参考 Noisy Networks for Exploration

强化学习

Actor-Critic

Policy Gradient