购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 机器学习模型介绍

2.2.1 线性模型

线性模型是机器学习中应用最广泛的模型,指通过样本特征的线性组合来进行预测的模型 [11] 。给定一个 D 维样本 x =[ x 1 ,…, x D T ,其线性组合函数为

其中 w =[ w 1 ,…, w D T D 维的权重向量, b 为偏置。线性回归就是典型的线性模型,直接用 f x ; w )来预测输出目标 y f x ; w )。

在分类问题中,由于输出目标 y 是一些离散的标签,而 f x ; w )的值域为实数,因此无法直接用 f x ; w )来进行预测,需要引入一个非线性的决策函数 g · )来预测输出目标 y = g ( f ( x ; w ))。

对于二分类问题, g · )可以是符号函数,定义为

f x ; w )= 0时不进行预测。上式定义了一个典型的二分类问题的决策函数。

下面主要介绍四种不同线性分类模型:逻辑回归、Softmax回归、感知机和支持向量机。这些模型的区别主要在于使用了不同的损失函数。

逻辑回归又称逻辑分析,是一种广义的线性回归模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。逻辑回归与多重线性回归有很多相似之处。它们的模型形式基本相同,都具有 w T x + b ,其中 w b 是待求参数。逻辑回归通过函数 L w T x + b 对应一个隐形变量 p p = L ( w T x + b ),然后根据 p 和1- p 的大小决定因变量的值。逻辑回归的因变量可以是二类的,也可以是多类的,但是二分类的更为常用,也更加容易解释 [12]

Softmax回归也称为多项或多类的逻辑回归,是逻辑回归在多分类问题上的推广。在多分类问题中,类标签 y 可以取两个以上的值。Softmax回归模型对于诸如MNIST手写数字分类等问题很有用。

感知机由弗兰克·罗森布拉特(Frank Rosenblatt)于1957年提出,是一种广泛使用的线性分类器,感知机可谓是最简单的人工神经网络,只有一个神经元 [13] 。感知机是对生物神经元的简单数学模拟,有与生物神经元相对应的部件,如权重(突触)、偏置(阈值)及激活函数(细胞体),输出为+1或-1。感知机是一种简单的两类线性分类模型,其分类准则为

罗森布拉特给出了相应的感知机学习算法,常用的有感知机学习、最小二乘法和梯度下降法。在人工神经网络领域中,感知机也指单层的人工神经网络,以区别于较为复杂的多层感知器。

支持向量机是一个经典的二分类算法,其找到的分割超平面具有更好的鲁棒性,因此广泛使用在很多任务上,并表现出了很强优势 [14]

给定一个二分类器数据集 ,其中 y n ∈ {+1,-1},如果两类样本是线性可分的,即存在一个超平面 w T x + b =0,将两类样本分开,那么对于每个样本都有

数据集 D 中每个样本 x n 到分割超平面的距离为:

我们定义间隔 γ 为整个数据集 D 中所有样本到分割超平面的最短距离:

如果间隔 γ 越大,其分割超平面对两个数据集的划分越稳定,不容易受噪声等因素影响。支持向量机的目标是寻找一个超平面( w *, b *)使得 γ 最大。

由于同时缩放 w k w 和b→ k b不会改变样本 x n 到分割超平面的距离,我们可以限制‖ w ‖· γ = 1,则上面的公式等价于

数据集中所有满足 y n w T x n + b )=1的样本点,都称为支持向量。

对于一个线性可分的数据集,其分割超平面有很多个,但是间隔最大的超平面是唯一的。进一步可以将问题转化为一个求解凸二次规划的问题。与逻辑回归和神经网络相比,支持向量机在学习复杂的非线性方程时提供了一个更为清晰、更加强大的方式。具体来说就是在线性可分时,在原空间寻找两类样本的最优分类超平面,在线性不可分时,加入松弛变量并通过使用非线性映射将低维度输入空间的样本映射到高维空间使其变得线性可分,这样就可以在该特征空间中寻找最优分割超平面 [15]

表2-2给出了几种常见的线性模型的比较。在逻辑回归和Softmax回归中, y 为类别的one-hot向量表示;在感知机和支持向量机中, y 为{+1,-1}。

表2-2 几种常见的线性模型对比

2.2.2 非线性模型

2.2.2.1 人工神经网络

人工神经网络是指一系列受生物学和神经科学启发而形成的数学模型。这些模型主要是通过对人脑的神经元网络进行抽象,构建人工神经元,并按照一定拓扑结构来建立人工神经元之间的连接,从而模拟生物神经网络。在人工智能领域,人工神经网络也常常简称为神经网络或神经模型 [2]

人工神经元,简称神经元,是构成神经网络的基本单元,其主要模拟生物神经元的结构和特性,接收一组输入信号并产生输出。

假设一个神经元接收 D 个输入 x 1 x 2 ,…, x D ,令向量 x =[ x 1 x 2 ;… x D x D ]来表示这组输入,并用净输入(Net Input) z ∈R 表示一个神经元所获得的输入信号 x 的加权和。

净输入 z 在经过一个非线性函数 f · )后,得到神经元的活性值 a

a = f ( z )

其中非线性函数 f · )称为激活函数。

1.激活函数

激活函数在神经元中非常重要。为了增强网络的表示能力和学习能力,激活函数需要具备以下性质:

(1)连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数。

(2)激活函数及其导函数要尽可能简单,以便提高网络计算效率。

(3)激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。

在神经网络中常用的激活函数包括:Sigmoid型函数、Hard-logistic函数、Hard-Tanh函数和ReLU函数。其中Sigmoid型函数与ReLU函数是影响最大的两类激活函数。

Sigmoid 型函数是指一类S型曲线函数,为两端饱和函数。常用的Sigmoid型函数有逻辑函数和Hard-Tanh函数 [16-17] 。逻辑函数定义为:

逻辑函数可以看成一个“挤压”函数,把一个实数域的输入“挤压”到(0,1)。当输入值在0附近时,Sigmoid型函数近似为线性函数;当输入值靠近两端时,对输入进行抑制。输入越小,越接近于0;输入越大,越接近于1。这样的特点也和生物神经元类似,对一些输入会产生兴奋(输出为1),对另一些输入产生抑制(输出为0)。

Hard-Tanh函数定义为:

Hard-Tanh函数可以看作放大并平移的逻辑函数,其值域是(-1,1)。

ReLU函数,也叫修正函数,是目前深度神经网络中经常使用的激活函数。ReLU 实际上是一个斜坡函数,定义为

