91书院(91shuyuan.com)更新快,无弹窗!
存在一个套娃一样的悖论。</P>
那就是有强烈意义的操作,两个分支数学上就合并不了,至于没用的操作最开始就在数学上等价,没必要拆开。</P>
“网络结构的分支合并是没有办法越过非线性算子的,如果越过,则不能合并对吧。”戴密斯如此抽丝剥茧道。</P>
网络结构的重参数化,最终目的是要得出与合并之前一样的运算结果,因此非线性的激活函数是没法包含在残差里的,否则就没法合并。</P>
比如最常用的激活函数,ReLU,其实说白了就是保留所有大于0的数字,小于0的数字归零。</P>
“这个非线性函数操作必须在分支合并之外,而不可以在分支合并之内。”</P>
这个很好理解,假设一个原本的数字x是1,而他F运算之后得出的结果是-2。</P>
那么ReLU)+x,和ReLU+x)的结果是完全不同的。</P>
前者为0+1,后者为ReLU=0。</P>
所有的可合并分支,必须不含有非线性激活算子,才能够满足结合律和分配率。</P>
但问题又来了,如果构造出来的几个分支都可以等价转换为一个,那为什么不从一开始就只训这一个分支呢?这不是快很多吗?</P>
最后的效果为什么会不一样呢?</P>
这从直觉上和数学上都是不大合理的事情。</P>
这不就相当于小学数学分开算吗?</P>
2x拆成x+x去训练,这怎么会有区别呢?</P>
“我们不能这么去想,残差链接的想法也没有脱离线性变换,也只是加了一个相同形状的张量x而已呀。”孟繁岐自己也不知道具体的原理,这个世界上没人能解释得清楚。</P>
“但是残差链接在你的实际应用当中,是跨越了非线性激活函数的,你的公式看上去很简单,但代码里却很复杂。”戴密斯无情地指出了这个说法的问题所在。</P>
“那理论上说,是不是3x3的卷积核一定好过1x1的卷积?只要九宫格外面的八个数字都是0,那么3x3的卷积核其实就变成了一个1x1的卷积,因为外面8个数字不参与运算。”</P>
孟繁岐想了想,又换了一个例子来尝试证明。</P>
“呃...好像确实是这个道理。”</P>
就好像有某种物品,一定好过没有,因为再不济你也可以把它扔掉嘛,这样你现在就也没有这个东西,大家都一样了。</P>
“那为什么我这里结果显示,同一个位置上面,1x1+3x3的性能却明显好于3x3+3x3,也就是说一个强结构加一个弱结构好于两个强结构相加,这难道不奇怪吗?”</P>
“而且,批归一化虽然推理时是线性的,但训练时其实还是非线性的,也就是说即便没有专门的非线性函数,这种可重构的结构设计,多个分支内在训练的时候仍旧是具备非线性能力的。”</P>
理论很美好,但实验结果很骨感。</P>
即便席尔瓦和戴密斯的数学再扎实,也终究没法解释孟繁岐获得了提升的实验结果。</P>
两个人能做的也只有喃喃自语同一句话。</P>
这特么根本不数学啊!