第622章 深度学习变天了 (第1/2页)
2014年4月的雅安,大渡河的水声日夜不停,从山谷底部翻涌上来,和机房里几千台设备的嗡鸣混在一起,变成一种单调的、永不消歇的白噪音。
任少卿已经习惯了这种声音。
他甚至觉得,没有这个声音他反而睡不着。
九章基地的AI训练区设在主机房东侧,是去年底新开辟出来的独立区域。
顾屿当初承诺的两千张顶级计算卡早已全部到位。
其中一千六百多张卡正在日夜不休地爬取、清洗着西红柿小说、今日热点以及引力APP的海量中文语料,那是为未来某个庞大计划储备的底层基建。
而任少卿面前的,是划给他视觉组专属的攻坚主堡。
三百二十张英伟达K40计算卡,整整齐齐码在定制的液冷机柜里,指示灯密密麻麻,绿光闪烁,远看像一面会呼吸的墙。
任少卿在这面墙前面蹲了快五个月。
他的皮肤晒黑了不止一圈,因为基地的食堂在另一栋楼,每天来回要走一段露天的山路。
雅安的紫外线不讲道理,尤其三四月份,太阳出来的时候毒辣得很。
他现在的肤色已经跟刚从中科大出来时判若两人。
但他顾不上这些。
此刻是凌晨两点四十七分。
训练区的值班间里,三台显示器同时亮着。
任少卿坐在中间那台前面,两个师弟一左一右。
左边的叫郑宇航,右边的叫陈立秋,都是他从西安交大挖过来的博士生。
准确说不是挖的,是他跟两个人分别打了四个小时电话,把雅安基地的算力配置报了一遍,对面就自己来了。
这年头搞深度学习的人,算力就是命。
“跑完了。”
郑宇航的声音有点抖。
任少卿没动。他盯着屏幕上那组数字,瞳孔里映着绿莹莹的光标。
ImageNet验证集。TOp-5错误率。
5.08%。
五十层。五十层卷积神经网络。TOp-5错误率,5.08%。
他反复确认了三遍训练日志,又让陈立秋重新跑了一次验证脚本。数字没有变。
郑宇航从椅子上站起来,双手撑着桌沿,呼吸急促。
陈立秋摘下眼镜,用衣角反复擦了三遍镜片,又戴上,又摘下来。
“少卿哥。”
郑宇航转过头看他,嘴唇哆嗦了一下,
“这个精度……人类标注员在ImageNet上的平均错误率是5.1%。”
任少卿知道。
他当然知道。
他闭上眼睛,靠上椅背。五个月。
从去年十一月他正式入驻雅安基地开始算,到今天,一百五十三天。
事情要从头说起。
去年夏天在西安交大走廊里被那个顶着黄毛的少年截住之后,任少卿回北京犹豫了整整一周。
不是犹豫要不要去,是犹豫这件事到底是不是真的。
一个高中毕业生说自己手里有几千张GPU,说算力管够。
这种话放在2013年的中国,听起来荒诞得离谱。
然后他拨了名片上那个电话。接电话的是个叫林溪的女人,声音干脆利落。
三天后他就收到了一份正式的Offer,薪资是他在微软亚研院兼职收入的四倍,不含绩效和期权。
他坐火车到了雅安,下了站,一辆黑色比亚迪S6把他接进山里。
第一次走进机房的时候,他站在门口愣了将近两分钟。
几千张GPU。
那个黄毛少年没有骗他。
入职一个月后,他把之前在微软亚研院的那套改进型卷积网络搬了过来,在这边的算力下重新训练。
效果立竿见影。之前四张GTX780跑十二天的任务量,在这边不到两天就能收敛完毕。
算力充裕之后,他开始做一件以前想都不敢想的事。
加深网络。
卷积神经网络的层数越深,理论上能提取的特征就越抽象、越高级。
但实际操作中,网络超过二十层就会出现一个要命的问题:梯度消失。
简单来说,训练信号从输出层往回传的时候,经过太多层的连乘运算,到了前面几层就衰减成了几乎为零的数字。
前面的层学不到东西,整个网络等于白深。
这个问题卡死了全世界所有试图做深层网络的研究者。
任少卿也被卡住了。
他试过各种补救办法。换激活函数,调学习率,加BatCh NOrmaliZatiOn。
有些有用,但都治标不治本,网络超过三十层之后精度就开始往下掉,跟没加深是一个样。
在连续失败了将近两个月之后,某天凌晨三点,他趴在键盘上半睡半醒。脑子里突然蹦出来一个念头。
如果不让梯度穿过所有层呢?
如果给它开一条捷径呢?
他一下子坐直了。
思路很简单。
假设网络有两层,输入是X,经过两层运算之后的输出是F(X)。正常做法是直接用F(X)往下传。
但他的想法是,不要让网络去学习F(X)这个完整的映射,而是让它只学习F(X)和X之间的差值,也就是F(X)-X。最终输出变成F(X)+X。
这个“+X”就是捷径。
就是残差连接。
它的意义在于,哪怕F(X)学废了,输出至少还有一个X兜底,不会比什么都没学更差。
(本章未完,请点击下一页继续阅读)