ReLU函数的优点是,采用ReLU的神经元只需要进行加、乘和比较的操作,计算更加高效。ReLU函数也被认为具有生物学合理性,比如单侧抑制、宽兴奋边界(即兴奋程度可以非常高)。而其缺点为,ReLU函数的输出是非零中心化的,给后一层的神经网络引入偏置偏移,会影响梯度下降的效率。此外,ReLU神经元在训练时比较容易“死亡”,也就是说某个神经元可能在训练过程中永远不可能被激活。

此外,基于ReLU函数的特点,研究人员还提出了带泄露的ReLU、带参数的ReLU、ExponentialLU、Gaussian Error LU等函数,其他还有Softplus函数、Swish函数、Maxout单元等函数 [18-19]

2. 网络结构

一个生物神经细胞的功能比较简单,而人工神经元只是生物神经细胞的理想化和简单实现,功能更加简单。要想模拟人脑的能力,单一的神经元是远远不够的,需要通过很多神经元一起协作来实现复杂的功能。这样通过一定的连接方式或信息传递方式进行协作的神经元可以看作一个网络,就是神经网络。

到目前为止,研究者发明了各种各样的神经网络结构。目前常用的神经网络结构有前馈网络、记忆网络与图网络 [19]

3. 前馈神经网络

前馈神经网络是最早发明的简单人工神经网络 [20] 。前馈神经网络由多层的逻辑回归模型(连续的非线性函数)组成。在前馈神经网络中,各神经元分别属于不同的层。每一层的神经元可以接收前一层神经元的信号,并产生信号输出到下一层。第0层称为输入层,最后一层称为输出层,其他中间层称为隐藏层。整个网络中无反馈,信号从输入层向输出层单向传播。

前馈神经网络具有很强的拟合能力,常见的连续非线性函数都可以用前馈神经网络来近似。根据通用近似定理,神经网络在某种程度上可以作为一个“万能”函数来使用,可以用来进行复杂的特征转换,或逼近一个复杂的条件分布。

在机器学习中,输入样本的特征对分类器的影响很大。以监督学习为例,好的特征可以极大提高分类器的性能。因此,要取得好的分类效果,需要将样本的原始特征向量 x 转换为更有效的特征向量 φ x ),这个过程叫作特征抽取。

多层前馈神经网络可以看作一个非线性复合函数 φ R D R D ′,将输入 x R D '映射到输出 φ x )∈ R D '。因此,多层前馈神经网络也可以看成一种特征转换方法,其输出 φ x )作为分类器的输入进行分类。

梯度下降法需要计算损失函数对参数的偏导数,如果通过链式法则逐一对每个参数进行求偏导比较低效。在神经网络的训练中常使用反向传播算法来高效地计算梯度。

4. 反向传播算法

假设采用随机梯度下降进行神经网络参数学习,给定一个样本( x y ),将其输入神经网络模型中,得到网络输出为 y ˆ。假设损失函数为 L ( y , y ˆ) ,要进行参数学习就需要计算损失函数关于每个参数的导数 [20]

不失一般性,对第 l 层中的参数 W l )和 b l )计算偏导数。因为 的计算涉及向量对矩阵的微分,十分繁琐,因此先计算 L ( y , y ˆ) 关于参数矩阵中每个元素的偏导数 。根据链式法则,有

上式中的第二项都是目标函数关于第 l 层的神经元 z l )的偏导数,称为误差项,可以一次计算得到。这样只需要计算三个偏导数,分别为

下面分别来计算这三个偏导数。

(1)计算偏导数

z l )= W l a l -1) + b l ,偏导数

其中 为权重矩阵 W l )的第 i 行, 表示第 i 个元素为 ,其余

为0的行向量。

(2)计算偏导数

因为 z l )和 b l )的函数关系为 z l )= W l a l -1) + b l ,所以偏导数

M l × M l 的单位矩阵。

(3 )计算偏导数

偏导数 表示第 l 层神经元对最终损失的影响,也反映了最终损失对第 l 层神经元的敏感程度,因此一般称为第 l 层神经元的误差项,用 δ l 来表示。

误差项 δ l 也间接反映了不同神经元对网络能力的贡献程度,从而比较好地解决了贡献度分配问题。根据 ,有

根据 a l f l z l ),其中 f l · )为按位计算的函数,因此有

因此,根据链式法则,第 l 层的误差项为

其中⊙是向量的哈达玛积运算符,表示每个元素相乘。从上式可以看出,第 l 层的误差项可以通过第 l +1层的误差项计算得到,这就是误差的反向传播。反向传播算法的含义是:第 l 层的一个神经元的误差项(或敏感性)是所有与该神经元相连的第 l + 1层的神经元的误差项的权重和。然后,乘上该神经元激活函数的梯度。

神经网络的参数学习比线性模型要更困难,主要原因有两点:非凸优化问题和梯度消失问题。

2.2.2.2 卷积神经网络

卷积神经网络是一种具有局部连接、权重共享等特性的深层前馈神经网络 [21] 。卷积神经网络最早主要用来处理图像信息。在用全连接前馈网络来处理图像时,会存在以下两个问题:

(1)参数太多:如果输入图像大小为100×100×3(即图像高度为100像素,宽度为100像素以及RGB 3个颜色通道),在全连接前馈网络中,第一个隐藏层的每个神经元到输入层都有100×100×3=30000个互相独立的连接,每个连接均对应一个权重参数。随着隐藏层神经元数量的增多,参数的规模也会急剧增大。这会导致整个神经网络的训练效率非常低,也很容易出现过拟合 [22]

(2)局部不变性特征:自然图像中的物体都具有局部不变性特征,比如尺度缩放、平移、旋转等操作不影响其语义信息。而全连接前馈网络很难提取这些局部不变性特征,一般需要进行数据增强来提高性能。

卷积神经网络是受生物学上感受野机制的启发而提出的。感受野机制主要是指听觉、视觉等神经系统中一些神经元的特性,即神经元只接受其所支配的刺激区域内的信号。在视觉神经系统中,视觉皮层中的神经细胞的输出依赖于视网膜上的光感受器。视网膜上的光感受器受刺激兴奋时,将神经冲动信号传到视觉皮层,但不是所有视觉皮层中的神经元都会接受这些信号。一个神经元的感受野是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元。

目前的卷积神经网络一般是由卷积层、汇聚层和全连接层交叉堆叠而成的,卷积神经网络有三个结构上的特性:局部连接、权重共享以及汇聚。这些特性使卷积神经网络具有一定程度上的平移、缩放和旋转不变性。和前馈神经网络相比,卷积神经网络的参数更少 [23-26]

卷积神经网络主要应用在图像和视频分析的各种任务(比如图像分类、人脸识别、物体识别、图像分割等)上,其准确率一般远远高于其他的神经网络模型。近年来卷积神经网络也被广泛地应用到自然语言处理、推荐系统等领域。

