
2.3 走向深度学习
深度学习的概念源于对人工神经网络的研究,但是并不完全等同于传统神经网络。不过在叫法上,很多深度学习算法中都会包含“神经网络”这个词,比如:卷积神经网络、循环神经网络。所以,深度学习可以说是在传统神经网络基础上的升级,但一定要记住的是,深度学习绝不仅仅是神经网络。
深度学习的发展是对神经网络发展的一个突破与演变,虽然在前面的讲解中,我们见证了神经网络奇妙而又强大的能力,但在神经网络的发展历史中遇到过各种难题。
Minsky就对单层神经网络无法解决异或问题提出过尖锐的批评,不过使用一个增加了隐藏层的多层神经网络就可以很轻易地解决异或问题,同时也有很好的非线性分类效果。而计算量与权重训练的问题,在1986年Rumelharr和Hinton等人提出了反向传播(Backpropagation,BP)算法中得到了较好的解决。多层BP神经网络当时就已经可以在图像识别、语音识别等领域发挥重要的作用。
值得注意的是,当时还很年轻的Hinton不仅在1986年提出神经网络的概念,在2006年,正式提出了深度学习的概念,为当时正处于研究疲软期的神经网络的发展带来新的研究高峰。
神经网络的快速发展带来的主要问题依然是计算量带来的不实用性。例如,被用于图像处理的多层神经网络,需要调整的权重值过多,训练次数要求过高,例如Hinton的研究生Yann LeCun在1989年博士论文中就提出可以利用多层神经网络来进行手写数字的识别。尽管算法可以成功执行,但计算代价非常巨大。神经网络的训练时间达到了3天,因而无法投入实际使用。这其中有一个很重要的原因就是梯度消失问题。通俗来讲,就是指神经网络层数过多后,误差的传播将随着层数的增加而逐步减弱,以至于神经网络的权重值难以更新,甚至导致其无法训练,这些问题都将在深度学习中得到较好解决。需要注意的是,Yann LeCun在后续提出的卷积神经网络,是目前深度学习领域中应用最为广泛的图像识别网络结构。
举一图像识别例子,来直观感受一下多层神经网络遇到的问题。如图2-36所示的手写数字识别,这是神经网络的研究方向之一。在之前的例子中,我们了解到多层神经网络通常是由输入层,隐藏层和输出层组成的。小红看电影的例子中的神经网络就有3个输入。1个输出,共16个权重值待调整。

图2-36 手写数字识别
如图2-37所示,手写的数字识别的神经网络输入层将会有784个输入(因为训练集图片的大小是28×28)。有2个隐藏层,各有16个神经元。10个输出,分别代表10个输出的数字。这里通过计算可以得到,这个神经网络一共有784×16×16×10=2007040,即200多万个权重值可以被调整。这还仅仅是一张784像素小图片。而如今普通的一张照片可以轻易达到几百甚至上千万像素。以目前深度学习被广泛应用的人脸识别的例子来说,想要达到通过神经网络进行人脸识别的效果,就需要层数与神经元的数量够多,而传统的BP神经网络则不可避免地会带来计算量过大的问题,还会带来梯度弥散等问题而导致训练困难重重。此时,就是深度学习发挥作用的时候了。

图2-37 用于手写数字识别的神经网络
2006年,Hinton在Science及相关期刊上发表了论文,首次提出了“深度信念网络”的概念。与传统的训练方式不同,“深度信念网络”有一个“预训练”(pre-training)的过程,这可以很方便地让神经网络中的权值找到一个接近最优解的值,之后再使用“微调”(fine-tuning)技术来对整个网络进行优化训练。这两种技术的运用大幅度减少了训练多层神经网络的时间。Hinton给多层神经网络相关的学习方法赋予了一个新名词——“深度学习”。
很快,深度学习在语音识别领域崭露头角。接着,2012年,深度学习技术又在图像识别领域大展拳脚。在ImageNet竞赛中,用多层的卷积神经网络成功地对包含一千个类别的一百万张图片进行了训练,取得了分类错误率15%的好成绩,这个成绩比第2名高了近11个百分点,充分证明了多层神经网络识别效果的优越性,见图2-38。
目前,在深度学习领域,学者研究出了一系列方法与技术,来使深度学习更好地进行训练。例如,随机梯度下降与反向传播等。通过这些技术,更深、更大的网络能够被训练和实际使用。目前,训练一个10层以上的神经网络非常常见。而且,在诸多实际问题上,层数深、大的神经网络比起浅层神经网络,例如单层或者只有一层隐藏层的神经网络,表现得更加出色。

图2-38 ImageNet中的图像识别案例