算力充裕之后,他开始做一件以前想都不敢想的事。
加深网络。
卷积神经网络的层数越深,理论上能提取的特征就越抽象、越高级。
但实际操作中,网络超过二十层就会出现一个要命的问题:梯度消失。
简单来说,训练信号从输出层往回传的时候,经过太多层的连乘运算,到了前面几层就衰减成了几乎为零的数字。
前面的层学不到东西,整个网络等于白深。
这个问题卡死了全世界所有试图做深层网络的研究者。
任少卿也被卡住了。
他试过各种补救办法。换激活函数,调学习率,加BatCh NOrmaliZatiOn。
有些有用,但都治标不治本,网络超过三十层之后精度就开始往下掉,跟没加深是一个样。
在连续失败了将近两个月之后,某天凌晨三点,他趴在键盘上半睡半醒。脑子里突然蹦出来一个念头。
如果不让梯度穿过所有层呢?
如果给它开一条捷径呢?
他一下子坐直了。
思路很简单。
假设网络有两层,输入是X,经过两层运算之后的输出是F(X)。正常做法是直接用F(X)往下传。
但他的想法是,不要让网络去学习F(X)这个完整的映射,而是让它只学习F(X)和X之间的差值,也就是F(X)-X。最终输出变成F(X)+X。
这个“+X”就是捷径。
就是残差连接。
它的意义在于,哪怕F(X)学废了,输出至少还有一个X兜底,不会比什么都没学更差。
更关键的是,梯度可以沿着这条捷径直接回传到前面的层,不用再经过所有中间层的连乘衰减。
梯度消失的问题,被这条捷径绕过去了。
他当天晚上就写了代码。
第二天跑了一个二十层的
本章未完,请点击"下一页"继续阅读! 第3页 / 共6页