2.2.2.3 循环神经网络

循环神经网络是一类具有短期记忆能力的神经网络,如图2-2所示。在循环神经网络中,神经元不但可以接受其他神经元的信息,也可以接受自身神经元的信息,形成具有环路的网络结构。和前馈神经网络相比,循环神经网络更加符合生物神经网络的结构。循环神经网络已经被广泛应用在语音识别、语言模型以及自然语言生成等任务上 [27]

图2-2 循环神经网络

循环神经网络的参数学习可以通过随时间反向传播算法来进行。随时间反向传播算法即按照时间的逆序将错误信息一步步地往前传递。当输入序列比较长时,会存在梯度爆炸或消失问题,也称为长程依赖问题。为了解决这个问题,人们对循环神经网络进行了很多的改进,其中最有效的改进方式为引入门控机制,包括有选择地加入新的信息,并有选择地遗忘之前累积的信息。这一类网络可以称为基于门控的循环神经网络。当前,基于门控的循环神经网络中,长短期记忆网络和门控循环单元网络比较热门。

长短期记忆(long short-term memory,LSTM)网络是循环神经网络的一个变体,可以有效地解决简单循环神经网络的梯度爆炸或消失问题 [28]

根据已有的方法解决梯度消失问题,提出改变模型,比如让 U I ,同时令 为单位矩阵,即:

其中 是一个非线性函数, θ 为参数。上式中, h t h t -1 之间为线性依赖关系,且权重系数为1,这样就不存在梯度爆炸或消失问题。但这种改变也丢失了神经元在反馈边上的非线性激活的性质,从而也降低了模型的表示能力。因此提出更进一步的改进方法:

这样 h t h t -1 之间既有线性关系,也有非线性关系,并且可以缓解梯度消失问题。但这种改进依然存在两个问题:

梯度爆炸问题:令 为在第 k 时刻函数 的输入,在计算误差项 时,梯度可能会过大,从而导致梯度爆炸问题。

记忆容量问题:随着 h t 不断累积存储新的输入信息,会发生饱和现象。假设 为逻辑函数,则随着时间 t 的增长, h t 会变得越来越大,从而导致 h 变得饱和。也就是说,隐状态 h t 可以存储的信息是有限的,随着记忆单元存储的内容越来越多,其丢失的信息也越来越多。

在上式的基础上,LSTM网络主要从以下两个方面进行改进。

新的内部状态:LSTM网络引入一个新的内部状态 c t R D 专门进行线性的循环信息传递,同时(非线性地)输出信息给隐藏层的外部状态 h t R D 。在每个时刻 t ,LSTM 网络的内部状态 c t 记录了到当前时刻为止的历史信息。

门控机制:在数字电路中,门为一个二值变量{0,1}。0代表关闭状态,不许任何信息通过;1代表开放状态,允许所有信息通过。LSTM网络引入门控机制来控制信息传递的路径。这三个“门”分别为输入门、遗忘门和输出门。这三个门的作用分别为:输入门控制当前时刻的候选状态有多少信息需要保存;遗忘门控制上一个时刻的内部状态需要遗忘多少信息;输出门控制当前时刻的内部状态有多少信息需要输出给外部状态。

记忆循环神经网络中的隐状态存储了历史信息,可以看作一种记忆。在简单循环网络中,隐状态每个时刻都会被重写,因此可以看作一种短期记忆。在神经网络中,长期记忆可以看作网络参数,隐含了从训练数据中学到的经验,其更新周期要远远长于短期记忆。而在LSTM网络中,记忆单元 c 可以在某个时刻捕捉到某个关键信息,并有能力将此关键信息保存一定的时间。记忆单元 c 中保存信息的生命周期要长于短期记忆 h ,但又远远短于长期记忆,因此称为长短期记忆。长短期记忆是指长的“短期记忆”。

LSTM网络是目前为止最成功的循环神经网络模型,被成功应用在很多领域,比如语音识别、机器翻译、语音模型以及文本生成。LSTM网络通过引入线性连接来缓解长距离依赖问题。虽然LSTM网络取得了很大的成功,但其结构的合理性一直受到广泛关注。人们不断尝试对其进行改进来寻找最优结构,比如减少门的数量、提高并行能力等。

LSTM网络的线性连接以及门控机制是一种十分有效且避免梯度消失问题的方法 [28] 。这种机制也可以用在深层的前馈网络中,比如残差网络和高速网络都通过引入线性连接来训练非常深的卷积网络。对于循环神经网格,这种机制也可以用在非时间维度上,比如Gird LSTM网络等。

门控循环单元网络是一种比LSTM网络更加简单的循环神经网络 [29-30] 。GRU网络引入门控机制来控制信息更新的方式。和LSTM不同,GRU不引入额外的记忆单元,GRU网络也是在公式 的基础上引入一个更新门来控制当前状态需要从历史状态中保留多少信息(不经过非线性变换),以及需要从候选状态中接受多少新信息。

循环神经网络可以被应用到很多不同类型的机器学习任务中。根据这些任务的特点可以分为以下几种模式:序列到类别模式、同步的序列到序列模式、异步的序列到序列模式。

如果将循环神经网络按时间展开,每个时刻的隐状态 h t 看作一个节点,那么这些节点构成一个链式结构,每个节点 t 均收到其父节点的消息,更新自己的状态,并传递给其子节点。而链式结构是一种特殊的图结构,可以比较容易地将这种消息传递的思想扩展到任意的图结构上。

2.2.2.4 网络优化与正则化

虽然神经网络具有非常强的表达能力,但是将神经网络模型应用到机器学习中时依然存在一些难点问题。主要是优化问题与泛化问题。

1.优化算法

目前,深度神经网络的参数学习主要是通过梯度下降法来寻找一组可以最小化结构风险的参数。在具体实现中,梯度下降法可以分为批量梯度下降、随机梯度下降以及小批量梯度下降三种形式 [31] 。根据不同的数据量和参数量,可以选择一种具体的实现形式。

研究人员发现,批量训练中批量的大小对训练效果有较大影响。具体来说就是批量越大,下降效果越明显,并且下降曲线越平滑;而如果按整个数据集上的回合数来看,则是批量样本数越小,下降效果越明显。适当小的批量会产生更快的收敛 [32]

从经验上看,学习率对训练效果的影响也较为显著。学习率在一开始要保持大些来保证收敛速度,在收敛到最优点附近时要小些以避免来回振荡。比较简单的学习率调整可以通过学习率衰减的方式来实现,也称为学习率退火。

