兰 亭 墨 苑
期货 · 量化 · AI · 终身学习
首页
归档
编辑文章
标题 *
URL 别名 *
内容 *
(支持 Markdown 格式)
AlexNet像天外来客一样,出道即巅峰,迅速的将ImageNet的专业比赛ILSVRC推到了视觉界“华山论剑”的位置。但是AlexNet却没有在行业留下太多的身影,很快就退出了历史舞台。这是因为Alex当时采用的方式太复杂了,AlexNet 的代码在当时被认为是“只有上帝和 Alex 本人能看懂”的天书。它就像一辆为了赢得 2012 年拉力赛而手工改装的“怪兽赛车”,虽然猛,但全身都是“硬伤”,导致它根本无法通过模块化的改造来升级。它证明了深度学习的价值,但其原型机的历史使命已经完成了,它并不适合作为一个工程范本来被大家复用。所以AlexNet和他的发明者一样,作为“教父”被供奉在了教科书的第一章,但却没有开枝散叶,继续迭代。但它却给大家留下了一个挑战的目标。在2012年之后的三届比赛,竞争非常的激烈,厮杀的也格外精彩。几乎全球在视觉方面计算精英都摩拳擦掌,势要成功登顶。这三届比赛的三场大战,也成功的载入了史册。 1、正反之战:杨立昆的逆袭 2012年的AlexNet,辛顿的弟子用杨立昆的CNN摘得桂冠。之后,整个学术界都陷入了疯狂。大家都在做一件事,模仿 AlexNet 的结构,然后疯狂调整学习率、改变层数,试图撞大运撞出一个更好的成绩。但是正如上文所说,AlexNet如同一部天书,模仿者们仿佛在破解谜题,这种盲人摸象的感觉非常不好。 当时在纽约大学读博士的马修·D·泽勒 (Matthew D.Zeiler)觉得这种做法很“盲目”。他心想:“既然我们在训练神经网络,为什么我们不能看看它们到底在看什么?”杨立昆此时已到纽约大学任教,泽勒的导师 Rob Fergus和杨立昆时好友。他非常支持学生的这个想法,并加入了进来。两人决定不再盲目堆叠层数,而是先发明一个“内窥镜”,看清楚CNN内部的功能。杨立昆也承诺给予帮助,CILVR 实验室的全部资源都向泽勒开放了出来。 马修·D·泽勒 (Matthew D. Zeiler) 泽勒最初的想法其实并不是想参赛,他在博士期间一直在研究如何将图像从特征空间还原回像素空间,相当于他在做一套反卷积的机制。这套机制要克服的最大困难是池化层。在池化层的操作里面,它只会选择传进来的矩阵中的最大的那个值,然后把其他的值丢掉,关键的是,那个最大值的位置也就不保留了。这给反卷积的还原带来了困难,还原时不知道把那个最大的值放到什么位置上。 泽勒的方案是,增加一个开关,记录当时最大值的位置,这样在还原时就把最大值填回去,其他地方补上零。这个方法便让卷积提取的特征值可以被还原了。让我们仔细理解一下这个算法,我们通过卷积运算识别了图像的特征(这个特征主要来自于边缘),然后我们还有一套方法,能把特征还原回来,我们此时发明了什么? 没错,就是抠图!这套反卷积算法本质上就是把识别出来的图像特征重新增强描绘一遍。但是泽勒当时没想那么多,他先把这套玩法用来分析AlexNet。他发现由于 AlexNet第一层的步长太大,导致记录的信息非常稀疏,还原出来的图像有严重的“棋盘效应”,这会影响整个网络的性能。这直接指导了他做出那个著名的修改:减小卷积核,减小步长。 但是ILSVRC的比赛分为两大主项,图像理解和图像定位。泽勒完全不想搞图像定位,他觉得这种偏炫技类的任务并没什么意思。另外一个关键原因是当时他已经成立了Clarifai,投资人正在等着他的API的识别率数据。在这种需求的驱动下,泽勒在网络的最后,接了一个全连接层。 杨立昆并不满意泽勒的这种做法,他骄傲的认为CNN可以搞定所有的任务,无论是图像理解还是图像定位。所以他决定再组织一个队伍参赛,Rob Fergus于是和杨立昆的博士生Pierre Sermanet,成立了OverFeat团队,同样代表纽约大学参赛。 后面的故事就简单了,ZFNet和OverFeat同时参赛,ZFNet把AlexNet 的错误率的成绩 15.3% 进一步下降到了11.2%,成功的夺冠了,OverFeat也不负众望,在图像定位分项上获得了冠军。2014年的纽约大学是最令行业瞩目的赢家,拿下了2013年的ILSVRC大赛的两项冠军,在2013年的新分项目标检测上也获得了第三名的成绩。 ZFNet和OverFeat的胜利,惊动了当时和谷歌正在激烈竞争的扎克伯格。扎克伯格发现,当时最顶尖的视觉识别成果竟然不是出自大公司,而是出自杨立昆所在的纽约大学。这意味着杨立昆不仅懂理论,他还建立了一套产出顶级人才和技术的生态系统。也意味着杨立昆坚持的那套CNN,极有可能是正确的路径。辛顿团队已经被谷歌收入麾下,他不能再错过杨立昆了。 对神秘的东方文化的兴趣,让小扎在延请人才方面获益良多。熟读三国演义的他,学习了刘备三顾茅庐的桥段,飞去纽约,连续请杨立昆吃了三顿晚餐。在晚餐上,特别是前两次,小扎也如刘备一样,碰了一鼻子灰。傲娇的杨立昆,并不想去工业界,他热爱纽约大学的教职,所以他向小扎开出了苛刻的条件。 绝不搬家。我不住加州,我要留在纽约。 保留教职。我要在纽约大学继续带学生。 学术自由。Facebook 的 AI 实验室(FAIR)必须像贝尔实验室一样,做开放研究,论文要公开发表,代码要开源,不能只做产品。 小扎果然有着刘皇叔般的战略眼光。杨立昆苛刻的要求,小扎照单全收。他甚至为了杨立昆,在纽约专门设立了 AI 实验室总部。在接下来的七年里,扎克伯格给了杨立昆无限的信任和资源,杨立昆也没有辜负他,把 FaceBook的AI部门FAIR 打造成了全球 AI 科学家的圣地,也为Meta打造了一条护城河,并且这条护城河在有意无意之间,延缓了Google一统天下的步伐,早期的OpenAI,也是这条河保护的对象。 但遗憾的是,杨立昆没有说服泽勒,他拒绝了谷歌的邀请,也没有加入Facebook,而是选择了独立创业。他当时意识到他手中这套“抠图”算法的重要性,不希望将其变成某个大公司拼图中的一部分。带着这个简单的理想,他成立了Clarifai,为行业提供专业的图像识别算法。美国国防部的无人机,大部分都在使用Clarifai的技术服务。 2、深度之战:GoogleNet和VGG 2014年,行业的学术氛围已经完全和去年不一样了。所有的团队都认为,深度是网络性能的重点,所以几乎每个团队的关键资源都投在了如何增加网络的深度上。 小李子的盗梦空间剧照成了2014年深度学习最佳梗图 2014年的双子星是GoogLeNet团队和牛津大学的VGG团队。这一年的双子星对决不仅仅是产品和技术的对决,更是两种不同价值观的缠斗。一个是算力无限,且囤积了大量天才,可以全方位炫技的来自Google的团队,一个是刻板严格的牛津学子,头脑灵活但却资源有限。 VGG的路线采用的是尽量简化网络结构和卷积核的大小,它们把去年ZFNet的卷积核再次缩小了。在2014年,训练深层网络的最佳范式是辛顿的逐层训练,所以VGG团队是先训了一个11层的模型,然后再逐步添加层数,最终训练出了一个16层和19层的模型,这就是日后被应用的非常广泛的VGG-16和VGG-19。这两个模型,由于巨大的全连接层,整体参数达到了1.44 亿。巨大的连接层使得图像定位的能力很强,所以在2014年的比赛中,VGG赢得了图像定位项目的冠军。但也正是因为全连接层,他们遇到了过拟合问题,网络表现比较僵化,在分类项目上,错误率过高,输给了GoogLeNet。 GoogLeNet的核心组件的名字叫做Inception(盗梦空间),是为了致敬上面的小李子,而整个小组的名字中把L大写,则完全是为了致敬杨立昆和他的LeNet。他们的理念也延续了杨立昆的想法,去掉全连接层。所以这个网络虽然只有700万参数。他们认为卷积核应该多样化,所以他们采用了多种尺度的卷积核,还专门为此训练了一个网络来专门选择合适的卷积核。这使得网络结构异常的复杂,但因为没有全连接带来的过拟合问题,效果奇好,以6.7%的错误率赢下了分类项目的冠军,同样因为没有全连接层,在定位项目上输给了VGG。 这一年的双雄争霸,让行业意识到三个问题。 第一、简单的网络结构有时候会比复杂的结构更能赢得工业界的心。VGG虽然输了比赛,但是2014年最受欢迎的模型却是VGG,因为它的代码更容易理解,数据格式的规整也让GPU更乐意为它们优化硬件算法,在具体业务部署起来,运行效率反而更高。相反,GoogLeNet的结构太复杂了,反而没受到行业的欢迎。 第二、深度并不是万能药。VGG在比赛后,持续优化,当他们把网络叠到22层的时候,发现了网络性能反而在下降。他们遇到了网络退化的问题。此时,20层网络几乎成为VGG类网络的禁区,只要大于这个深度,网络性能反而会下降。 第三、初始化矩阵的价值。VGG的训练方式,让大家开始意识到一个规整的矩阵对训练的帮助很大,于是开始引入Xavier 初始化。他们发现,引入这种初始化方式之后,可以从0开始训练VGG了。在把激活函数改为ReLU之后,他们又用了更符合ReLU的He 初始化。 但是他们始终无法将深度继续做深,深度竞赛停止在了30层。直到2015年,残差网络的出现才解决了深度的进一步堆叠问题,而且它不仅是终结了当年的竞赛,而是终结了整个赛事。 3、ResNet的终南捷径 继续增加深度会导致网络退化这件事儿,很快就有了结论。从现在的时点来看,网络崩溃的原因是因为,虽然有了 ReLU 解决了 Sigmoid 的导数衰减问题,但当时的权重初始化方法(主要是 Xavier Initialization)是针对 Sigmoid/Tanh 设计的。这就导致使用Xavier 初始化的网络,在ReLU能杀死一半神经元的强大杀伤力面前,几乎每层的信号方差都会减半,这样到了30层,信号就微弱得像是把一滴墨水滴进了太平洋,完全消失了。但在当时,这种退化带来了恐慌,甚至有人怀疑深度学习是不是到头了,物理极限就是30层。 此时,另外一个可以比肩Alex Krizhevsky的大神,何恺明开始登场了。如果说Krizhevsky对于深度学习的贡献侧重于引爆,他和老师辛顿一起,在深度学习这颗“原子弹”的发明过程中,起到了爱因斯坦的作用,而何恺明则当之无愧,是深度学习领域的奥本海默。他从工程角度为深度学习的进一步深化发展和实际应用铺平了道路。何恺明的代表作就是ResNet和以他名字命名的“He Initialization”。 何恺明(Kai Ming He) 何恺明在 2015 年初发表了论文 《Delving Deep into Rectifiers》,他的思考方式简单有效。“既然 ReLU 关掉了一半神经元,那为了保持信号强度不变,初始化的方差就必须乘 2。”这个简单的 \sqrt{2/n} 的修正,被称为 “He Initialization”。依靠这个成果,他们成功训练了一个 22层 的网络,在 ImageNet 上实现了 4.94% 的错误率,这是 AI 首次超越人类视觉水平(人类约为 5.1%)。当时何恺明在微软,这也是微软在2015年,这个AI爆发的寒武纪前期,亮出的一把重量级的武器。 同时,不甘示弱的Google,也几乎在同时,沿着另外一条路线也制作出了一把神兵利刃“Batch Normalization”。这就是七种武器中的另外一种,号称孔雀翎。He Initialization的逻辑是,既然问题出在信号传着传着就乱了,那我在出发前就算好每一步的衰减量。而Google的Batch Normalization的逻辑却是,我不管你出发时怎么样,也不管你跑到中间是不是偏了,我在每一层都设一个检查站,强行把你拉回正轨。所以这个BN的玩法是,在每一层计算完后,强行减均值、除方差,归一化。和古龙小说里描述的一样,它的出手像孔雀翎一样的稳定,每一层计算,它无论有多少的偏移,都会被它的机制拉回原点。 加上 BN 后,网络对初始化的要求大大降低了!哪怕你不用那么精细的 He Init,随便搞点高斯分布,只要有 BN,网络照样能训练,而且收敛速度快了 10 倍。那如果双剑合璧,岂不是天下无敌? 在BN出现后不久,何恺明团队开始搭建一个在当时看来超深的56层网络,试图打败之前仅使用He initalization的那个22层的网络。按照常理来说,56 层的网络参数更多,能力更强,就算没学到新东西,至少也不应该比 22层差吧?但现实狠狠的打了他们的脸,56 层的网络,不仅测试集表现差,连训练集误差都比 22层的高。何恺明发现,这并不是过拟合问题,如果单纯是过拟合问题,训练集误差不会变差,这是一种典型的“优化器迷路”现象,它是一种不同于梯度消失的新型问题。这个问题被贴切的称为退化问题。 梯度消失的根本原因在于底层的误差无法有效的传递到浅层网络,导致浅层参数不更新,像死了一样,所以导致层数无法扩展的太多,而退化问题则是由于优化地形太复杂了,导致全网络的参数虽然在更新,但结果变差了。这种退化问题产生的原因,用中国古代的“画蛇添足”故事能完美的形容。假设网络的前20层,已经找到了完美的特征值,整个网络的剩下36层完全可以什么都不做,这样得出的结论就是最优解。但是这些层里的神经元都是强迫症患者,它们被设计成必须对数据进行加权、求和、激活(ReLU)。它们不懂得什么都不做。结果就是:它们非要在完美的“蛇”身上加几笔。这一加,反而把原本完美的结果给破坏了。 当何恺明意识到是后面的网络层在画蛇添足时,距离当年的ImageNet比赛的截止日期已经不远了,而当年微软亚洲研究院的算力并不充裕,训练一次大概需要几周时间,他们只有一次尝试的机会。当时他们果断的选择,将层数直接干到152层,他们给了网络一个选择权:“如果你觉得现在的效果已经很好了,你可以选择在这个图层上什么都不做,直接保留上一层的效果。”每层网络都会将上层传下来的结果和希望达到的效果进行一次比较,这在数学里面叫做Residual,所以这个非常关键的操作就成为了这个网络的名字,ResNet(残差网络)出现了。在ResNet中,当网络进入垃圾时间之后,后续的层将不再继续假装勤劳的画蛇添足,而是直接被跳过,那个非线性层残差被归零了。这种数学上的加法连接,后续被Transformer所采用,直接启发出了“Attention Is All You Need”的神文。这也是何恺明被誉为上古大神之一的关键原因。 当我们用人文视角来看待深层网络这个纯理性的计算工具时,却得出了一些有趣的结论。网络退化问题像极了我们经常说的:“走的太久反而忘记了为什么出发。”当网络过深,我们反而会忘记了当时上路的初心,从而在损失函数的持续优化下,本来已经发现的正确答案,又被进一步的改歪了。这和画蛇添足的故事一样,当某些动作被强制执行的时候,必然会导致偏移。何恺明的残差连接,就好像给了容易迷失的初心开了一条到达终点的捷径,也能让这初心在漫长的运算周期内得以始终保持,如同长生。故有好事者,将何恺明的残差连接列入解决梯度问题的七种武器的兵器谱,唤为“长生剑”。 ResNet在2015年的ImageNet大会上的豪赌胜利了。ResNet实现了绝对碾压,当时的第二名还在几十层的深度里挣扎,而一个153层的网络,分类错误率 3.57%,甚至低于人类的错误率。2015年初He init论文刚发布时,由于超越人类错误率的幅度不多的缺陷被他在大会上,用ResNet彻底解决。ImageNet被誉为是计算机视觉的世界杯,何恺明的ResNet的捧杯,直接宣告了一个时代的来临。CNN时代的霸主已经君临天下。ImageNet也成功洞察了这个趋势,2017年,它宣布这一届大赛将会是最后一届比赛。计算视觉领域的世界杯落幕了。 ImageNet大赛,不仅仅是学术界的比赛,更像是一场工业界和学术界一起关注的盛事。拥有了这个舞台,新一代的炼金术士们,已经不再像PDP小组一样需要在地下室里抱团取暖,而是可以凭自己的聪明才智,用魔法打败魔法,并堂堂正正的接受世间的膜拜和大型组织的追逐。 梯度下降的七种武器,已经亮相了五种。剩下的两种,将会以另外的形式出现,序列问题也会和计算机视觉问题一样,迅速迎来巨大的变革。揭开这个变革帷幕的,是本吉奥和辛顿团队的年轻人们和他们手里已经尘封许久的RNN。
配图 (可多选)
选择新图片文件或拖拽到此处
标签
更新文章
删除文章