当前位置: 代码迷 >> 综合 >> [论文笔记] [2013] [ICML] Maxout Networks
  详细解决方案

[论文笔记] [2013] [ICML] Maxout Networks

热度:35   发布时间:2023-11-18 04:29:35.0

在11年 dropout 的提出,其效果引起了各路学者的注意,一些试图改进提升 dropout 的工作也随着而来。这篇的作者觉得 dropout 太随便了(在任何网络中都能使用),认为可以专门设计一个模型配合 dropout 使用,提升 dropout 作为 model averaging(就是做ensemble,类似于bagging这些) 技术的能力,得到 best performance。

Review of dropout

dropout training 类似于集成学习中的 bagging,都是许多模型训练在不同的数据子集中。但 dropout training 不同于 bagging 的地方在于,dropout training 中的每个模型只训练一次,并且模型是参数共享的(每次训练,mask都会改变)。在inference阶段,bagging是对所有模型的预测结果做算术平均(arithmetric mean);而带 dropout 的网络中 nnn 个神经元,则存在 2n2^n2n 个子模型。如果都要预测并做算术平均无疑是不太现实的,则有了在预测时将网络的参数 WWW 除以2,做一次预测就能近似于 2n2^n2n 个子模型做 averaging,这种方式称为 weight scaling inference rule。而这种方式是做了所有子模型的几何平均(geometric averaging),而不是算术平均。

Model averaging