除了调整学习率之外,还可以进行梯度估计的修正。在随机(小批量)梯度下降法中,如果每次选取样本数量比较小,损失会呈现振荡的方式下降。也就是说,随机梯度下降方法中每次迭代的梯度估计和整个训练集上的最优梯度并不一致,具有一定的随机性。一种有效地缓解梯度估计随机性的方式是通过使用最近一段时间内的平均梯度来代替当前时刻的随机梯度来作为参数更新的方向,从而提高优化速度 [32]

2. 参数初始化

神经网络的参数学习是一个非凸优化问题。当使用梯度下降法来优化网络参数时,参数初始值的选取就显得十分关键,它关系到网络的优化效率和泛化能力。参数初始化的方式通常有预训练初始化、随机初始化和固定值初始化。

3. 数据预处理

收集的样本可能存在量纲不一、尺度差距大等问题,因此需要对数据进行预处理。

归一化方法泛指把数据特征转换为相同尺度的方法,比如把数据特征映射到[0,1]或[-1,1]区间内,或者映射为服从均值为0、方差为1的标准正态分布。归一化的方法有很多种,比如之前我们介绍的Sigmoid型函数等都可以将不同尺度的特征挤压到一个比较受限的区间。将传统机器学习中的数据归一化方法应用到深度神经网络中,对神经网络中隐藏层的输入进行归一化,从而使得网络更容易训练,这种方法叫作逐层归一化 [33-35]

4. 超参数优化

在神经网络中,除了可学习的参数之外,还存在很多超参数。这些超参数对网络性能的影响也很大。不同的机器学习任务往往需要不同的超参数。常见的超参数有以下三类:

网络结构,包括神经元之间的连接关系、层数、每层的神经元数量、激活函数的类型等。

优化参数,包括优化方法、学习率、小批量的样本数量等。

正则化系数。

超参数优化主要存在两方面的困难:超参数优化是一个组合优化问题,无法像一般参数那样通过梯度下降方法来优化,也没有一种通用有效的优化方法;评估一组超参数配置的时间代价非常高,从而导致一些优化方法(比如演化算法)在超参数优化中难以应用。

常用的超参数优化方法有网格搜索、随机搜索、贝叶斯优化、动态资源分配、神经架构搜索等 [36]

5. 网络正则化

机器学习模型的关键是泛化问题,即在样本真实分布上的期望风险最小化。而训练数据集上的经验风险最小化和期望风险最小化并不一致。由于神经网络的拟合能力非常强,其在训练数据上的错误率往往都可以降到非常低,甚至可以到0,从而导致过拟合。因此,如何提高神经网络的泛化能力反而成为影响模型能力的最关键因素。

正则化是一类通过限制模型复杂度,从而避免过拟合、提高泛化能力的方法,比如引入约束、增加先验、提前停止等。在传统的机器学习中,提高泛化能力的方法主要是限制模型复杂度,比如采用L1和L2正则化等方式。而在训练深度神经网络时,特别是在过度参数化时,L1和L2正则化的效果往往不如在浅层机器学习模型中显著。因此训练深度学习模型时,往往还会使用其他的正则化方法,比如数据增强、提前停止、丢弃法、集成法等。

2.2.2.5 注意力机制与外部记忆

神经网络中可以存储的信息量称为网络容量。一般来讲,利用一组神经元来存储信息时,其存储容量和神经元的数量以及网络的复杂度成正比。要存储的信息越多,神经元数量就要越多或者网络就要越复杂,进而导致神经网络的参数成倍地增加。

人类脑部的生物神经网络同样存在网络容量问题,大脑神经系统有两个重要机制可以解决信息过载问题:注意力机制和外部记忆 [37]

1.注意力机制

在目前的神经网络模型中,我们可以将最大汇聚、门控机制近似地看作自下而上的基于显著性的注意力机制。

为了从 N 个输入向量[ x 1 ,…, x N ]中选择出和某个特定任务相关的信息,需要引入一个和任务相关的表示,称为查询向量,并通过一个打分函数来计算每个输入向量和查询向量之间的相关性。

给定一个和任务相关的查询向量 q ,查询向量 q 可以是动态生成的,也可以是可学习的参数。用注意力变量 z ∈[1, N ]来表示被选择信息的索引位置,即 z n 表示选择了第 n 个输入向量。为了方便计算,可采用一种“软性”的信息选择机制。首先计算在给定 q X 下,选择第 n 个输入向量的概率 α n α n 可以解释为在给定任务相关的查询向量 q 时,第 n 个输入向量受关注的程度。采用一种“软性”的信息选择机制对输入信息进行汇总。

上式称为软性注意力机制。除了软性注意力机制模型外,还有一些其他模型,例如硬性注意力、键值对注意力、多头注意力、结构化注意力、指针网络 [38]

2. 外部记忆

为了增加网络容量,可以引入辅助记忆单元,将一些和任务相关的信息保存在辅助记忆中,在需要时再进行读取,这样可以有效地增加网络容量。这个引入的辅助记忆单元一般称为外部记忆,以区别于循环神经网络的内部记忆(即隐状态) [39] 。这种装备外部记忆的神经网络也称为记忆增强神经网络(memory augmented neural network,MANN),或简称为记忆网络(memory network,MN)。

记忆网络的典型结构如图2-3所示,一般由以下四个模块构成。

图2-3 记忆网络的典型结构

主网络控制器 C :也称控制器,负责信息处理以及与外界的交互(接受外界的输入信息并产生输出到外界)。主网络还同时通过读写模块和外部记忆进行交互。

外部记忆单元 M :外部记忆单元用来存储信息,一般可以分为很多记忆片段,这些记忆片段按照一定的结构来进行组织。记忆片段一般用向量来表示,外部记忆单元可以用一组向量 M =[ m 1 ,…, m N ]来表示。这些向量的组织方式可以是集合、树、栈或队列等。大部分信息存储于外部记忆中,不需要全时参与主网络的运算。

读取模块 R :根据主网络生成的查询向量 q r ,从外部记忆单元中读取相应的信息 r R M q r )。

写入模块 W :根据主网络生成的查询向量 q w 和要写入的信息 a 来更新外部记忆 M W M q w a )。

记忆增强神经网络的代表性模型有神经图灵机、端到端记忆网络、动态记忆网络等。此外,基于神经动力学的联想记忆也可以作为一种外部记忆,并具有更好的生物学解释性。Hopfield将能量函数的概念引入神经网络模型中,提出了Hopfield网络 [40] 。Hopfield网络在旅行商问题上获得了当时最好的结果,引起轰动。目前人工神经网络中的外部记忆模型结构还比较简单,需要借鉴神经科学的研究成果,提出更有效的记忆模型,增加网络容量。

2.2.2.6 无监督学习

