深度学习掀起海啸
如今,深度学习浪潮拍打计算机语言的海岸已有好几年,但是,2015年似乎才是这场海啸全力冲击自然语言处理(NLP)会议的一年。——Dr. Christopher D. Manning, Dec 2015
整个研究领域的成熟方法已经迅速被新发现超越,这句话听起来有些夸大其词,就像是说它被「海啸」袭击了一样。但是,这种灾难性的形容的确可以用来描述深度学习在过去几年中的异军突起——显著改善人们对解决人工智能最难问题方法的驾驭能力,吸引工业巨人(比如谷歌等)的大量投资,研究论文的指数式增长(以及机器学习的研究生生源上升)。在听了数节机器学习课堂,甚至在本科研究中使用它以后,我不禁好奇:这个新的「深度学习」会不会是一个幻想,抑或上世纪80年代已经研发出来的「人工智能神经网络」扩大版?让我告诉你,说来话长——这不仅仅是一个有关神经网络的故事,也不仅仅是一个有关一系列研究突破的故事,这些突破让深度学习变得比「大型神经网络」更加有趣,而是一个有关几位不放弃的研究员如何熬过黑暗数十年,直至拯救神经网络,实现深度学习梦想的故事。
机器学习算法的百年历史
这很管用,为什么?原因很直观,如果数学表述上不是那么清楚的话:没有这些约束条件,网络就必须学习同样的简单事情(比如,检测45°角的直线和小圆圈等),要花大把时间学习图像的每一部分。但是,有些约束条件,每一个简单特征只需要一个神经元来学习——而且,由于整体权值大量减少,整个过程完成起来更快。而且,既然这些特征的像素确切位置无关紧要,那么,基本上可以跳过图像相邻子集——子集抽样,一种共享池手段(a type of pooling)——当应用权值时,进一步减少了训练时间。多加了这两层——(卷积层和汇集层)——是卷积神经网络(CNNs/ConvNets)和普通旧神经网络的主要区别。
双摆控制问题——单摆问题进阶版本,是一个经典的控制和强化学习任务。
因为有自适应滤波,这项研究就和电子工程领域密切相关,这一领域中,在神经网络出现之前的几十年当中,控制论已经成为一个主要的子领域。虽然该领域已经设计了很多通过直接分析解决问题的办法,也有一种通过学习解决更加复杂状态的办法,事实证明这一办法有用——1990年,「Identification and control of dynamical systems using neural networks」的7000次高被引就是证明。或许可以断定,另有一个独立于机器学习领域,其中,神经网络就是有用的机器人学。用于机器人学的早期神经网络例子之一就是来自CMU的NavLab,1989年的「Alvinn: An autonomous land vehicle in a neural network」:
1. “NavLab 1984 - 1994”
正如论文所讨论的,这一系统中的神经网络通过普通的监督学习学会使用传感器以及人类驾驶时记录下的驾驶数据来控制车辆。也有研究教会机器人专门使用强化学习,正如1993年博士论文「Reinforcement learning for robots using neural networks」所示例的。论文表明,机器人能学会一些动作,比如,沿着墙壁行走,或者在合理时间范围内通过门,考虑到之前倒立摆工作所需的长得不切实际的训练时间,这真是件好事。
这些发生在其他领域中的运用当然很酷,但是,当然多数强化学习和神经网络的研究发生在人工智能和机器学习范围内。而且,我们也在这一范围内取得了强化学习史上最重要的成绩之一:一个学习并成为西洋双陆棋世界级玩家的神经网络。研究人员用标准强化学习算法来训练这个被称为TD-Gammon的神经网络,它也是第一个证明强化学习能够在相对复杂任务中胜过人类的证据。而且,这是个特别的加强学习办法,同样的仅采用神经网络(没有加强学习)的系统,表现没这么好。
西洋双陆棋游戏中,掌握专家级别水平的神经网络
但是,正如之前已经看到,接下来也会在人工智能领域再次看到,研究进入死胡同。下一个要用TD-Gammnon办法解决的问题,Sebastian Thrun已经在1995年「Learning To Play the Game of Chess」中研究过了,结果不是很好..尽管神经网络表现不俗,肯定比一个初学者要好,但和很久以前实现的标准计算机程序GNU-Chess相比,要逊色得多。人工智能长期面临的另一个挑战——围棋,亦是如此。这样说吧,TD-Gammon 有点作弊了——它学会了精确评估位置,因此,无需对接下来的好多步做任何搜索,只用选择可以占据下一个最有利位置的招数。但是,在象棋游戏和围棋游戏里,这些游戏对人工智能而言是一个挑战,因为需要预估很多步,可能的行动组合如此之巨。而且,就算算法更聪明,当时的硬件又跟不上,Thrun称「NeuroChess不怎么样,因为它把大部分时间花在评估棋盘上了。计算大型神经网络函数耗时是评价优化线性评估函数(an optimized linear evaluation function),比如GNU-Chess,的两倍。」当时,计算机相对于神经网络需求的不足是一个很现实的问题,而且正如我们将要看到的,这不是唯一一个…
神经网络变得呆头呆脑
尽管无监督学习和加强学习很简洁,监督学习仍然是我最喜欢的神经网络应用实例。诚然,学习数据的概率模型很酷,但是,通过反向传播解决实际问题更容易让人兴奋。我们已经看到了Yann Lecun成功解决了识别手写的问题(这一技术继续被全国用来扫描支票,而且后来的使用更多),另一项显而易见且相当重要的任务也在同时进行着:理解人类的语音。
和识别手写一样,理解人类的语音很难,同一个词根据表达的不同,意思也有很多变化。不过,还有额外的挑战:长序列的输入。你看,如果是图片,你就可以把字母从图片中切出来,然后,神经网络就能告诉你这个字母是啥,输入-输出模式。但语言就没那么容易了,把语音拆成字母完全不切实际,就算想要找出语音中的单词也没那么容易。而且你想啊,听到语境中的单词相比单个单词,要好理解一点吧!尽管输入-输出模式用来逐个处理图片相当有效,这并不适用于很长的信息,比如音频或文本。神经网络没有记忆赖以处理一个输入能影响后续的另一个输入的情况,但这恰恰是我们人类处理音频或者文本的方式——输入一串单词或者声音,而不是单独输入。要点是:要解决理解语音的问题,研究人员试图修改神经网络来处理一系列输入(就像语音中的那样)而不是批量输入(像图片中那样)。
Alexander Waibel等人(还有Hinton)提出的解决方法之一,在1989年的「 Phoneme recognition using time-delay neural networks」中得到了介绍。这些时延神经网络和通常意义上的神经网络非常类似,除了每个神经元只处理一个输入子集,而且为不同类型的输入数据延迟配备了几套权重。易言之,针对一系列音频输入,一个音频的「移动窗口」被输入到神经网络,而且随着窗口移动,每个带有几套不同权重的神经元就会根据这段音频在窗口中位置,赋予相应的权重,用这种方法来处理音频。画张图就好理解了:
通过时间概念反向传播的直观图解。
这个很简单的想法真的起作用了——训练递归神经网络是可能的。并且,有很多人探索出了RNN在语言识别领域的应用。但是,你可能也听说过其中的波折:这一方法效果并不是很好。为了找出原因,让我们来认识另一位深度学习的巨人:Yoshua Bengion。大约在1986年,他就开始进行语言识别方向的神经网络研究工作,也参与了许多使用ANN和RNN进行语言识别的学术论文,最后进入AT&T BELL实验室工作,Yann LeCun正好也在那里攻克CNN。 实际上,1995年,两位共同发表了文章「Convolutional Networks for Images, Speech, and Time-Series」,这是他们第一次合作,后来他们也进行了许多合作。但是,早在1993年,Bengio曾发表过「A Connectionist Approach to Speech Recognition」。其中,他对有效训练RNN的一般错误进行了归纳:
尽管在许多例子中,递归网络能胜过静态网络,但是,优化训练起来也更有难度。我们的实验倾向于显示(递归神经网络)的参数调整往往收敛在亚优化的解里面,(这种解)只考虑了短效应影响因子而不计长效影响因子。例如,在所述实验中我们发现,RNN根本捕获不到单音素受到的简单时间约束…虽然这是一个消极的结果,但是,更好地理解这一问题可以帮助设计替代系统来训练神经网络,让它学会通过长效影响因子,将输出序列映射到输入序列(map input sequences to output sequences with long term dependencies ),比如,为了学习有限状态机,语法,以及其他语言相关的任务。既然基于梯度的方法显然不足以解决这类问题,我们要考虑其他最优办法,得出可以接受的结论,即使当判别函数(criterion function)并不平滑时。
新的冬日黎明
因此,有一个问题。一个大问题。而且,基本而言,这个问题就是近来的一个巨大成就:反向传播。卷积神经网络在这里起到了非常重要的作用,因为反向传播在有着很多分层的一般神经网络中表现并不好。然而,深度学习的一个关键就是——很多分层,现在的系统大概有20左右的分层。但是,二十世纪八十年代后期,人们就发现,用反向传播来训练深度神经网络效果并不尽如人意,尤其是不如对较少层数的网络训练的结果。原因就是反向传播依赖于将输出层的错误找到并且连续地将错误原因归类到之前的各个分层。然而,在如此大量的层次下,这种数学基础的归咎方法最终产生了不是极大就是极小的结果,被称为『梯度消失或爆炸的问题』,Jurgen Schmidhuber——另一位深度学习的权威,给出了更正式也更深刻的归纳:
一篇学术论文(发表于1991年,作者Hochreiter)曾经对深度学习研究给予了里程碑式的描述。文中第五、第六部分提到:二十世纪九十年代晚期,有些实验表明,前馈或递归深度神经网络是很难用反向传播法进行训练的(见5.5)。Horchreiter在研究中指出了导致问题的一个主要原因:传统的深度神经网络遭遇了梯度消失或爆炸问题。在标准激活状态下(见1),累积的反向传播错误信号不是迅速收缩,就是超出界限。实际上,他们随着层数或CAP深度的增加,以几何数衰减或爆炸(使得对神经网络进行有效训练几乎是不可能的事)。
通过时间顺序扁平化BP路径本质上跟具有许多层的神经网络一样,所以,用反向传播来训练递归神经网络是比较困难的。由Schmidhuber指导的Sepp Hochreiter及Yoshua Bengio都写过文章指出,由于反向传播的限制,学习长时间的信息是行不通的。分析问题以后其实是有解决办法的,Schmidhuber 及 Hochreiter在1997年引进了一个十分重要的概念,这最终解决了如何训练递归神经网络的问题,这就是长短期记忆(Long Short Term Memory, LSTM)。简言之,卷积神经网络及长短期记忆的突破最终只为正常的神经网络模型带来了一些小改动:
LSTM的基本原理十分简单。当中有一些单位被称为恒常误差木马(Constant Error Carousels, CECs)。每个CEC使用一個激活函数 f,它是一个恒常函数,並有一个与其自身的连接,其固定权重为1.0。由於 f 的恒常导数为1.0,通过CEC的误差反向传播将不会消失或爆炸(5.9节),而是保持原状(除非它们从CEC「流出」到其他一些地方,典型的是「流到」神经网络的自适应部分)。CEC被连接到许多非线性自适应单元上(有一些单元具有乘法的激活函数),因此需要学习非线性行为。单元的权重改变经常得益于误差信号在时间里通过CECs往后传播。为什么LSTM网络可以学习探索发生在几千个离散时间步骤前的事件的重要性,而之前的递归神经网络对于很短的时间步骤就已经失败了呢?CEC是最主要的原因。
但这对于解决更大的知觉问题,即神经网络比较粗糙、没有很好的表现这一问题是没有太大帮助的。用它们来工作是十分麻烦的——电脑不够快、算法不够聪明,人们不开心。所以在九十年代左右,对于神经网络一个新的AI寒冬开始来临——社会对它们再次失去信心。一个新的方法,被称为支持向量机(Support Vector Machines),得到发展并且渐渐被发现是优于先前棘手的神经网络。简单的说,支持向量机就是对一个相当于两层的神经网络进行数学上的最优训练。事实上,在1995年,LeCun的一篇论文,「 Comparison of Learning Algorithms For Handwritten Digit Recognition」,就已经讨论了这个新的方法比先前最好的神经网络工作得更好,最起码也表现一样。 作者: 邓文龙 时间: 2017-11-13 09:21
支持向量机分类器具有非常棒的准确率,这是最显著的优点,因为与其他高质量的分类器比,它对问题不包含有先验的知识。事实上,如果一个固定的映射被安排到图像的像素上,这个分类器同样会有良好的表现。比起卷积网络,它依然很缓慢,并占用大量内存。但由于技术仍较新,改善是可以预期的。
另外一些新的方法,特别是随机森林(Random Forests),也被证明十分有效,并有强大的数学理论作为后盾。因此,尽管递归神经网络始终有不俗的表现,但对于神经网络的热情逐步减退,机器学习社区再次否认了它们。寒冬再次降临。
深度学习的密谋
当你希望有一场革命的时候,那么,从密谋开始吧。随着支持向量机的上升和反向传播的失败,对于神经网络研究来说,上世纪早期是一段黑暗的时间。Lecun与Hinton各自提到过,那时他们以及他们学生的论文被拒成了家常便饭,因为论文主题是神经网络。上面的引文可能夸张了——当然机器学习与AI的研究仍然十分活跃,其他人,例如Juergen Schmidhuber也正在研究神经网络——但这段时间的引用次数也清楚表明兴奋期已经平缓下来,尽管还没有完全消失。在研究领域之外,他们找到了一个强有力的同盟:加拿大政府。CIFAR的资助鼓励还没有直接应用的基础研究,这项资助首先鼓励Hinton于1987年搬到加拿大,然后一直资助他的研究直到九十年代中期。…Hinton 没有放弃并改变他的方向,而是继续研究神经网络,并努力从CIFAR那里获得更多资助,正如这篇例文(http://www.thestar.com/news/worl ... l-intelligence.html)清楚道明的:
「但是,在2004年,Hinton要求领导一项新的有关神经计算的项目。主流机器学习社区对神经网络兴趣寡然。」
「那是最不可能的时候」Bengio是蒙特利尔大学的教授,也是去年重新上马的CIFAR项目联合主管,「其他每个人都在做着不同的事。莫名其妙地,Geoff说服了他们。」
「我们应该为了他们的那场豪赌大力赞许CIFAR。」
CIFAR「对于深度学习的社区形成有着巨大的影响。」LeCun补充道,他是CIFAR项目的另一个联合主管。「我们像是广大机器学习社区的弃儿:无法发表任何文章。这个项目给了我们交流思想的天地。」
资助不算丰厚,但足够让研究员小组继续下去。Hinton和这个小组孕育了一场密谋:用「深度学习」来「重新命名」让人闻之色变的神经网络领域。接下来,每位研究人员肯定都梦想过的事情真的发生了:2006年,Hinton、Simon Osindero与Yee-Whye Teh发表了一篇论文,这被视为一次重要突破,足以重燃人们对神经网络的兴趣:A fast learning algorithm for deep belief nets(论文参见:https://www.cs.toronto.edu/~hinton/absps/fastnc.pdf)。
正如我们将要看到的,尽管这个想法所包含的东西都已经很古老了,「深度学习」的运动完全可以说是由这篇文章所开始。但是比起名称,更重要的是如果权重能够以一种更灵活而非随机的方式进行初始化,有着多层的神经网络就可以得以更好地训练。
「历史上的第一次,神经网络没有好处且不可训练的信念被克服了,并且这是个非常强烈的信念。我的一个朋友在ICML(机器学习国际会议)发表了一篇文章,而就在这不久之前,选稿编辑还说过ICML不应该接受这种文章,因为它是关于神经网络,并不适合ICML。实际上如果你看一下去年的ICML,没有一篇文章的标题有『神经网络』四个字,因此ICML不应该接受神经网络的文章。那还仅仅只是几年前。IEEE期刊真的有『不接收你的文章』的官方准则。所以,这种信念其实非常强烈。」
受限的玻尔兹曼机器
那么什么叫做初始化权重的灵活方法呢?实际上,这个主意基本就是利用非监督式训练方式去一个一个训练神经层,比起一开始随机分配值的方法要更好些,之后以监督式学习作为结束。每一层都以受限波尔兹曼机器(RBM)开始,就像上图所显示的隐藏单元和可见单元之间并没有连接的玻尔兹曼机器(如同亥姆霍兹机器),并以非监督模式进行数据生成模式的训练。事实证明这种形式的玻尔兹曼机器能够有效采用2002年Hinton引进的方式「最小化对比发散专家训练产品(Training Products of Experts by Minimizing Contrastive Divergence)」进行训练。
基本上,除去单元生成训练数据的可能,这个算法最大化了某些东西,保证更优拟合,事实证明它做的很好。因此,利用这个方法,这个算法如以下:
利用对比发散训练数据训练RBM。这是信念网络(belief net)的第一层。
生成训练后RBM数据的隐藏值,模拟这些隐藏值训练另一个RBM,这是第二层——将之「堆栈」在第一层之上,仅在一个方向上保持权重直至形成一个信念网络。
根据信念网络需求在多层基础上重复步骤2。
如果需要进行分类,就添加一套隐藏单元,对应分类标志,并改变唤醒-休眠算法「微调」权重。这样非监督式与监督式的组合也经常叫做半监督式学习。
Hinton引入的层式预训练
这篇论文展示了深度信念网络(DBNs)对于标准化MNIST字符识别数据库有着完美的表现,超越了仅有几层的普通神经网络。Yoshua Bengio等在这项工作后于2007年提出了「深层网络冗余式逐层训练( “Greedy Layer-Wise Training of Deep Networks)」,其中他们表达了一个强有力的论点,深度机器学习方法(也就是有着多重处理步骤的方法,或者有着数据等级排列特征显示)在复杂问题上比浅显方法更加有效(双层ANNs或向量支持机器)。
关于非监督式预训练的另一种看法,利用自动代码取代RBM。
他们还提出了为什么附加非监督式预训练,并总结这不仅仅以更优化的方式初始权重,而且更加重要的是导致了更有用的可学习数据显示,让算法可以有更加普遍化的模型。实际上,利用RBM并不是那么重要——普通神经网络层的非监督式预训练利用简单的自动代码层反向传播证明了其有效性。同样的,与此同时,另一种叫做分散编码的方法也表明,非监督式特征学习对于改进监督式学习的性能非常有力。
因此,关键在于有着足够多的显示层,这样优良的高层数据显示能够被学习——与传统的手动设计一些特征提取步骤并以提取到的特征进行机器学习方式完全不同。Hinton与Bengio的工作有着实践上的证明,但是更重要的是,展示了深层神经网络并不能被训练好的假设是错误的。LeCun已经在整个九十年代证明了CNN,但是大部分研究团体却拒绝接受。Bengio与Yann LeCun一起,在「实现AI的算法(Scaling Algorithms Towards AI)」研究之上证明了他们自己:
「直至最近,许多人相信训练深层架构是一个太过困难的优化问题。然而,至少有两个不同的方法对此都很有效:应用于卷积神经网络的简单梯度下降[LeCun et al., 1989, LeCun et al., 1998](适用于信号和图像),以及近期的逐层非监督式学习之后的梯度下降[Hinton et al., 2006, Bengio et al., 2007, Ranzato et al., 2006]。深层架构的研究仍然处于雏形之中,更好的学习算法还有待发现。从更广泛的观点来看待以发现能够引出AI的学习准则为目标这事已经成为指导性观念。我们希望能够激发他人去寻找实现AI的机器学习方法。」
他们的确做到了。或者至少,他们开始了。尽管深度学习还没有达到今天山呼海应的效果,它已经如冰面下的潜流,不容忽视地开始了涌动。那个时候的成果还不那么引人注意——大部分论文中证明的表现都限于MNIST数据库,一个经典的机器学习任务,成为了十年间算法的标准化基准。Hinton在2006年发布的论文展现出惊人的错误率,在测试集上仅有1.25%的错误率,但SVMs已经达到了仅1.4%的错误率,甚至简单的算法在个位数上也能达到较低的错误率,正如在论文中所提到的,LeCun已经在1998年利用CNNs表现出0.95%的错误率。
因此,在MNIST上做得很好并不是什么大事。意识到这一点,并自信这就是深度学习踏上舞台的时刻的Hinton与他的两个研究生,Abdel-rahman Mohamed和George Dahl,展现了他们在一个更具有挑战性的任务上的努力:语音识别( Speech Recognition)。
利用DBN,这两个学生与Hinton做到了一件事,那就是改善了十年间都没有进步的标准语音识别数据集。这是一个了不起的成就,但是现在回首来看,那只是暗示着即将到来的未来——简而言之,就是打破更多的记录。
蛮力的重要性
上面所描述的算法对于深度学习的出现有着不容置疑的重要性,但是自上世纪九十年代开始,也有着其他重要组成部分陆续出现:纯粹的计算速度。随着摩尔定律,计算机比起九十年代快了数十倍,让大型数据集和多层的学习更加易于处理。但是甚至这也不够——CPU开始抵达速度增长的上限,计算机能力开始主要通过数个CPU并行计算增长。为了学习深度模型中常有的数百万个权重值,脆弱的CPU并行限制需要被抛弃,并被具有大型并行计算能力的GPUs所代替。意识到这一点也是Abdel-rahman Mohamed,George Dahl与Geoff Hinton做到打破语音识别性能记录的部分原因:
「由Hinton的深度神经网络课堂之一所激发,Mohamed开始将它们应用于语音——但是深度神经网络需要巨大的计算能力,传统计算机显然达不到——因此Hinton与Mohamed招募了Dahl。Dahl是Hinton实验室的学生,他发现了如何利用相同的高端显卡(让栩栩如生的计算机游戏能够显示在私人计算机上)有效训练并模拟神经网络。」
「他们用相同的方法去解决时长过短的语音中片段的音素识别问题,」Hinton说道,「对比于之前标准化三小时基准的方法,他们有了更好的成果。」
在这个案例中利用GPU而不是CPU到底能变得有多快很难说清楚,但是同年《Large-scale Deep Unsupervised Learning using Graphics Processors》这篇论文给出了一个数字:70倍。是的,70倍,这使得数以周记的工作可以被压缩到几天就完成,甚至是一天。之前研发了分散式代码的作者中包括高产的机器学习研究者吴恩达,他逐渐意识到利用大量训练数据与快速计算的能力在之前被赞同学习算法演变愈烈的研究员们低估了。这个想法在2010年的《Deep Big Simple Neural Nets Excel on Handwritten Digit Recognition》(作者之一J. Schimidhuber正是递归LTSM网络(recurrent LTSM networks)的投资者)中也得到了大力支持,展示了MNIST数据库能够达到令人惊叹的0.35%错误率,并且除去大型神经网络、输入的多个变量、以及有效的反向传播GPU实现以外没有任何特殊的地方。这些想法已经存在了数十年,因此尽管可以说算法的改进并不那么重要,但是结果确实强烈表明大型训练数据集与快速腭化计算的蛮力方法是一个关键。
Dahl与Mohamed利用GPU打破记录是一个早期且相对有限的成功,但是它足以激励人们,并且对这两人来说也为他们带来了在微软研究室实习的机会。在这里,他们可以享受到那时已经出现的计算领域内另一个趋势所带来的益处:大数据。这个词语定义宽松,在机器学习的环境下则很容易理解——大量训练数据。大量的训练数据非常重要,因为没有它神经网络仍然不能做到很好——它们有些过拟合了(完美适用于训练数据,但无法推广到新的测试数据)。这说得通——大型神经网络能够计算的复杂度需要许多数据来使它们避免学习训练集中那些不重要的方面——这也是过去研究者面对的主要难题。因此现在,大型公司的计算与数据集合能力证明了其不可替代性。这两个学生在三个月的实习期中轻易地证明了深度学习的能力,微软研究室也自此成为了深度学习语音识别研究的前沿地带。
微软不是唯一一个意识到深度学习力量的大公司(尽管起初它很灵巧)。Navdeep Jaitly是Hinton的另一个学生,2011年曾在谷歌当过暑假实习生。他致力于谷歌的语音识别项目,通过结合深度学习能够让他们现存的设备大大提高。修正后的方法不久就加强了安卓的语音识别技术,替代了许多之前的解决方案。
除了博士实习生给大公司的产品带来的深刻影响之外,这里最著名的是两家公司都在用相同的方法——这方法对所有使用它的人都是开放的。实际上,微软和谷歌的工作成果,以及IBM和Hinton实验室的工作成果,在2012 年发布了令人印象深刻的名为「深层神经网络语音识别的声学建模:分享四个研究小组的观点」的文章。 作者: 邓文龙 时间: 2017-11-13 09:22
这四个研究小组——有三个是来自企业,确定能从伤脑筋的深度学习这一新兴技术专利中获益,而大学研究小组推广了技术——共同努力并将他们的成果发布给更广泛的研究社区。如果有什么理想的场景让行业接受研究中的观念,似乎就是这一刻了。
这并不是说公司这么做是为了慈善。这是他们所有人探索如何把技术商业化的开始,其中最为突出的是谷歌。但是也许并非Hinton,而是吴恩达造成了这一切,他促使公司成为世界最大的商业化采用者和技术用户者。在2011年,吴恩达在巡视公司时偶遇到了传说中的谷歌人Jeff Dean,聊了一些他用谷歌的计算资源来训练神经网络所做的努力。
这使Dean着迷,于是与吴恩达一起创建了谷歌大脑(Google Brain)——努力构建真正巨大的神经网络并且探索它们能做什么。这项工作引发了一个规模前所未有的无监督式神经网络学习——16000个CPU核,驱动高达10亿权重的学习(作为比较,Hinton在2006年突破性的DBN大约有100万权重)。神经网络在YouTube视频上被训练,完全无标记,并且学着在这些视频中去辨认最平常的物体——而神经网络对于猫的发现,引起了互联网的集体欢乐。
谷歌最著名的神经网络学习猫。这是输入到一个神经元中最佳的一张。
它很可爱,也很有用。正如他们常规发表的一篇论文中所报道的,由模型学习的特征能用来记录标准的计算机视觉基准的设置性能。
这样一来,谷歌训练大规模的神经网络的内部工具诞生了,自此他们仅需继续发展它。深度学习研究的浪潮始于2006年,现在已经确定进入行业使用。
深度学习的上升
当深度学习进入行业使用时,研究社区很难保持平静。有效的利用GPU和计算能力的发现是如此重要,它让人们检查长久存疑的假设并且问一些也许很久之前被提及过的问题——也就是,反向传播到底为何没什么用呢?为什么旧的方法不起作用,而不是新的方法能奏效,这样的问题观点让Xavier Glort 和 Yoshua Bengio在2010年写了「理解训练深度前馈神经网络的难点」(Understanding the difficulty of training deep feedforward neural networks)一文。
在文中,他们讨论了两个有重大意义的发现:
为神经网络中神经元选取的特定非线性激活函数,对性能有巨大影响,而默认使用的函数不是最好的选择。
相对于随机选取权重,不考虑神经层的权重就随机选取权重的问题要大得多。以往消失的梯度问题重现,根本上,由于反向传播引入一系列乘法,不可避免地导致给前面的神经层带来细微的偏差。就是这样,除非依据所在的神经层不同分别选取不同的权重 ——否则很小的变化会引起结果巨大变化。
我希望我是第一个提出这个赏心悦目的方程的,但是看起来有人走在我前面了。
更不要说这里就是希望弄清楚这点。差远了!被想通的东西刚好是相反的:人们的直觉经常出错,尤其是一些看似没有问题的决定及假设通常都是没有根据的。问简单的问题,尝试简单的东西——这些对于改善最新的技术有很大的帮助。其实这一直都在发生,我们看到更多的想法及方法在深度学习领域中被发掘、被分享。例如 G. E. Hinton等的「透过预防特征检测器的互相适应改善神经网络」( Improving neural networks by preventing co-adaptation of feature detectors)。
其构思很简单:为了避免过度拟合,我们可以随机假装在训练当中有些神经元并不在那儿。想法虽然非常简单——被称为丢弃法(dropout)——但对于实施非常强大的集成学习方法又非常有效,这意味着我们可以在训练数据中实行多种不同的学习方法。随机森林——一种在当今机器学习领域中占主导地位的方法——主要就是得益于集成学习而非常有效。训练多个不同的神经网络是可能的,但它在计算上过于昂贵,而这个简单的想法在本质上也可取得相同的结果,而且性能也可有显著提高。
然而,自2006年以来的所有这些研究发现都不是促使计算机视觉及其他研究机构再次尊重神经网络的原因。这个原因远没有看来的高尚:在现代竞争的基准上完全摧毁其他非深度学习的方法。Geoffrey Hinton召集与他共同写丢弃法的两位作家,Alex Krizhevsky 与 Ilya Sutskever,将他们所发现的想法在ILSVRC-2012计算机视觉比赛中创建了一个条目。
对于我来说,了解他们的工作是非常惊人的,他们的「使用深度卷积神经网络在ImageNet上分类」(ImageNet Classification with deep convolutional neural networks)一文其实就是将一些很旧的概念(例如卷积神经网络的池化及卷积层,输入数据的变化)与一些新的关键观点(例如十分高性能的GPU、ReLU神经元、丢弃法等)重新组合,而这点,正是这一点,就是现代深度网络的所有深意了。但他们如何做到的呢?
远比下一个最近的条目好:它们的误差率是15.3%,第二个最近的是26.2%。在这点上——第一个及唯一一个在比赛中的CNN条目——对于CNNs及深度学习整体来说是一个无可争议的标志,对于计算机视觉,它应该被认真对待。如今,几乎所有的比赛条目都是CNNs——这就是Yann LeCun自1989年以来在上面花费大量心血的神经网络模型。还记得上世纪90年代由Sepp Hochreiter 及 Jürgen Schmidhuber为了解决反向传播问题而开发的LSTM循环神经网络吗?这些在现在也是最新的连续任务比如语音处理的处理方法。
这就是转折点。一波对于其可能发展的狂欢在其无可否认的成绩中达到了高潮,这远远超过了其他已知方法所能处理的。这就是我们在第一部分开头所描写的山呼海应比喻的起点,而且它到如今还一直在增长,强化。深度学习就在这儿,我们看不到寒冬。