考虑 inference 阶段为 bagging 的情况,每个模型 iii 产生一个概率分布 p(i)(y∣x)p^{(i)}(y|\pmb{x})p(i)(yxxx),那么这些模型做 ensemble 预测,可以通过所有分布的算术平均得到:
1k∑i=1kp(i)(y∣x)(1)\frac{1}{k} \sum_{i=1}^{k}{p^{(i)}(y | \pmb{x})} \tag{1} k1?i=1k?p(i)(yxxx)(1)
考虑 inference 阶段为 dropout 的情况,每个由 mask vector u\pmb{u}uuu 确定的子模型的概率分布为 p(y∣x,u)p(y|\pmb{x},\pmb{u})p(yxxx,uuu),则所有 masks (即所有子模型)的算术平均为:
∑up(u)p(y∣x,u)(2)\sum_{\pmb{u}}{p(\pmb{u})}p(y| \pmb{x},\pmb{u}) \tag{2} uuu?p(uuu)p(yxxx,uuu)(2)
其中,p(u)p(\pmb{u})p(uuu) 是在 training 阶段采样 u\pmb{u}uuu 的概率分布。关于 u\pmb{u}uuu 的采样,有 2n2^n2n 种可能,也就意味着(2)式的求和项中有 2n2^n2n 项,这无疑是不可行的。于是有一种更好的方式,能只做一次前向传播近似全部子模型的ensemble。此时,做 ensemble 不是近似算术平均,而是几何平均。先考虑(2)的计算改为几何平均计算,如下式:
p~ensemble(y∣x)=∏up(y∣x,u)2d(3)\tilde{p}_{\mathrm{ensemble}}(y|\pmb{x}) = \sqrt[2^d]{\prod_{\pmb{u}}{p(y|\pmb{x},\pmb{u})}} \tag{3} p~?ensemble?(yxxx)=2duuu?p(yxxx,uuu) ?(3)
其中 ddd 为可能被 drop 掉的神经元的个数。此时得到的几何平均得到的结果是不能保证是一个概率分布(即各种可能的概率求和不为1),需要对其做 renormalize,得到:
pensemble(y∣x)=p~ensemble(y∣x)∑y′p~ensemble(y′∣x)(4)p_{\mathrm{ensemble}}(y|\pmb{x}) = \frac{\tilde{p}_{\mathrm{ensemble}}(y | \pmb{x})}{\sum_{y'}{\tilde{p}_{\mathrm{ensemble}}(y'|\pmb{x})}} \tag{4} pensemble?(yxxx)=y?p~?ensemble?(yxxx)p~?ensemble?(yxxx)?(4)
如果采用 dropout training,考虑最简单的形式,即一个softmax分类器:
p(y=y∣x)=softmax(WTx+b)p(\mathrm{y} = y|\pmb{x}) = \mathrm{softmax}(\pmb{W}^T\pmb{x} + \pmb{b}) p(y=yxxx)=softmax(WWWTxxx+bbb)
则可以得到:
p(y=y∣x,u)=softmax(WT(u⊙x)+b)(5)p(\mathrm{y}=y|\pmb{x}, \pmb{u}) = \mathrm{softmax}(\pmb{W}^T(\pmb{u} \odot \pmb{x}) + \pmb{b}) \tag{5} p(y=yxxx,uuu)=softmax(WWWT(uuuxxx)+bbb)(5)
其中 u\pmb{u}uuu 是 binary vector。将(5)式代入到(3)式,可得到:
p~ensemble(y=y∣x)=∏u∈{0,1}dp(y∣x,u)2d=∏u∈{0,1}dsoftmax(WT(x⊙u)+b)2d=∏u∈{0,1}dexp?(Wy,:T(x⊙u)+by)∑y′exp?(Wy′,:T(x⊙u)+by′)2d=∏u∈{0,1}dexp?(Wy,:T(x⊙u)+by)2d∏d∈{0,1}d∑y′exp?(Wy′,:T(x⊙u)+by′)2d∝∏u∈{0,1}dexp?(Wy,:T(x⊙u)+by)2d=exp?(12n∑d∈{0,1}nWy,:T(x⊙u)+by)=exp?(12Wy,:Tx+by)\begin{aligned} \tilde{p}_{\mathrm{ensemble}}(\mathrm{y} = y|\pmb{x}) &= \sqrt[2^d]{\prod_{\pmb{u} \in \{0, 1\}^d}{p(y|\pmb{x},\pmb{u})}} \\ &= \sqrt[2^d]{\prod_{\pmb{u} \in \{0, 1\}^d}{\mathrm{softmax}(\pmb{W}^T(\pmb{x} \odot \pmb{u}) + \pmb{b})}} \\ &= \sqrt[2^d]{\prod_{\pmb{u} \in \{0, 1\}^d}{\frac{\exp{(W_{y,:}^T(\pmb{x} \odot \pmb{u}) + b_y)}}{\sum_{y'}{\exp{(W_{y',:}^T(\pmb{x} \odot \pmb{u})+b_{y'})}}}}} \\ &= \frac{\sqrt[2^d]{\prod_{\pmb{u} \in \{0, 1\}^d}{\exp{(W_{y,:}^T(\pmb{x} \odot \pmb{u}) + b_y)}}}}{\sqrt[2^d]{\prod_{\pmb{d} \in \{0,1\}^d}{\sum_{y'}{\exp{(W_{y',:}^T(\pmb{x} \odot \pmb{u}) + b_{y'})}}}}} \\ &\propto \sqrt[2^d]{\prod_{\pmb{u} \in \{0, 1\}^d}{\exp{(W_{y,:}^T(\pmb{x} \odot \pmb{u}) + b_y)}}} \\ &= \exp{\left(\frac{1}{2^n}\sum_{d \in \{0, 1\}^n}{W_{y,:}^T(\pmb{x} \odot \pmb{u}) + b_y}\right)} \\ &= \exp{\left(\frac{1}{2}W_{y,:}^T \pmb{x} + b_y\right)} \end{aligned} p~?ensemble?(y=yxxx)?=2d?uuu{ 0,1}d?p(yxxx,uuu) ?=2d?uuu{ 0,1}d?softmax(WWWT(xxxuuu)+bbb) ?=2duuu{ 0,1}d?y?exp(Wy,:T?(xxxuuu)+by?)exp(Wy,:T?(xxxuuu)+by?)? ?=2dddd{ 0,1}d?y?exp(Wy,:T?(xxxuuu)+by?) ?2duuu{ 0,1}d?exp(Wy,:T?(xxxuuu)+by?) ??2d?uuu{ 0,1}d?exp(Wy,:T?(xxxuuu)+by?) ?=exp???2n1?d{ 0,1}n?Wy,:T?(xxxuuu)+by????=exp(21?Wy,:T?xxx+by?)?
上面一串的推导,竟有了一个结论,采用dropout training时,2d2^d2d个简单的softmax分类器的emsemble(做几何平均)可以由权值为12W\frac{1}{2}W21?W 的softmax分类器一次inference得到! 这就是上面提到的 weight scaling inference rule