无监督学习是指从无标签的数据中学习得到一些有用的模式。无监督学习算法一般直接从原始数据中学习,不借助于任何人工标签或者反馈等指导信息 [2] 。如果监督学习是建立输入-输出之间的映射关系,那么无监督学习就是发现隐藏的数据中的有价值信息,包括有效的特征、类别、结构以及概率分布等 [41] 。典型的无监督学习问题可以分为无监督特征学习、概率密度估计、聚类等。

无监督特征学习是从无标签的训练数据中挖掘有效的特征或表示。无监督特征学习一般用来进行降维、数据可视化或监督学习前期的数据预处理。常见的无监督特征学习包括主成分分析、稀疏编码、自编码器等方法。

概率密度估计简称密度估计,是根据一组训练样本来估计样本空间的概率密度。密度估计分为参数密度估计和非参数密度估计。参数密度估计是假设数据服从某个已知概率密度函数形式的分布(比如高斯分布),然后根据训练样本去估计概率密度函数的参数。非参数密度估计是不假设数据服从某个已知分布,只利用训练样本对密度进行估计,可以进行任意形状密度的估计。非参数密度估计的方法有直方图、核密度估计等。

聚类是将一组样本根据一定的准则划分到不同的组(也称为簇)。一个比较通用的准则是组内样本的相似性要高于组间样本的相似性。常见的聚类算法包括K-Means算法、谱聚类等。

2.2.2.7 模型独立的学习方式

在实际应用中,当展开机器学习时,存在一些具体的困难,比如训练任务和目标任务的数据分布不一致、训练数据过少等。这时机器学习的应用会受到很大的限制。并且在很多场合中,往往需要一个可以快速地适应新任务的模型。因此,人们开始关注一些新的学习方式,其中最主要的是“模型独立”的学习方式。例如集成学习、协同学习、自训练、多任务学习、迁移学习、终身学习、小样本学习、元学习等。这里“模型独立”是指这些学习方式不限于具体的模型,不管是前馈神经网络、循环神经网络还是其他模型。然而,一种学习方式往往会对符合某种特性的模型更加青睐,比如集成学习往往和方差大的模型组合时效果显著。

集成学习可以通过某种策略将多个模型集成起来,通过群体决策来提高决策准确率。集成学习首要的问题是如何集成多个模型。比较常用的集成策略有直接平均、加权平均等。

为了得到更好的集成效果,要求每个模型之间具备一定的差异性。并且随着模型数量的增加,其错误率也会下降,并趋近于0。为了增加模型之间的差异性,可以采取自助投票(Bagging)和自适应提升(Boosting)这两类方法。

Bagging是通过提升不同模型的训练数据集的独立性来提高不同模型之间的独立性。在原始训练集上进行有放回的随机采样,得到 M 个比较小的训练集并训练 M 个模型,然后通过投票的方法得到模型集的分类结果。

Boosting是按照一定的顺序来先后训练不同的基模型,每个模型都针对前序模型的错误进行专门训练 [42] 。根据前序模型的结果,来调整训练样本的权重,从而增加不同基模型之间的差异性。Boosting是一种非常强大的集成方法,只要基模型的准确率比随机猜测高,就可以通过集成方法来显著地提高集成模型的准确率。Boosting的代表性方法有Ada Boost。

自训练,也叫自举法,是一种非常简单的半监督学习算法 [43] 。首先使用标注数据来训练一个模型,并使用这个模型来预测无标注样本的标签,把预测置信度比较高的样本及其预测的伪标签加入训练集,然后重新训练新的模型,并不断重复这个过程。

协同训练是自训练的一种改进方法,通过两个基于不同视角的分类器来互相促进。很多数据都有相对独立的不同视角。比如互联网上的每个网页都由两种视角组成:文字内容和指向其他网页的链接。如果要确定一个网页的类别,既可根据文字内容来判断,也可根据网页之间的链接关系来判断 [44]

多任务学习是指同时学习多个相关任务,让这些任务在学习过程中共享知识,利用多个任务之间的相关性来提高模型在每个任务上的性能和泛化能力 [45] 。多任务学习可以看作一种归纳迁移学习,即通过利用包含在相关任务中的信息作为归纳偏置来提高泛化能力。

迁移学习是指两个不同领域的知识迁移过程,利用源领域D S 中学到的知识来帮助完成目标领域D T 上的学习任务 [46] 。源领域的训练样本数量一般远大于目标领域。迁移学习根据不同的迁移方式又分为两个类型:归纳迁移学习和转导迁移学习。这两个类型分别对应两个机器学习的范式:归纳学习和转导学习。一般的机器学习是指归纳学习,即希望在训练数据集上学习到使得期望风险(即真实数据分布上的错误率)最小的模型。而转导学习的目标是学习一种在给定测试集上错误率最小的模型,其在训练阶段可以利用测试集的信息。

终身学习,也叫持续学习,是指像人类一样具有持续不断的学习能力,根据历史任务中学到的经验和知识来帮助学习不断出现的新任务,并且这些经验和知识是持续累积的,不会因为新的任务而忘记旧的知识 [47] 。在终身学习中,假设一个终身学习算法已经在历史任务T 1 ,T 2 ,…,T m 上学习到一个模型,当出现一个新任务T m +1 时,这个算法可以根据过去在 m 个任务上学习的知识来帮助学习第 m +1个任务,同时累积所有的 m +1个任务上的知识。在终身学习中,一个关键的问题是如何避免灾难性遗忘,即按照一定顺序学习多个任务时,在学习新任务的同时不忘记先前学会的历史任务。当前也已经提出较多方法解决该问题,例如弹性权重巩固方法。

元学习,也称学习的学习。元学习的目的是从已有任务中学习一种学习方法或元知识,可以加速新任务的学习。元学习主要关注如何在多个不同任务上学习一种可泛化的快速学习能力 [48]

2.2.3 进阶模型

随着机器学习基础模型的不断发展和成熟,在解决一些具体问题时,研究人员结合其他领域的理论方法,提出了更加复杂的机器学习模型。主要的进阶模型包括概率图模型、深度信念模型、深度生成模型、深度强化学习和序列生成模型。

2.2.3.1 概率图模型

概率图模型,简称图模型,是指一种用图结构来描述多元随机变量之间条件独立关系的概率模型,其给研究高维空间中的概率模型带来了很大的便捷性 [11]

