Noisy Network

Tuesday, March 2, 2021

背景

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

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

NoisyNet

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

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

\[ \theta \stackrel{\text { def }}{=} \mu+\Sigma \odot \varepsilon \]

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

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

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

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

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

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

引入噪声的方法

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

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

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

\[ \varepsilon_{i, j}^{w}=f\left(\varepsilon_{i}\right) f\left(\varepsilon_{j}\right) \]

偏置\(b_{j}\)的噪声为

\[ \varepsilon_{j}^{b}=f\left(\varepsilon_{j}\right) \]

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

计算

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

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

使用蒙特卡洛法估计有

\[ \nabla \bar{L}(\zeta) \approx \nabla_{\mu, \Sigma} L(\mu+\Sigma \odot \xi) \]

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

\[ \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