值得注意的是,这种方式只有在单层网络中能得到精确的ensemble结果,在深层网络中,只能近似于ensemble的结果。因此,作者的一个想法是设计一个模型能最小化近似的误差,从而提升 dropout的能力

作者观察到上述方式如果拓展到多层网络,如果在保证输入空间到下一层(采用不同的 dropout mask)的变换是局部线性的前提下,dropout 能实现准确的 model averaging。而许多激活函数几乎每一处都是有曲率的,例如 sigmoid、tanh,而使用 ReLU是满足上述前提的。这也就意味着使用这类激活函数是不利于 dropout 的 model averaging。因此,要求在设计模型时需要采用像ReLU这类局部线性的激活函数,搭配 dropout 使用,维持或者提升其逼近准确model averaging的能力。

Optimization

采用 dropout training 后的优化过程和原始的SGD是有蛮大差别的。SGD通常采用的是很小的学习率,而 dropout 往往是用较大的学习率能起到比较好的效果。作者发现,当训练时只是普通的SGD,采用ReLU激活函数的神经元饱和的数量少于5%;而采用 dropout 训练时,尽管保证了初始化时尽量少的神经元饱和,但训练过程中,饱和的神经元数量依旧还是逐渐上升到了60%。可以简单看下下图:

在这里插入图片描述
暂不看 maxout 那两条曲线,关注在 dropout 训练阶段,采用 ReLU激活函数的神经元,其值从正值转变为0的频率远大于从0值转变为正值,这也就导致了饱和的神经元数量越来越多,即出现了神经元"死亡"的现象,进而阻碍了模型的优化收敛。这问题就出在了采用了 dropout 时搭配了 ReLU 激活函数。因为 ReLU激活函数 max?(0,z)\max(0,z)max(0,z)中 0 为常数,这阻碍了梯度的流动,而采用 dropout 的方式虽然能使得模型优化时朝许多不同的方向探索,但也导致了训练过程中很难改变神经元从饱和到重新激活。这意味着需要设计一个新的激活函数来改变这个现状。

Description

于是,作者提出了 maxout networks,其模型结构与通常的神经网络没差别,但是采用了新的激活函数 maxout。maxout unit 的定义如下,给定输入 x∈Rdx \in \mathbb{R}^dxRd,则隐层的输出为:
hi(x)=max?j∈[1,k]zij(6)h_i(x) = \max_{j \in [1, k]}{z_{ij}} \tag{6} hi?(x)=j[1,k]max?zij?(6)
其中 zij=xTW...ij+bijz_{ij} = x^TW_{...ij} + b_{ij}zij?=xTW...ij?+bij?W∈Rd×m×kW \in \mathbb{R}^{d \times m \times k}WRd×m×kb∈Rn×db \in \mathbb{R}^{n \times d}bRn×d 为可学习的权值。网络结构可以简单见下图,其中 h1h_1h1?h2h_2h2? 为两个 maxout unit,可以见到输入 vvv,先经过5次线性变换得到隐层的中间层 z1,.z_{1,.}z1,.?,此处即 k=5k = 5k=5,再做 max 非线性变换,得到maxout unit h1h_1h1?。这里就类似于多个 rectifier unit 做不包含常数0的max pool得到 maxout unit。在卷积神经网络中,一个 maxout feature map可以由 k 个feature maps在channels维度做max pool得到。

在这里插入图片描述

值得注意的是,单个 maxout unit 可以解释为对任意凸函数的分段线性逼近。这也就意味着 maxout networks 不仅学习每个 hidden units 之间的关系,还学习每个 maxout unit 的激活函数。如下图,maxout 激活函数可以实现ReLU、absolute ReLU以及分段线性逼近二次函数。

在这里插入图片描述

Maxout is universal approximator

如果有足够多的 hidden units,一个标准的MLP可以看做是一个通用函数逼近器(universal approximator)。同样的,maxout networks 也可以作为通用函数逼近器,但前提是每个 maxout unit 有尽可能多的 affine components(简单说来就是上式中权值 WWWkkk 尽可能的大)。

Model averaging

现在重新来看 dropout 的 approximate model averaging。上面也提到了,在用 dropout 做训练时,网络中如果包含像 tanh、sigmoid这类几乎各处都有曲率的激活函数,会影响 dropout 的 approximate model averaging 的准确性,那就需要采用 ReLU 这类局部线性的激活函数。