对于一个 K 维随机向量 X =[ X 1 X 2 ,…, X K T ,其联合概率为高维空间中的分布,一般难以直接建模。一种有效减少参数量的方法是独立性假设。将一个 K 维随机向量 X 的联合概率分解为 K 个条件概率的乘积。

其中 x k 表示变量 X K 的取值。如果某些变量之间存在条件独立,其参数量就可以大幅减少。

当概率模型中的变量数量比较多时,其条件依赖关系也比较复杂。可以使用图结构的方式将概率模型可视化,以一种直观、简单的方式描述随机变量之间的条件独立性,还可以将一个复杂的联合概率模型分解为一些简单条件概率模型的组合。图模型有三个基本问题。

模型表示问题:对于一个概率模型,如何通过图结构来描述变量之间的依赖关系。

学习问题:图模型的学习包括参数的学习和图结构的学习。

推断问题:在已知部分变量时,计算其他变量的条件概率分布。

很多机器学习模型都可以归结为概率模型,即建模输入和输出之间的条件概率分布。因此,图模型提供了一种新的角度来解释机器学习模型,并且这种角度有很多优点,比如可以了解不同机器学习模型之间的联系、方便设计新模型等。在机器学习中,图模型越来越多地用于设计和分析各种学习算法。目前,概率图模型已经是一个非常庞大的研究领域,涉及众多的模型和算法,图2-4给出了概率图模型所涵盖的内容 [49]

图2-4 概率图模型所涵盖内容的简单概括

2.2.3.2 深度信念网络

深度信念网络中包含很多层的隐变量,可以有效地学习数据的内部特征表示,也可以作为一种有效的非线性降维方法。这些学习到的内部特征表示包含了数据更高级的、有价值的信息,因此十分有助于后续的分类和回归等任务 [50]

玻尔兹曼机和深度信念网络都是生成模型,借助隐变量来描述复杂的数据分布 [51] 。作为概率图模型,玻尔兹曼机和深度信念网络的共同问题是推断和学习问题。因为这两种模型都比较复杂,并且都包含隐变量,它们的推断和学习一般通过马尔科夫链蒙特卡洛方法来进行近似估计。这两种模型和神经网络有很强的对应关系,从一定程度上来讲也可称为随机神经网络。

2.2.3.3 深度生成模型

概率生成模型,简称生成模型,是概率统计和机器学习领域的一类重要模型,指一系列用于随机生成可观测数据的模型。假设在一个连续或离散的高维空间X中,存在一个随机向量 X 服从一个未知的数据分布 p r x ), x X 。生成模型根据一些可观测的样本 x (1) x (2) ,…, x N 来学习一个参数化的模型 p θ x )以近似未知分布 p r x ),并可以用这个模型来生成一些样本,使得“生成”的样本和“真实”的样本尽可能地相似。生成模型通常具备两个基本功能:概率密度估计(简称密度估计)和生成样本(采样)。

生成模型的应用十分广泛,可以用来建模不同的数据,比如图像、文本、声音等。但对于一个高维空间中的复杂分布,密度估计和生成样本通常都不容易实现,原因在于:一是高维随机向量一般比较难以直接建模,需要通过一些条件独立性来简化模型;二是给定一个已建模的复杂分布,也缺乏有效的采样方法。

深度生成模型就是利用深度神经网络可以近似任意函数的能力来建模一个复杂分布 p r x )或直接生成符合分布 p r x )的样本。

1.概率生成模型

给定一组数据 ,假设它们都是独立地从相同的概率密度函数为 p r x )的未知分布中产生的。密度估计是根据数据集 D 来估计其概率密度函数 p θ x )。在机器学习中,密度估计是一类无监督学习问题。如果要建模含隐变量的分布,如图2-5(a)所示,就需要利用EM 算法来进行密度估计。而在EM算法中,需要估计条件分布 p x | z ; θ )以及近似后验分布 p z | x ; θ )。当这两个分布比较复杂时,我们可以利用神经网络来进行建模,这就是变分自编码器的思想。

图2-5 生成模型

生成样本就是给定一个概率密度函数为 p θ x )的分布,生成一些服从这个分布的样本,也称为采样。

对于图2-5(a)中的图模型,在得到两个变量的局部条件概率 p θ z )和 p θ x | z )之后,就可以生成数据 x ,具体过程可以分为两步进行:

(1)根据隐变量的先验分布 p θ z )进行采样,得到样本 z

(2)根据条件分布 p θ x | z )进行采样,得到样本 x

为了便于采样,通常 p θ x | z )不能太过复杂。因此,另一种生成样本的思想是从一个简单分布 p z ), z ∈Z(比如标准正态分布)中采集一个样本 z ,并利用一个深度神经网络 :Z→X使 z )服从 p r x )。这样,就可以避免密度估计问题,并有效降低生成样本的难度,这正是生成对抗网络的思想。

2. 变分自编码器

变分自编码器是一种深度生成模型,其思想是利用神经网络来分别建模两个复杂的条件概率密度函数。

(1)用神经网络来估计变分分布 q z ; φ ),称为推断网络。理论上 q z ; φ )可以不依赖 x 。但由于 q z ; φ )的目标是近似后验分布 p z | x ; θ ),它和 x 相关,因此变分密度函数一般写为 q z | x ; φ )。推断网络的输入为 x ,输出为变分分布 q z | x ; φ )。

(2)用神经网络来估计概率分布 p x | z ; θ ),称为生成网络。生成网络的输入为 z ,输出为概率分布 p x | z ; θ )。将推断网络和生成网络合并就得到了变分自编码器的整个网络结构,如图2-6所示。其中实线表示网络计算操作,虚线表示采样操作。

图2-6 变分自编码器的网络结构

①推断网络。为简单起见,假设 q z | x ; φ )是服从对角化协方差的高斯分布,则:

其中 μ I 是高斯分布的均值和方差,可以通过推断网络 f I x ; φ )来预测。其中推断网络 f I x ; φ )可以是一般的全连接网络或卷积网络。推断网络的目标是使得 q z | x ; φ )尽可能接近真实的后验 p z | x ; θ ),需要找到一组网络参数 φ *来最小化两个分布的KL散度,即:

然而,直接计算上面的KL散度是不可能的,因为 p z | x ; θ )一般无法计算。传统方法是利用采样或者变分法来近似推断。基于采样的方法效率很低且估计也不是很准确,所以一般使用的是变分推断方法,即用简单的分布 q 去近似复杂的分布 p z | x ; θ )。

②生成网络。生成模型的联合分布 p x , z ; θ )可以分解为两部分:隐变量 z 的先验分布 p z ; θ )和条件概率分布 p x | z ; θ )。为简单起见,一般假设隐变量 z 的先验分布为各向同性的标准高斯分布 N z |0 , I )。隐变量 z 的每一维之间都是独立的。条件概率分布 p x | z ; θ )可以通过生成网络来建模。为简单起见,同样用参数化的分布族来表示条件概率分布 p x | z ; θ ),这些分布族的参数可以通过生成网络计算得到。

