



在理解了一些关键术语之后,现在让我们深入了解一下深度学习的世界。本节将学习一些著名的深度学习算法及工作原理。
卷积神经网络(convolutional neural network,CNN)是受动物视觉皮层启发的,主要用于图像处理,并且已经成为事实上的标准。卷积层的核心概念是其内核(kernel),该内核也称为滤波器(filter),它可以学习图像特征以区分图像。
卷积内核通常是比图像矩阵短得多的矩阵,并以滑动窗口的方式在整个图像上通过,产生内核与要处理的图像的相应矩阵切片的点积。点积允许程序识别图像中的特征。
考虑以下图像向量。
[[10, 10, 10, 0, 0, 0], [10, 10, 10, 0, 0, 0], [10, 10, 10, 0, 0, 0], [0, 0, 0, 10, 10, 10], [0, 0, 0, 10, 10, 10], [0, 0, 0, 10, 10, 10]]
上面的矩阵对应如图1-2所示的图像。
在应用滤波器检测水平边缘时,滤波器由以下矩阵定义。
[[1, 1, 1], [0, 0, 0], [-1, -1, -1]]
图1-2
原始图像与滤波器卷积后产生的输出矩阵如下。
[[ 0, 0, 0, 0], [ 30, 10, -10, -30], [ 30, 10, -10, -30], [ 0, 0, 0, 0]]
在图像的上半部分或下半部分没有检测到边缘。从左边缘移向图像的垂直中间时,会发现一个清晰的水平边缘。再向右移动,可以看到有两个不清晰的水平边缘实例,然后又是一个清晰的水平边缘实例。当然,现在发现的清晰水平边缘与上一个边缘的颜色是相反的。
因此,通过这种简单的卷积,就可以发现图像文件中的模式。CNN还使用了其他几个概念,如池化(pooling)。
池化的概念如图1-3所示。
图1-3
简单来说,池化就是将多个图像像素合并为一个像素的方法。图1-3中使用的池化方法称为最大池化(max pooling),其中仅将所选滑动窗口内核中的最大值保留在结果矩阵中。这极大地简化了图像,并有助于训练通用的滤波器,而不是单个图像独有的滤波器。
生成对抗网络(generative adversarial network,GAN)是人工智能领域中一个相当新的概念,并且是近年来的重大突破。它是由Ian Goodfellow在2014年的研究论文中提出的。GAN背后的核心思想是并行运行两个相互对抗的神经网络。第一个神经网络执行生成样本的任务,称为生成器(generator)。另一个神经网络则试图根据先前提供的数据对样本进行分类,称为鉴别器(discriminator)。
图1-4是生成对抗网络(GAN)的示意图。
图1-4
在这里,随机图像向量经过一个生成过程以产生假图像,然后由已经用真实图像训练的鉴别器进行分类。具有较高分类置信度的假图像进一步被生成,而置信度较低的假图像则被丢弃。随着时间的推移,鉴别器将学会正确识别假图像,而生成器则在多次迭代之后能够伪造越来越以假乱真的图像。
在学习结束时,我们拥有的是一个可以产生接近真实数据的系统,也是一个可以对样本进行非常高精度分类的系统。
后续章节将介绍更多有关GAN的信息。
注意:
要深入研究GAN,可以阅读Ian Goodfellow的论文。其网址如下。
https://arxiv.org/abs/1406.2661
世界上的数据并非都是独立于时间而存在的。例如,股票市场的价格就是与时间序列密切相关的数据。
因此,当数据序列具有时间维度时,如果要拟合数据,则随着时间的推移,这些数据不应该是保持不变的数据块,这样才会更直观,并且会产生更好的预测准确率。在许多用例中,这样的思路已被证明是正确的,并导致了神经网络架构的出现,这些架构可以在学习和预测时将时间作为一个因素。
循环神经网络(recurrent neural network,RNN)就是这样的架构。这种网络的主要特点是:它不仅以顺序方式将数据从一层传递到另一层,而且还将从任何上一层获取数据。在第1.2节“机器学习和深度学习”中介绍了一个带有两个隐藏层的简单人工神经网络(artificial neural network,ANN)的示意图(见图1-1)。在图1-1中可以看到,数据仅由上一层馈入下一层。但是,包含两个隐藏层的RNN则不像简单ANN那样强制要求仅由第一个隐藏层提供对第二个隐藏层的输入,在这里可以从任何上一层获取数据,如图1-5中的虚线箭头所示。
与简单的人工神经网络(ANN)相比,循环神经网络(RNN)使用了一种称为通过时间反向传播(backpropagation through time,BPTT)的方法,而不是ANN中的经典反向传播。BPTT可确保时间维度得到很好的表示,因为在通过时间反向传播算法中,已经在与输入相关的函数中定义了时间。
图1-5
在循环神经网络(RNN)中观察到梯度消失和爆炸是很常见的。这些是实现深度RNN的严重瓶颈,其中,数据以特征之间关系的形式呈现,这比线性函数更复杂。
为了克服梯度消失问题,德国研究人员Sepp Hochreiter和Juergen Schmidhuber在1997年引入了长短期记忆(long short-term memory,LSTM)的概念。
LSTM已被证明在自然语言处理(NLP)、图像字幕生成、语音识别和其他领域非常有用,它在引入后打破了记录。LSTM将信息存储在网络之外,可以随时调用,很像计算机系统中的二级存储设备。这允许将延迟奖励引入网络。
在后续章节中,我们将深入研究LSTM和CNN。