而作者提出的 maxout 激活函数是每一处都局部线性的,上面也看到了,它可以分段线性逼近任意凸函数,那它也是可以搭配 dropout 使用的。下图是 maxout 激活函数与ReLU的性能比较。前面提到,maxout unit 可以看做是多个 rectifier units 在 channel 维度做 max pooling,那在与 ReLU比较时,采用ReLU的网络需要模拟 maxout network 的计算。

看到实验中的 “Large rectifier, no channel pooling”,是带ReLU的网络的神经元个数是maxout的 kkk 倍,并且没做 channel pooling,其性能是与 maxout network差不多的。但采用 kkk 倍 rectifier units 会引入更多的参数,因为没有做channel维度的池化。之所以会比 maxout networks 的效果差一些,主要问题是因为ReLU的max计算中带有常数0,容易导致神经元死亡,进而使得模型优化困难,下面的实验中发现,在模型训练迭代到300次时带ReLU的模型就停止优化了,maxout network 则是在350次左右停止优化,而前面的优化效果是差不多的。

在这里插入图片描述
上面提到,在 inference 阶段,采用 W/2W/2W/2 可以近似 2d2^d2d 个模型 ensemble 的结果,那看看采用 maxout 激活函数较之采用 tanh 激活函数,对 dropout 做 approximate model averaging 的效果影响。如下图,其中 “Sampling” 是采样模型中的子模型(前提是用 dropout),并且做几何平均。可以发现,随着采样数增大,test error 在逐渐下减,但其效果始终没超过采用了 W/2W/2W/2 做近似。这也就意味着 dropout 能很好的近似大量的模型做 ensemble 的结果。另一方面,可以看到采用 maxout 激活函数能提升 dropout approximate model averaging 的效果,较之 tanh。

在这里插入图片描述
还有一组实验比较有趣,不是通过 test error 指标来比较两个激活函数的效果,而是采用 KL 散度这个指标来看采样子模型做几何平均的预测分布与采用 W/2W/2W/2 做近似的分布之间的相似度。如下图,结论是和上面的实验是一样的。

在这里插入图片描述

Optimization

前面 dropout 的 optimization 分析以及上面 ReLU 和 maxout 性能比较的实验中,可以得出了一个结论:包含常数0的max对于采用 dropout 训练的模型优化是有非常大的负面影响的。 所以 maxout 在max 计算中并没有包含常数0,它给 dropout training 的模型在优化上较之用 ReLU 激活函数得到了提升。

下图是分别采用 maxout 和 ReLU 的network在模型深度上的实验。可以看到在模型层数上升到5层是,带 ReLU 的模型收敛效果就变差了,在6层以后收敛效果就急剧下降,而带 maxout 的模型在层数增加时收敛效果没有显著变化。这里看出,在使用 dropout 训练模型时,采用 ReLU 激活函数在一定程度上限制了模型优化收敛,且随着模型的层数增加,底层的神经元就更难得到优化,整体模型的收敛效果就极大受影响。另一方面也说明了,采用 maxout 激活函数可以训练更多层的模型。

另外一组实验的结果就是第一张图,可以看到 maxout unit 在每一轮迭代时,神经元的值从正值转向负值和从负值转向正值的频率是近乎相等的,这也就意味着存在较少的神经元"死亡"现象,从而提升了模型收敛效果。

在这里插入图片描述

总结

maxout networks 主要还是其中的 maxout 激活函数,作者设计它的目的是专门配合 dropout 使用的,弥补了常规激活函数的缺陷,提升了 dropout 的 approximate model averaging 的能力,也使得采用 dropout 训练的模型优化收敛的效果上得到改善。

感觉使得它效果比ReLU好的主要原因还是在于在 max pool 计算时不考虑常数0 以及跨channel的池化,从而提升了模型收敛效果。另外它这种方式所引入的参数还是比较多的,虽然在深层网络中真的能起到很好的效果吗,这也是值得推敲的,现在的模型中好像没见过采用 maxout 激活函数的,那也说明了它所带来的提升是有限的。

参考文献

[1] Deep Learning Book, Ian Goodfellow and Yoshua Bengio and Aaron Courville, deeplearningbook.org

  相关解决方案