第(2/3)页 卷积神经网络的层数越深,理论上能提取的特征就越抽象、越高级。 但实际操作中,网络超过二十层就会出现一个要命的问题:梯度消失。 简单来说,训练信号从输出层往回传的时候,经过太多层的连乘运算,到了前面几层就衰减成了几乎为零的数字。 前面的层学不到东西,整个网络等于白深。 这个问题卡死了全世界所有试图做深层网络的研究者。 任少卿也被卡住了。 他试过各种补救办法。换激活函数,调学习率,加BatCh NOrmaliZatiOn。 有些有用,但都治标不治本,网络超过三十层之后精度就开始往下掉,跟没加深是一个样。 在连续失败了将近两个月之后,某天凌晨三点,他趴在键盘上半睡半醒。脑子里突然蹦出来一个念头。 如果不让梯度穿过所有层呢? 如果给它开一条捷径呢? 他一下子坐直了。 思路很简单。 假设网络有两层,输入是X,经过两层运算之后的输出是F(X)。正常做法是直接用F(X)往下传。 但他的想法是,不要让网络去学习F(X)这个完整的映射,而是让它只学习F(X)和X之间的差值,也就是F(X)-X。最终输出变成F(X)+X。 这个“+X”就是捷径。 就是残差连接。 它的意义在于,哪怕F(X)学废了,输出至少还有一个X兜底,不会比什么都没学更差。 更关键的是,梯度可以沿着这条捷径直接回传到前面的层,不用再经过所有中间层的连乘衰减。 梯度消失的问题,被这条捷径绕过去了。 他当天晚上就写了代码。 第二天跑了一个二十层的测试。 然后是三十层。四十层。精度不仅没有下降,还在持续攀升。 他又花了两周时间反复验证,排除过拟合、数据泄漏等一切干扰因素。 最后把层数推到了五十。 5.08%。 和人类标注员打了个平手。甚至略微超过。 任少卿睁开眼睛,盯着天花板看了很久。值班间的日光灯管有一根坏了,一明一暗地闪着。 “少卿哥,这个结果……” 陈立秋把擦了无数遍的眼镜重新戴好,声音压得很低, “能发顶会吧?” “不止能发。” 郑宇航已经从最初的激动中回过神来了,他盯着屏幕上的损失曲线, “这东西要是公开出去,整个领域都得重新洗牌。以前大家默认深层网络没法训练,所有人都在十几二十层的范围里卷。现在这个假设直接被推翻了。” 任少卿没说话。 他站起来,走到机房那面闪烁的绿色光墙前面,双手插在冲锋衣口袋里。 兴奋吗?当然兴奋。 但兴奋过后,一种更复杂的情绪开始往上涌。 他想起去年在西安交大走廊里,那个黄毛少年对他说的话。 “你的模型在做大量无效计算。” “让模型只用它需要用的那部分脑子去思考。” 当时他以为那只是一个外行的模糊直觉。 但现在他回过头来看,那个十八岁的少年说的每一句话,都精准地指向了这个领域未来五到十年的核心命题。 残差连接解决了深层网络的训练问题。 但那个少年想要的,显然不止于此。 任少卿盯着那面光墙,脑子里像打开了一扇被堵住很久的门。 五十层的残差网络证明了一件事:网络可以做得很深,深度不再是瓶颈。 那下一个瓶颈是什么? 他几乎是本能地想到了那个词。 宽度。 第(2/3)页