摘要
放了防止过拟合,人们设计出了贝叶斯网络,这种结构因为参数不是确定的,而是每次都是基于高斯分布随机生成一个数作为参数。为了减少高斯分布采样的小概率事件影响结果,所以每次要生成多个数字,每个数字根据节点的输出x计算y,最后求多个y的平均值。这样一来每个连接都要计算多次输出,整个网络的计算量会非常大。本文探讨了利用空间上的平滑防止过拟合的能力,从经验上得出结论,空间平滑能很好地提高CNN的鲁棒性和准确率,降低不确定性,达到提高性能的目的。
方法
这是示意图,最左边的为传统BNN,根据某节点输出,多次在高斯分布中根据平均值和方差进行采样得到权值,计算不同权值对应的不同的输出,最后求这些输出的平均值。
中间的为其他文章提出的的时间平滑法,用之前几次的输出与本次向前传播的输出,计算各自的最终输出,然后加权求和,那个派就是重要程度。
最右边为本文做法,每个像素点根据周围的点计算一个新的值,乘以重要程度派,即可达到平滑化的效果。最简单也最典型的例子就是平均池化。
方法
在CNN中,一个卷积网络总是分为几个阶段,每个阶段内部大同小异,经过一个阶段,特征图长宽减半,通道数翻倍。本文方法就是在传统的CNN的每一阶段之间加上图中的两个函数进行处理,达到平滑化的目的。
平滑分为两步,一步是把像素点数值转化为概率,一步是通过周围的像素调整自己的数值达到模糊的效果。
求概率
因为直接使用tanh(z)虽然能求出概率,但可能面临梯度消失的问题,所以本文用下面公式将数值转化为概率。
т是温度参数,是一个人为设定的超参数。为1时,式子变成最原始的tanh,当趋于无穷时,变为恒等映射,即tanht(z)=z
因为原式子可以视为
将z视为常数,z/т视为整体x,当т无穷大,x趋近于0,用洛必达可知结果为1,所以原式变为y=x的恒等映射。之后再加上一个ReLu激活函数,即完成了概率化操作。
而模糊操作就是平均池化,卷积核大小为2*2,步长为1。
实验
因为这是一篇从经验上证明空间平滑有用的文章,又是证明又是经验性的,所以里面充满了实验,许多分析也是先实验出了结果再分析为何可行。所以我自作主张,将实验分为两种,证明性实验和探究性实验,前者证明本文提出的方法可行有效,后者探究这种方法有效的原因可能是什么。
证明性实验
首先是最直观的结果,绿色的为传统的卷积神经网络,红色的为MC dropout,普通的dropout只在训练时生效,而MC dropout会在预测时也生效,防止过拟合。实心的点为加了本文smooth方法的结果。可以看出,MC dropout能降低不确定性(NLL),提高准确率,而任何一种方法加了smooth后可以进一步达到该效果。
为了模拟BNN多次计算的效果,本文还实验了在集合学习上,加入MC dropout和smooth的效果。集合学习是训练多个模型,然后结合这些模型的输出得出结果。从图中可以看出,使用了smooth的方法只需要集合两三个模型,就比得上单纯使用MC dropout的50个模型集合的结果。
探究性实验
第一个探究性实验是特征图变化幅度
两个图的横轴是指各个阶段,c为普通的卷积阶段,s为smooth模块,纵轴是特征图相比一开始的特征图的变化程度。左图为多个网络的输出平均后的结果,右图为单个网络的结果。
ensembles有效的原因之一,就是集成了多个特征图,减少了特征图的波动。而由上图可知,Smooth操作也可以减少特征图变化,达到了集成多张特征图的效果。
第二个实验是傅里叶分析
众所周知,傅里叶变换的结果是一个矩阵,大小等于原图像,每个点的实际值为一个复数,但可视化傅里叶结果时,每个点用幅度,即根号下的实部平方与虚部平方之和,作为灰度。图像中央为低频,越往外为高频。
上图中第一幅图是演示二三图的横轴代表的是什么样的区域,第二幅图是不同方法的不同频率的幅度,可以看到MC dropout会让高频信号提高,但smooth操作会使高频信号降低。第三幅图则是加了不同频率噪音后的准确率变化,可见不加smooth操作的方法受高频噪音影响巨大,而smooth操作可以滤掉高频噪音,提高准确率。
实验三是可视化loss landscape
我们总说要选择一个合适的损失函数,就是要让loss landscape规则。如果loss landscape的边缘平整,没有零碎的上下起伏的地区,就可以一直向着最优处不断优化,不断逼近最优解,反之就会因为各种零碎的极小值点,导致网络参数陷入某一局部最优解,甚至在一个个山头之间跳动。
而上图可以看出,直接使用全连接的分类器的loss landscape混乱不堪,使用了全局平均池化后边界平整了许多,而加上了smooth操作的GAP分类器则更加规则了。
由此可见,smooth操作还可以让损失函数随着参数的改变更加单调有规则,能更加快速地逼近最优解。