生成网络 f G z ; θ )的目标是找到一组网络参数 θ *来最大化证据下界 ELBO q , x ; θ , φ ),即

推断网络和生成网络的目标都为最大化证据下界 ELBO q , x ; θ , φ )。因此,变分自编码器的总目标函数为:

其中 p z ; θ )为先验分布, θ φ 分别表示生成网络和推断网络的参数。

从最大期望(EM)算法角度来看,使用变分自编码器优化推断网络和生成网络的过程,可以分别看作EM算法中的E步和M步。但在变分自编码器中,这两步的目标合二为一,都是最大化证据下界。此外,变分自编码器可以看作神经网络和贝叶斯网络的混合体。贝叶斯网络中的所有节点都是随机变量。在变分自编码器中,我们仅仅将隐藏编码对应的节点看成随机变量,其他节点还是作为普通神经元。这样,编码器变成一个变分推断网络,而解码器变成一个将隐变量映射到观测变量的生成网络。

3. 生成对抗网络

之前介绍的深度生成模型,比如变分自编码器、深度信念网络等,都是显式地构建出样本的密度函数 p x ; θ ),并通过最大似然估计来求解参数,称为显式密度模型。如果只希望有一个模型能生成符合数据分布 p r x )的样本,那么可以不显式地估计出数据分布的密度函数。假设在低维空间Z中有一个简单、容易采样的分布 p z ), p z )通常为标准多元正态分布 N (0, I )。我们用神经网络构建一个映射函数 G :Z→X,称为生成网络。利用神经网络强大的拟合能力,使得 G z )服从数据分布 p r x )。这种模型就称为隐式密度模型。所谓隐式模型就是指并不显式地建模 p r x ),而是建模数据的生成过程。图2-7给出了隐式模型生成样本的过程。

图2-7 隐式模型生成样本的过程

隐式密度模型的一个关键是如何确保生成网络产生的样本一定服从真实的数据分布。既然不构建显式密度函数,就无法通过最大似然估计等方法来训练。生成对抗网络是通过对抗训练的方式使生成网络产生的样本服从真实数据分布 [52] 。在生成对抗网络中,有两个网络进行对抗训练。一个是判别网络,目标是尽量准确地判断一个样本是来自真实数据还是由生成网络产生;另一个是生成网络,目标是尽量生成判别网络无法区分来源的样本。这两个目标相反的网络不断地进行交替训练。当最后收敛时,如果判别网络再也无法判断出一个样本的来源,那么也就等价于生成网络可以生成符合真实数据分布的样本。生成对抗网络的流程图如图2-8所示。

图2-8 生成对抗网络的流程图

(1)判别网络。

判别网络 D x ; φ )的目标是区分出一个样本 x 是来自真实分布 p r x )还是来自生成模型 p θ x ),因此判别网络实际上是一个二分类的分类器。用标签 y =1来表示样本来自真实分布, y =0表示样本来自生成模型,判别网络 D x ; φ )的输出为 x 属于真实数据分布的概率,即:

p ( y =1| x )= D ( x ; ϕ )

则样本来自生成模型的概率为 p ( y =0| x )=1 − D ( x ; ϕ )

给定一个样本( x y ), y = {1,0} 表示其来自 p r x )还是 p θ x ),判别网络的目标函数为最小化交叉熵,即:

假设分布 p x )是由分布 p r x )和分布 p θ x )等比例混合而成,即 p x )=1/2[ p r x )+ p θ x )],则上式等价于:

其中 θ φ 分别是生成网络和判别网络的参数。

(2)生成网络。

生成网络的目标刚好和判别网络相反,即让判别网络将自己生成的样本判别为真实样本。

上面的这两个目标函数是等价的。但是在实际训练时,一般使用前者,因为其梯度性质更好。

(3)训练。

和单目标的优化任务相比,生成对抗网络的两个网络的优化目标刚好相反。因此生成对抗网络的训练比较难,往往不太稳定。一般情况下,需平衡两个网络的能力。对于判别网络来说,一开始判别能力不能太强,否则难以提升生成网络的能力。但是,判别网络的判别能力也不能太弱,否则针对它训练的生成网络也不会太好。在训练时需要使用一些技巧,使得在每次迭代中,判别网络比生成网络的能力强一些,但又不会强太多。

2.2.3.4 深度强化学习

1.强化学习

强化学习,也叫再励学习,是指智能体(agent)从(与环境)交互中不断学习问题以及解决这类问题的方法 [52] 。强化学习问题可以描述为一个智能体在与环境的交互中不断学习以完成特定目标(比如取得最大奖励值)。和深度学习类似,强化学习中的关键问题也是贡献度分配问题。每一个动作并不能直接得到监督信息,需要通过整个模型的最终监督信息(奖励)得到,并且有一定的延时。

强化学习也是机器学习的一个重要分支,其理论基础为马尔可夫决策过程。强化学习和监督学习的不同在于,强化学习问题不需要给出“正确”策略作为监督信息,只需要给出策略的(延迟)回报,并通过调整策略来取得最大化的期望回报。

在强化学习中,有两个可以进行交互的对象:智能体和环境(图2-9)。

图2-9 智能体与环境的交互

智能体可以感知外界环境的状态和反馈的奖励,并进行学习和决策。智能体的决策功能是指根据外界环境的状态来做出不同的动作,而其学习功能是指根据外界环境的奖励来调整策略。

环境是指智能体外部的所有事物,其受智能体动作的影响而改变自身状态,并反馈给智能体相应的奖励。

强化学习的基本要素包括:

状态 s 是对环境的描述,可以是离散的或连续的,其状态空间为S。

动作 a 是对智能体行为的描述,可以是离散的或连续的,其动作空间为A。

策略 π a | s )是智能体根据环境状态 s 来决定下一步动作 a 的函数。

状态转移概率 p s' | s , a )是在智能体根据当前状态 s 做出一个动作 a 之后,环境在下一个时刻转变为状态 s' 的概率。

即时奖励 r s , a , s' )是一个标量函数,即智能体根据当前状态 s 做出动作 a 之后,环境会反馈给智能体一个奖励,这个奖励也经常和下一个时刻的状态 s' 有关。

智能体的策略(policy)就是智能体如何根据环境状态 s 来决定下一步的动作 a ,通常可以分为确定性策略和随机性策略两种。确定性策略是从状态空间到动作空间的映射函数 π :S→A。随机性策略表示在给定环境状态时,智能体选择某个动作的概率分布 ,且

通常情况下,强化学习一般使用随机性策略。随机性策略有很多优点:在学习时可以通过引入一定随机性来更好地探索环境;随机性策略的动作具有多样性,这一点在多个智能体博弈时也非常重要。采用确定性策略的智能体总是对同样的环境做出相同的动作,会导致它的策略很容易被对手预测。

