第1章 深度学习
1.1 深度学习简介
人工智能近年来已经逐渐被大众所熟知,它试图理解人类智能的本质,并使得机器具有比肩甚至超过人类的推理、感知、学习、交流等能力。相关研究覆盖了机器视觉、智能搜索、语言理解等领域,并取得了显著的成果。一般的人工智能任务需要从数据中提取有用的特征,并利用机器学习算法来得到相关结果。对于很多任务而言,依靠专家提取数据特征,不仅流程复杂,而且特征选取的好坏直接关系到数据表示的质量,并影响到后续机器学习算法的结果。与之相对的,借助算法让机器自动学习数据的隐式特征,可以充分地剔除数据中的无效信息,提炼原始数据的更好表示,从而在后续任务上有事半功倍的效果,这就是表示学习的基本思路。
表示学习面临的重要挑战是语义鸿沟问题。语义鸿沟是指输入数据的底层特征和上层理解之间的差异性。以判断两张图片的相似性为例,人类是通过识别图片中的事物,提取并理解重要的语义,从而判断两张图片是否相似。而机器得到的输入是由大量像素构成的数据矩阵,不同图片在像素级别的差异性非常大。如果表示学习只依靠像素级特征(底层特征)进行预测,会给后续机器学习算法带来更大的挑战。因此提取一个更好的表示来反映出数据的高层语义特征是完成人工智能任务的关键所在。
深度学习利用一系列较简单的底层特征来构建更加抽象的高层特征,从而获得数据的分布式特征表示,是表示学习发展的重要成果。与浅层学习不同,深层结构可以对输入特征进行连续的非线性变换,从而指数级地增加表示能力。图 1.1中给出一个含有多个隐藏层的深度学习模型。图 1.1 中每一个节点表示一个基本的计算及计算得到的值,箭头方向代表数据流向,即底层特征如何参与构建高层特征。深度是指原始数据进行非线性特征变换的次数,即图中从输入到输出的最长路径的长度。
在一些复杂任务中,传统机器学习方法的流程往往由多个*立模块组成,每个模块分开学习。例如,一个典型的自然语言理解问题需要分词、词性标注、句法分析、语义分析等多个*立步骤。这种学习方式下每个模块都需要单*优化,其优化目标和任务总体目标并不一致,而且前面的错误会对后续部分造成很大的影响。与之相反,深度学习采用端到端的学习方法,在学习过程中不进行分模块或分阶段的训练,直接优化任务的总体目标。在端到端学习中,一般不需要明确地给出不同模块或阶段的功能,中间过程不需要人为干预。
图1.1 一个含有多个隐藏层的深度学习模型
目前深度学习采用的模型主要是神经网络模型。神经网络模型是一种通用的机器学习算法,最初目标是用于模拟人类的大脑。人类所接收到的一切刺激经过感受器获取并输入到传入神经,之后经过多级神经元激活而传导到中枢神经系统。人脑就根据传入的信息判断接收到的刺激并进行相应的动作。与之类似,神经网络模型利用大量的人工神经元连接进行计算。不同神经元之间可调节的权重看作神经元之间的连接强度。而神经元内的非线性激活函数可用于模拟人类神经元的激活现象。神经网络模型的参数使用反向传播算法进行更新,从而使得每个内部组件并不需要直接得到监督信息,而是使用*终的监督信息计算得到。
深度学习的提出使得机器一定程度上可以模仿人类的思考等活动,解决了多种复杂问题,推动人工智能相关技术取得很大进步。相较于传统机器学习方法,深度学习主要具有以下优点。
(1)取消特征工程。传统机器学习算法通常需要复杂的特征工程,需要在输入数据上进行数据分析并提取*优特征传递给后续算法。而深度学习完全避免了这一步骤,只需要输入必要数据就可以自动提取特征。
(2)适用性强。与**的机器学习算法相比,深度学习技术可以更容易地适应不同的领域和应用。不同领域使用深度学习的基本思想和技术往往是可以互相迁移的。而且,TensorFlow、Pytorch 等多种框架的提出使得深度学习模型的实现变得简单易懂,极大地降低了相关研究的准入门槛。
(3)学习能力强。深度学习可以获取数据中非常复杂的底层模式。其采用的神经网络模型的层数和宽度都可以自由扩展,理论上可以拟合任意函数,能解决非常复杂的问题。而且从结果来看,深度学习模型的学习能力远远超过传统模型,在许多领域中已经取得了突破性的结果,包括语音处理、自然语言处理、计算机视觉等。
1.2 深度学习**模型
经过十多年的发展,众多的深度学习模型被提出并应用在各个领域中。本节选取其中部分代表性模型进行介绍,为深入理解本书提供必要的背景知识。
1.2.1 卷积神经网络
卷积神经网络(convolutional neural network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元。相比于传统的全连接网络,这种结构经过反向传播的训练后能够更加高效而准确地提取特征。卷积神经网络通常包括一个全连接层、若干卷积层、若干池化层和一个输出层。卷积神经网络善于拟合边缘特征,更多层的网络能从低级特征中迭代提取更复杂的特征。具体到自然语言处理的相关工作,卷积网络能够作用在输入的词向量阵列上,通过卷积和池化操作,提取语义上的边缘特征,*终实现对于高级语义的良好拟合。基于卷积神经网络的关系抽取框架如图 1.2 所示。
图 1.2 基于卷积神经网络的关系抽取框架
卷积层先以 w 定义局部特征的采样窗口宽度(图 1.2 中 w = 3,即每个卷积核连续观测 3 个词汇),继而输入向量与卷积核进行点乘运算。卷积核是需要学习的参数W ∈ Rdk×wdx,卷积核的数量可以通过超参数 dk 调节。具体来说**步卷积操作的运算如下:
fij = Wi [xj.1; xj ; xj+1] (1.2.1)
式中,[x; y] 表示 x 和 y 的垂直拼接;fij 表示第 i 个卷积核与目标词向量运算后的第 j 个值,i 和 j 的取值范围分别是 [1, dk] 和 [1,m]。在运算过程中,超出取值范围的变量如 x0 和 xm+1 均取全零向量。*大池化层挑选 fi 中*大的值f. i = max(fij)。接下来 f. 被全连接(通常是一个非线性的双*正切激活函数)映射到*终的关系表示向量 r。*终的关系表示向量经过关系矩阵的作用后,再通过 softmax 函数归一化á,得到目标关系的似然概率分布,其运算过程如下:
.pj =e(Wrr+br)jn Σi=1e(Wrr+br)i, j ∈ 1, , n (1.2.2)
式中,Wr ∈ Rn×d 和 br ∈ Rn 均为关系矩阵参数;.pj ∈ Rn 为关系似然概率分布,n 是目标关系数量。*终得到关系似然概率后可根据交叉熵等损失函数进行关系抽取的训练。
1.2.2 循环神经网络
循环神经网络(recurrent neural network, RNN)是为了处理序列数据而提出的神经网络模型。在循环神经网络中,一个序列当前的输出与前面的输出也有关,具体的表现形式为循环神经网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,循环神经网络能够对任何长度的序列数据进行处理,然而实际应用中发现长序列的循环神经网络在训练时会出现梯度消失或者梯度爆炸的问题,因此在关系抽取上更常用的是长短期记忆(long short-term memory,LSTM)网络[1]。LSTM 网络通过刻意的设计来避免长期依赖问题,具体包括三个门(输入门、遗忘门和输出门)及一个记忆单元。所有这些组件都用当前的输入向量 xt 和前一个隐藏层状态 ht.1 来生成当前隐藏层的状态。具体运算规则如下:
it = σ(Wi[xt] + Uiht.1 + Vict.1 + bi) (1.2.3)
ft = σ(Wf [xt] + Ufht.1 + Vf ct.1 + bf ) (1.2.4)
ct = ittanh(Wc[xt] + Ucht.1 + Vcct.1 + bc) + ftct.1 (1.2.5)
ot = σ(Wo[xt] + Uoht.1 + Voct + bo) (1.2.6)
ht = ottanh(ct) (1.2.7)
式中,σ 是 sigmoid 激活函数;W、U、V 均为网络参数。同时,对很多应用来说反向序列和正向序列同样有价值,因此 Bi-LSTM 在保证正向链路的同时,额外维护了一份方向相反的序列。Bi-LSTM 使得当前的词汇既能看到历史记录也能看到未来的词汇特征,加强了网络的表示能力。基于双向循环神经网络的关系抽取框架如图 1.3 所示,*终的关系表示向量为所有隐藏状态的综合运算。
图 1.3 基于双向循环神经网络的关系抽取框架
1.2.3 注意力模型
深度学习中的注意力模型早期主要应用于图像处理领域[2],来源于人类的视觉注意力机制。人眼通过快速扫描眼前图像,获得需要重点关注的区域,然后将有限的注意力集中在重点区域上,以获取*有效的信息。深度学习中的注意力机制的核心目标也是从众多信息中选择出对当前任务目标更关键的信息。注意力模型具有参数少、并行度高、效果好等优点,被广泛地应用在各种类型的深度学习任务中,并取得了显著的成果。
自然语言处理领域中的注意力模型早期主要用于机器翻译,其本质是通过将源数据与目标数据对齐,进而强调出当前的关注点。在机器翻译的场景中,译句当前词要对应到原句重点词时,需要用注意力机制调节权重。举个例子,在句子“I arrived at the bank after crossing the river”中,“bank”既可以翻译成“河岸”也可以翻译成“银行”,集成注意力机制的解码器会在解码“bank”时给予“river”更大的权重,以给出正确的解码结果“河岸”。显然,传统的循环神经网络在处理长依赖时无法保留太多的关联信息,而且序列处理无法并行造成了效率低下,而注意力机制的提出可以在不同程度上解决上述两个问题。因此,在 2017年,Google 大名鼎鼎的自注意力模型(self-attention model)[3] 应运而生。自注意力模型通过句子与自己的字对齐,不仅强调出了词汇之间的关联性,而且意外地收获了极强的编解码能力,即仅通过自注意力本身即可完成句子信息的完全编码或者解码。这意味着不再需要额外的复杂神经网络模型,如卷积神经网络、循环神经网络等。完全的自注意力机制在保证模型效果的同时,大幅地降低了参数规模,无须序列执行,极大地提升了模型执行效率。基于 Google 自注意力模型的句子编码器是一个多层的注意力结构,本书介绍核心的注意力运算部分,如图 1.4 所示。Q、K、V 是注意力模型的三要素,即对齐向量、源数据和目标数据。在自注意力机制里,三者均为句子本身的词向量输入。点乘注意力的运算公式为
Attention(Q,K, V ) = softmax(QKT√dK )V (1.2.8)
式中,T 为转置;dK 为放缩尺度标度à。多头注意力(multi-head attention)是多个点乘注意力结构的结合,将一个目标向量切分成多个头,从每个头上学习不同维度上的表示特征,有助于提高模型的拟合能力。
图 1.4 自注意力机制
1.2.4 胶囊网络
胶囊网络是“深度学习之父”Hinton 提出的新型神经网络模型,目的是解决传统神经网络模型中空间或者时间上的平移不变性带来的负面影响,转而以一种松散的胶囊路由的方式聚合高级别特征[4]。
温馨提示:请使用泸西县图书馆的读者帐号和密码进行登录