文章摘要:在这篇论文中,作者提出Hinton团队提出的Dropout使神经元按一定概率失活的算法只是一种服从二项式分布的特例。使用一种更为古老的算法SDR能实现广义上的Dropout,取得更好的效果。作者用神经元权重的连续分布替换了原先的01分布。SDR算法定义神经网络中的每个权值为一个服从均值为µwij,方差为σwij的随机变量,每次网络权值从该分布中随机取样来做前向计算,从而形成指数级别个潜在网络。这两个参数通过损失梯度进行自适应的更新,实验证明DenseNet网络使用该方法在CIFAR数据集上测试精度比Dropout高17%,并且收敛速度更快。
Dropout方法:
Dropout方法规定神经元服从一个概率为P的Bernoulli分布,神经元以一定概率P失活,在前向传播中输出为0并且在反向传播中不更新权重。在测试时以pwij的权值进行计算。这种方法相当于训练了指数级别个规模更小的子网络用于预测并取其平均值。这种方法通过减少模型的设定偏差来避免过拟合,从而从根本上避免局部最优解。实验表明,在大量监督学习任务中采用Dropout能减少大约50%的误差。但是作者提出SDR算法是一种更广义的Dropout方法,SDR在原则上允许权值服从任意随机分布(比如(gamma,beta, binomial等),而Dropout只是一种服从参数为(np,np(1-p))的二项式分布的特例,在CIFAR数据集上,加入高斯噪声的SDR就有着更好的表现。
SDR的提出:
人类的神经元中就存在噪声,对于同样的刺激会做出不同的反应,作者就是从中得到的启示。显然任何光滑的神经网络函数都是在大量的噪声中平均而来的。这里作者假设网络的权值为服从均值为µwij,方差为σwij的高斯随机变量作为一种广义上的模式。
与Dropout一样,在训练的过程中SDR也会产生出指数规模个共享权值的潜在网络,不同的是SDR根据损失梯度自适应地更新这两个参数。与Dropout不同,SDR通过对相同刺激接受多个响应假设并保留预测历史,而不是直接使神经元被隐藏起来。这种方法为每个权值实现了局部梯度依赖的模拟退火,在搜索中能避免陷入较差的局部最小值,但同时可能远离较好的局部最小值。局部噪声注入的结果对网络收敛具有全局性的影响,可以通过模型平均来消除误差表面上的沟壑,从而使更快、更稳定的收敛到更好的局部极小值。
SDR的更新方法:
在开始的时候,SDR通过随机采样产生wij,权值通过下面的规则给出:。
均值的更新:。
方差的更新:。
为了避免随着梯度的下降造成模型的不稳定性加大,我们为方差提供一个指数级的衰减。此规则强制方差随时间收敛到零,使平均权重值为一个固定点,将所有网络聚集到所有样本上:。
Dropout是一种设定参数的SDR
作者认为Dropout与SDR的差别在于,SDR通过梯度下降调整权重的随机分布,而Dropout固定了权重分布,使其服从(np, np(1 − p))的二项式分布。理论上SDR比Dropout具有更加局部的权值共享,从而创建一个更为粗糙的网络预测历史。由此看来,SDR是一种广义的Dropout,在随机搜索任务中显然比设定参数的Dropout更为高效。
实验过程:
作者使用了 DenseNet-40, DenseNet-100, and DenseNet-BC 250网络,在CIFAR-10 and CIFAR-100数据集上进行训练。设定Dropout的丢弃几率p=0.2,设定SDR的学习率为α = 0.25, β = 0.05, ζ = 0.7。
该结果表明,与Dropout比较,SDR在小样本上减小了12%-14%的误差,在大样本上减小了17%的误差。
该结果则表明,与Dropout相比,SDR在训练集上的训练损失大约降低了80%。
最后一个结果表明,在CIFAR-100数据集上,SDR只用了35次迭代就达到了Dropout迭代100次所达到的测试误差,从而说明了SDR有着更快的收敛速度。