2. 强化学习目标函数

强化学习的目标函数为:

其中 θ 为策略函数的参数, γ 为折扣因子, r t +1 为第 t +1时刻感受到 t 时刻行动的回报。

3. 值函数

为了评估策略 π 的期望回报,我们定义两个值函数:状态值函数和状态-动作值函数。

状态值函数:策略 π 的期望回报可以分解为:

其中 V π s )称为状态值函数,表示从状态 s 开始,执行策略 π 得到的期望总回报。

如果给定策略 π a | s ),状态转移概率 p ( s' | s , a )和奖励 r s , a , s' ),就可以通过迭代的方式来计算 V π s )。由于存在折扣率,迭代一定步数后,每个状态的值函数就会固定不变。

状态-动作值函数:状态-动作值函数也经常称为Q函数 [53] 。状态值函数 V π s )是Q函数 Q π s a )关于动作 a 的期望,即:

Q函数可以写为:

这是关于Q函数的贝尔曼方程。

值函数可以看作对策略 π 的评估,因此可以根据值函数来优化策略。假设在状态 s ,有一个动作 a *使得 Q π s , a *)> V π s ),说明执行动作 a *的回报比当前的策略 π a | s )要高,就可以调整参数使得策略中动作 a *的概率 p a *| s )增加。

4. 深度强化学习

在强化学习中,一般需要建模策略 π a | s )和值函数 V π s ), Q π s , a )。早期的强化学习算法主要关注状态和动作都是离散且有限的问题,可以使用表格来记录这些概率。但在很多实际问题中,有些任务的状态和动作的数量非常多。比如围棋的棋局有3 361≈10170 种状态,动作(即落子位置)数量为361。还有些任务的状态和动作是连续的。

为了有效地解决这些问题,可以设计一个更强的策略函数(比如深度神经网络),使得智能体可以应对复杂的环境,学习更优的策略,并具有更强的泛化能力。深度强化学习是将强化学习和深度学习结合在一起,用强化学习来定义问题和优化目标,用深度学习来解决策略和值函数的建模问题,然后使用误差反向传播算法来优化目标函数。深度强化学习在一定程度上具备解决复杂问题的通用智能,并在很多任务上取得了很大的成功 [54]

2.2.3.5 序列生成模型

在深度学习的应用中,有很多数据以序列的形式存在,比如声音、语言、视频、DNA序列或者其他的时序数据等。以自然语言为例,一个句子可以看作符合一定自然语言规则的词的序列。这些语言规则包含非常复杂的语法和语义的组合关系,因此很难显式地建模这些规则。为了有效地描述自然语言规则,可以从统计的角度来建模 [55] 。将一个长度为 T 的文本序列看作一个随机事件 X 1 T =( X 1 ,…, X T ),其中每个位置上的变量 X T 的样本空间为一个给定的词表 V ,整个序列 x 1 T 的样本空间为| V | T 。在某种程度上,自然语言也确实有很多随机因素。比如当我们称赞一个人漂亮时,可以说“美丽”“标致”或者“好看”等。当不指定使用场合时,这几个词可以交替使用,具体使用哪个词相当于一个随机事件。一个文本序列的概率可以用来评估它符合自然语言规则的程度。

序列数据一般可以通过概率图模型来建模序列中不同变量之间的依赖关系。序列数据有两个特点:样本是变长的;样本空间非常大。对于一个长度为 T 的序列,其样本空间为| V | T 。因此,很难用已知的概率模型来直接建模整个序列的概率。序列数据的概率密度估计问题可以转换为单变量的条件概率估计问题,即给定 x 1 x 2 x T -1 x T 的条件概率 p x T | x 1 x 2 x T -1 )。

给定一个包含 N 个序列数据的数据集 ,序列概率模型需要学习一个模型 p θ x | x 1 x 2 x T -1 )来最大化整个数据集的对数似然函数。在这种序列模型方式中,每一步都需要将前面的输出作为当前步的输入,这是一种自回归的方式。因此这一类模型也称为自回归生成模型。当前研究较多的自回归生成模型包括 N 元统计模型和深度序列模型。

1. N 元统计模型

由于数据稀疏问题,当 t 比较大时,依然很难估计条件概率 p x T | x 1 x 2 x T -1 )。一个简化的方法是 N 元模型,假设每个词 x t 只依赖于其前面的 N -1个词( N 阶马尔可夫性质)。

N =1时,称为一元模型;当 N =2时,称为二元模型;以此类推。

N 元模型广泛应用于各种自然语言处理问题,如语音识别、机器翻译、拼音输入法、字符识别等。通过 N 元模型,可以计算一个序列的概率,从而判断该序列是否符合自然语言的语法和语义规则。

2. 深度序列模型

深度序列模型是指利用神经网络模型来估计条件概率 p θ x T | x 1 x 2 x T -1 [56,57] 。假设一个神经网络 f · θ ),其输入为历史信息 ,输出为词表 V 中的每个词 v k (1≤ k ≤| V |)出现的概率,并满足:

其中 θ 表示网络参数。条件概率 p θ x T | x 1 x 2 x T -1 )可以从神经网络的输出中得到。

其中 x T 在词表 V 中的索引。

深度序列模型一般可以分为三个模块:嵌入层、特征层、输出层。

嵌入层:令 表示输入的历史信息,一般为符号序列。由于神经网络模型一般要求输入形式为实数向量,因此为了使得神经网络模型能处理符号数据,需要将这些符号转换为向量形式。一种简单的转换方法是通过一个嵌入表来将每个符号直接映射成向量表示。嵌入表也称为嵌入矩阵或查询表。

特征层:特征层用于从输入向量序列 e 1 ,…, e T-1 中提取特征,输出为一个可以表示历史信息的向量 h T 。特征层可以通过不同类型的神经网络(比如前馈神经网络和循环神经网络等)来实现。常见的网络类型有简单平均网络、前馈神经网络、循环神经网络。

输出层:输出层一般使用Softmax分类器,接受历史信息的向量表示 h T R D h ,输出为词表中每个词的后验概率,输出大小为| V |。

其中输出向量 o T ∈(0,1) | V | 为预测的概率分布,第 k 维是词表中第 k 个词出现的条件概率; 是未归一化的得分向量; 是最后一层隐藏层到输出层直接的权重矩阵; b R | V | 为偏置。

(俞祝良) sKK8r4iqI0e115TW4/W4gQFaOiZLrcMn1dB/ED/QoXskpPr6Y6H8Lm0SAe5MCjgE

点击中间区域
呼出菜单
上一章
目录
下一章
×