字体:  增大          减小       

4-1 机器学习基础模型

4-1-1 基础知识

4-1-1-1 数据库

数据库是机器学习一个必要的组成部分。如果你想构建一个机器学习系统,你要么可以从公众资源中得到数据,要么需要自己收集数据。所有的用于构建和测试机器学习模型的数据集合成为数据库。基本上,数据科学家会将数据划分为三个部分:

4-1-1-2 训练数据:

训练数据是用于训练模型。这意味着机器学习模型需要认识并通过学习得到数据的模式以及确定预测过程中最重要的数据特征。

4-1-1-3 验证数据:

验证数据是用于微调模型参数和比较不同模型来确定最优的模型。验证数据应该不同于训练数据,且不能用于训练阶段。否则,模型将出现过拟合现象,且对新的数据泛化不佳。

4-1-1-4 测试数据:

这看起来似乎有些单调,但这通常是第三个也是最后的测试集(经常也被称为对抗数据)。一旦最终的模型确定,它就用于测试模型在从未见过的数据集上的表现,如这些数据从未在构建模型或确定模型时使用过。

                                     

图4-1-1 图像文件编码示意图

图像:混合使用t-SNE和Jonker-Volgenant算法得到的MNIST数据库的可视化结果。T-SNE是一种广泛使用的降维算法,通过压缩数据的表达来得到更好的可视化和进一步处理。

4-1-1-5 监督学习:

监督学习是用实例来教模型学习的一类机器学习模型集合。这意味着用于监督学习任务的数据需要被标注(指定正确的,真实类别)。例如,如果我们想要构建一个机器学习模型用于识别一个给定的文本是否被标记过的,我们需要给模型提供一个标记过的样本集 (文本+信息,是否该文本被标记过)。给定一个新的,未见过的例子,模型能够预测它的目标,例如,规定样本的标签,1表示标记过的而0表示未标记的。

4-1-1-6 无监督学习:

相比于监督学习,无监督学习模型是通过观察来进行自我学习。算法所用的数据是未标记过的(即提供给算法的是没有真实标签值的数据)。无监督学习模型能够发现不同输入之间的相关关系。最重要的无监督学习技术是聚类方法。对于给定的数据,模型能够得到输入的不同聚类(对于相似的数据聚合在同一类中),并能将新的、未见过的输入归入到相似的聚类中。

图4-1-2 无监督学习算法思维示意图

4-1-1-7 强化学习:

强化学习区别于先前我们提到的那些方法。强化学习算法一种“游戏”的过程,其目标是最大化 “游戏奖励”。该算法通过反复的实验来尝试确定不同的 “走法”,并查看哪种方式能够最大化 “游戏收益”

最广为人知的强化学习例子就是教计算机来解决魔方问题或下象棋,但是强化学习能解决的问题不仅只有游戏。最近,强化学习大量地应用于实时竞价,其模型负责为一个广告竞拍价格而它的报酬是用户的转换率。

想要学习人工智能在实时竞价和程序化广告中的应用吗?详见:https://sigmoidal.io/ai-for-advertising/

4-1-1-8 神经网络:

神经网络是一个非常广泛的机器学习模型集合。它的主要思想是模拟人类大脑的行为来处理数据。就像大脑中真实神经元之间相互连接形成的网络一样,人工神经网络由多层组成。每层都是一系列神经元的集合,这些神经元负责检测不同的食物。一个神经网络能够连续地处理数据,这意味着只有第一层才与输入直接相连,随着模型层数的增加,模型将学到越来越复杂的数据结构。当层数大量地增加,模型通常就是一个所谓的深度学习模型。很难给一个深度网络确定一个特定的网络层数,10年前通常3层神经网络就可谓深,而如今通常需要20层。

need-to-insert-img

神经网络有许许多多不同的变体,常用的是:

卷积神经网络—它给计算机视觉任务带来了巨大的突破(而如今,它同样对于解决自然语言处理问题有很大帮助)。

need-to-insert-img

循环神经网络—被设计为处理具有序列特征的数据,如文本或股票票价。这是个相对古老的神经网络,但随着过去20年现代计算机计算能力的突飞猛进,使得它的训练变得容易并在很多时候得以应用。

全连接神经网络—这是处理静态/表格式数据最简单的模型。

4-1-1-9 过拟合:

当模型从不充分的数据中学习会产生偏差,即过拟合,这对模型会有负面的影响。这是个很常见,也很重要的问题。

当你在不同的时间进入一个面包坊,而每一次所剩下的蛋糕都没有你喜欢的,那么你可能会对这个面包坊失望,即使有很多其他的顾客可能会对剩下的蛋糕满意。如果你是个机器学习模型,可以说你对这一小数量样本产生了过拟合现象—要构建一个具有偏置量的模型,其得到的表示才不会过度拟合真实数据。

当过拟合现象发生,它通常意味着模型将随机噪声当作数据,并作为一个重要的信号去拟合它,这就是为什么模型在新数据上的表现会出现退化(噪声也有差异)。这在一些非常复杂的模型如神经网络或加速梯度模型上是很常见的。

想象构建一个模型来检测文章中出现的有关奥运的特定体育项目。由于所用的训练集与文章是由偏差的,模型可能学习到诸如 “奥运”这样词的特征,而无法检测到那些未包含该词的文章。

图4-1-3 过拟合处理示意图

 

4-1-2 基础模型

4-1-2-1 线性模型

线性模型是最简单的,也是最基本的机器学习模型。其数学形式如下:g(X;W)=WTX。有时,我们还会在WTX的基础上额外加入一个偏置项b,不过只要把X扩展出一维常数分量,就可以把带偏置项的线性函数归并到WTX的形式之中。线性模型非常简单明了,参数的每一维对应了相应特征维度的重要性。但是很显然,线性模型也存在一定的局限性。

首先,线性模型的取值范围是不受限的,依据w和x的具体取值,它的输出可以是非常大的正数或者非常小的负数。然而,在进行分类的时候,我们预期得到的模型输出是某个样本属于正类(如正面评价)的可能性,这个可能性通常是取值在0和1之间的一个概率值。为了解决这二者之间的差距,人们通常会使用一个对数几率函数对线性模型的输出进行变换,得到如下公式:

(公式4-1-1)

经过变换,严格地讲,g(x;w)已经不再是一个线性函数,而是由一个线性函数派生出来的非线性函数,我们通常称这类函数为广义线性函数。对数几率模型本身是一个概率形式,非常适合用对数似然损失或者交叉熵损失进行训练。

其次,线性模型只能挖掘特征之间的线性组合关系,无法对更加复杂、更加强大的非线性组合关系进行建模。为了解决这个问题,我们可以对输入的各维特征进行一些显式的非线性预变换(如单维特征的指数、对数、多项式变换,以及多维特征的交叉乘积等),或者采用核方法把原特征空间隐式地映射到一个高维的非线性空间,再在高维空间里构建线性模型。

4-1-2-2核方法与支持向量机

支持向量机是什么呢?之前在博客和知乎上都看到过这样的一个段子:某大侠的公主被妖怪抓去了,大侠去救公主。妖怪在桌子上摆了一堆球,让大侠把球分开,区分明显(图1),大侠在两类球之间放了一根棍子。妖怪觉得不满意,于是打乱了球的分布,一根棍子难以区分,说如果这次分得开就可以救出公主。大侠灵机一动,一拍桌子,球飞了起来,大侠凭借功力拿出一张纸,将两类球分了开来(图2),成功救出了公主。

划重点:支持向量机就是把低维空间线性不可分的问题,映射到高维空间,变成线性可分的问题,从而解决分类的问题的一种模式识别分类器

在这个段子中,球是需要分类的样本,棍子和纸是分类器。

图4-1-4 分类明显的球

图4-1-5 二维空间不可分的球,在三维空间变得可分

支持向量机在解决问题时,不仅要解决分类问题,还要找到最优分类平面,使得各个类别之间的距离最大化,即图3中H1和H2之间的距离。SVM的目的:寻找到一个超平面使样本分成两类,并且间隔最大。用数学语言描述的话:

(公式4-1-2)

图4-1-6 最优分类超平面

实际操作中想要构建一个SVM分类器,需要有核函数、核函数参数g和惩罚参数c。核函数一般选择RBF(径向基),参数g和c可以自己设定。

[4-1]

线性分类模型的局限性在于,如果数据线性不可分,模型将不再适用,因而需要对数据做非线性映射,在更高的维度中将数据区分开来,使其线性可分。神经网络可以用来学习映射,即特征提取,但是在有些情况下不适用;核函数则是另一种生成映射函数的方法,通过隐式定义数据间的相关性函数来映射。

核函数描述了训练数据间的关系,使得预测时依赖训练数据而非参数模型。接下来引入了核函数的合法条件Mercer定理,即函数对称且半正定。然后,介绍了一些简单核函数,如线性核(应用于Kernel PCA方法),多项式核(等价于对原始数据进行特征扩展,不仅考虑原始特征还考虑特征之间相关性,多应用于NLP),高斯核(对应无限维特征空间,是距离的函数,形式与RBF一致,故又叫RBF核),概率核等,还可以进行核函数组合。

[4-2]

事实上,只要一个对称函数所对应的核矩阵满足半正定的条件,它就能作为核函数使用,并总能找到一个与之对应的空间映射。换言之,任何一个核函数都隐式地定义了一个“再生核希尔伯特空间”(Reproducing Kernel Hilbert Space,RKHS)。在这个空间里,两个向量的内积等于对应核函数的值。

图4-1-7 常见核函数

[4-3]

4-1-2-3 集成学习类算法

随机森林属于集成学习(ensemble learning)中的bagging算法,在集成算法中主要分为bagging算法与boosting算法,

Bagging算法(套袋发)

bagging的算法过程如下:

从原始样本集中使用Bootstraping 方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集(k个训练集之间相互独立,元素可以有重复)。

对于n个训练集,我们训练k个模型,(这个模型可根据具体的情况而定,可以是决策树,knn等)

对于分类问题:由投票表决产生的分类结果;对于回归问题,由k个模型预测结果的均值作为最后预测的结果(所有模型的重要性相同)。

Boosting(提升法)

boosting的算法过程如下:

对于训练集中的每个样本建立权值wi,表示对每个样本的权重, 其关键在与对于被错误分类的样本权重会在下一轮的分类中获得更大的权重(错误分类的样本的权重增加)。

同时加大分类 误差概率小的弱分类器的权值,使其在表决中起到更大的作用,减小分类误差率较大弱分类器的权值,使其在表决中起到较小的作用。每一次迭代都得到一个弱分类器,需要使用某种策略将其组合,最为最终模型,(adaboost给每个迭代之后的弱分类器一个权值,将其线性组合作为最终的分类器,误差小的分类器权值越大。)

Bagging和Boosting 的主要区别

样本选择上: Bagging采取Bootstraping的是随机有放回的取样,Boosting的每一轮训练的样本是固定的,改变的是买个样的权重。

样本权重上:Bagging采取的是均匀取样,且每个样本的权重相同,Boosting根据错误率调整样本权重,错误率越大的样本权重会变大

预测函数上:Bagging所以的预测函数权值相同,Boosting中误差越小的预测函数其权值越大。

并行计算: Bagging 的各个预测函数可以并行生成;Boosting的各个预测函数必须按照顺序迭代生成.

将决策树与以上框架组合成新的算法

Bagging + 决策树 = 随机森林

AdaBoost + 决策树 = 提升树

gradient + 决策树 = GDBT

4-1-2-4 决策树

常用的决策树有ID3, C4.5 ,CART三种. 三种算法模型构架相似,只是采用了不同的指标

首先介绍ID3算法

基于奥卡姆剃刀原理,即用尽量较少的东西做更多的东西,ID3算法即interactive Dichotomiser3,迭代二叉树3代,

核心思想:以信息增益来度量属性的选择,选择分裂后信息增益最大的属性进行分类。

信息增益:属性选择中一个重要的指标,它定义为一个属性能够为分类带来的多少信息,带来的信息越多,该属性也就越重要,而信息量则可以用熵表示。

熵的定义:信息量的期望值,表示随机变量不确定性的度量,设X是一个取有限个值的离散随机变量,其概率分布为P(X=xi)=pi,则随机变量X的熵定义为

(公式4-1-3)

其中,对数以2为底或者以e为底,分布其单位是比特(bit)或者纳特(nat)

熵越大,随机变量的不确定性就越大,当随机变量只取两个值,即X的分布式(公式4-1-4),其熵为(公式4-1-5),分布为伯努利分布时,熵与概率的关系如图:

 

图4-1-8 分布为伯努利分布时商与概率的关系

p=0.5时,H(p)=1,熵取值最大,随机变量的不确定性越大,当p=0或者1时,H(p)=0随机变量完全没有不确定性.

条件熵

设有随机变量(X,Y),其联合概率分布为(公式4-1-6),条件熵H(Y|X)表示在已知随机变量X的条件下,随机变量随Y的不确定性。随机变量X给定的条件下,随机变量Y的条件熵(conditional entropy)(H(Y|X)),定义为X的给定条件下Y的条件概率分布的熵对X的数学期望。

(公式4-1-7)

这里p=P(X=xi),i=1,2,3...n,如果是在决策树里面的话,就是类标概率与该类标下在该变量下分裂下的熵的乘积之和。

当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称为经验熵与经验条件熵

此时,信息增益(information gain)表示得知特征X的信息而使得类Y的信息的不确定性减少的程度,

信息增益

特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D),与特征A给定条件下D的经验条件熵H(D|A)之差 g(D,A)=H(D)-H(D|A)

决策树学习应用信息增益准则可以用于特征选择,给定的训练集D和特征A,经验熵H(D)标书对数据集D进行分类的不确定性,而经验条件熵H(D|A)表示在特征A给定的情况下,对数据集D进行分类的不确定性。信息增益就是表示特征A使得对数据集D的分类的不确定性的减少程度。对于数据集D而言,信息增益依赖于特征,不同特征往往具有不同的信息增益,信息增益大的特征具有更强的分类能力。

[4-4]

4-1-2-5 神经网络

神经网络是一类典型的非线性模型,它的设计受到生物神经网络的启发。人们通过对大脑生物机理的研究,发现其基本单元是神经元,每个神经元通过树突从上游的神经元那里获取输入信号,经过自身的加工处理后,再通过轴突将输出信号传递给下游的神经元。当神经元的输入信号总和达到一定强度时,就会激活一个输出信号,否则就没有输出信号(如图4-1-5所示)。

图4-1-9 神经元结构与人工神经网络

这种生物学原理如果用数学语言进行表达,就如图4-1-5所示。神经元对输入的信号

进行线性加权求和,然后依据求和结果的大小来驱动一个激活函数ψ,用以生成输出信号。生物系统中的激活函数类似于阶跃函数:

(公式4-1-8)

但是,由于阶跃函数本身不连续,对于机器学习而言不是一个好的选择,因此在人们设计人工神经网络的时候通常采用连续的激活函数,比如Sigmoid函数、双曲正切函数(tanh)、校正线性单元(ReLU)等。它们的数学形式和函数形状分别如图4-1-7所示。

图4-1-10 常用的激活函数

4-1-2-5-1全连接神经网络

最基本的神经网络就是把前面描述的神经元互相连接起来,形成层次结构(如图2.9所示),我们称之为全连接神经网络。对于图2.9中这个网络而言,最左边对应的是输入节点,最右边对应的是输出节点,中间的三层节点都是隐含节点(我们把相应的层称为隐含层)。每一个隐含节点都会把来自上一层节点的输出进行加权求和,再经过一个非线性的激活函数,输出给下一层。而输出层则一般采用简单的线性函数,或者进一步使用softmax函数将输出变成概率形式。

need-to-insert-img

图2.9 全连接神经网络

全连接神经网络虽然看起来简单,但它有着非常强大的表达能力。早在20世纪80年代,人们就证明了著名的通用逼近定理(Universal Approximation Theorem[28])。最早的通用逼近定理是针对Sigmoid激活函数证明的,一般情况下的通用逼近定理在2001年被证明[29]。其数学描述是,在激活函数满足一定条件的前提下,任意给定输入空间中的一个连续函数和近似精度ε,存在自然数Nε和一个隐含节点数为Nε的单隐层全连接神经网络,对这个连续函数的

L∞-逼近精度小于ε。这个定理非常重要,它告诉我们全连接神经网络可以用来解决非常复杂的问题,当其他的模型(如线性模型、支持向量机等)无法逼近这类问题的分类界面时,神经网络仍然可以所向披靡、得心应手。近年来,人们指出深层网络的表达力更强,即表达某些逻辑函数,深层网络需要的隐含节点数比浅层网络少很多[30]。这对于模型存储和优化而言都是比较有利的,因此人们越来越关注和使用更深层的神经网络。

全连接神经网络在训练过程中常常选取交叉熵损失函数,并且使用梯度下降法来求解模型参数(实际中为了减少每次模型更新的代价,使用的是小批量的随机梯度下降法)。要注意的是,虽然交叉熵损失是个凸函数,但由于多层神经网络本身的非线性和非凸本质,损失函数对于模型参数而言其实是严重非凸的。在这种情况下,使用梯度下降法求解通常只能找到局部最优解。为了解决这个问题,人们在实践中常常采用多次随机初始化或者模拟退火等技术来寻找全局意义下更优的解。近年有研究表明,在满足一定条件时,如果神经网络足够深,它的所有局部最优解其实都和全局最优解具有非常类似的损失函数值[31]。换言之,对于深层神经网络而言,“只能找到局部最优解”未见得是一个致命的缺陷,在很多时候这个局部最优解已经足够好,可以达到非常不错的实际预测精度。

除了局部最优解和全局最优解的忧虑之外,其实关于使用深层神经网络还有另外两个困难。

首先,因为深层神经网络的表达能力太强,很容易过拟合到训练数据上,导致其在测试数据上表现欠佳。为了解决这个问题,人们提出了很多方法,包括DropOut[32]、数据扩张(Data Augmentation)[33]、批量归一化(Batch Normalization)[34]、权值衰减(Weight Decay)[35]、提前终止(Early Stopping)[36]等,通过在训练过程中引入随机性、伪训练样本或限定模型空间来提高模型的泛化能力。

其次,当网络很深时,输出层的预测误差很难顺利地逐层传递下去,从而使得靠近输入层的那些隐含层无法得到充分的训练。这个问题又称为“梯度消减”问题[37]。研究表明,梯度消减主要是由神经网络的非线性激活函数带来的,因为非线性激活函数导数的模都不太大,在使用梯度下降法进行优化的时候,非线性激活函数导数的逐层连乘会出现在梯度的计算公式中,从而使梯度的幅度逐层减小。为了解决这个问题,人们在跨层之间引入了线性直连,或者由门电路控制的线性通路[38],以期为梯度信息的顺利回传提供便利。

4-1-2-5-2 卷积神经网络

除了全连接神经网络以外,卷积神经网络(Convolutional Neural Network,CNN)[13]也是十分常用的网络结构,尤其适用于处理图像数据。

卷积神经网络的设计是受生物视觉系统的启发。研究表明每个视觉细胞只对于局部的小区域敏感,而大量视觉细胞平铺在视野中,可以很好地利用自然图像的空间局部相关性。与此类似,卷积神经网络也引入局部连接的概念,并且在空间上平铺具有同样参数结构的滤波器(也称为卷积核)。这些滤波器之间有很大的重叠区域,相当于有个空域滑窗,在滑窗滑到不同空间位置时,对这个窗内的信息使用同样的滤波器进行分析。这样虽然网络很大,但是由于不同位置的滤波器共享参数,其实模型参数的个数并不多,参数效率很高。

图4-1-8描述了一个2×2的卷积核将输入图像进行卷积的例子。所谓卷积就是卷积核的各个参数和图像中空间位置对应的像素值进行点乘再求和。经过了卷积操作之后,会得到一个和原图像类似大小的新图层,其中的每个点都是卷积核在某空间局部区域的作用结果(可能对应于提取图像的边缘或抽取更加高级的语义信息)。我们通常称这个新图层为特征映射(feature map)。对于一幅图像,可以在一个卷积层里使用多个不同的卷积核,从而形成多维的特征映射;还可以把多个卷积层级联起来,不断抽取越来越复杂的语义信息。

图4-1-11卷积过程示意图

除了卷积以外,池化也是卷积神经网络的重要组成部分。池化的目的是对原特征映射进行压缩,从而更好地体现图像识别的平移不变性,并且有效扩大后续卷积操作的感受野。池化与卷积不同,一般不是参数化的模块,而是用确定性的方法求出局部区域内的平均值、中位数,或最大值、最小值(近年来,也有一些学者开始研究参数化的池化算子[39])。图2.11描述了对图像局部进行2×2的最大值池化操作后的效果。

图4-1-12 池化操作示意图

在实际操作中,可以把多个卷积层和多个池化层交替级联,从而实现从原始图像中不断抽取高层语义特征的目的。在此之后,还可以再级联一个全连接网络,在这些高层语义特征的基础上进行模式识别或预测。这个过程如图4-1-10所示。

图4-1-13多层卷积神经网络(N1,N2,N3表示对应单元重复的次数)

实践中,人们开始尝试使用越来越深的卷积神经网络,以达到越来越好的图像分类效果。图2.13描述了近年来人们在ImageNet数据集上不断通过增加网络深度刷新错误率的历程。其中2015年来自微软研究院的深达152层的ResNet网络[40],在ImageNet数据集上取得了低达3.57%的Top-5错误率,在特定任务上超越了普通人类的图像识别能力。

图4-1-14卷积神经网络不断刷新ImageNet数据集的识别结果

图4-1-15残差学习

随着卷积神经网络变得越来越深,前面提到的梯度消减问题也随之变得越来越显著,给模型的训练带来了很大难度。为了解决这个问题,近年来人们提出了一系列的方法,包括残差学习[40-41](如图4-1-12所示)、高密度网络[42](如图4-1-13所示)等。实验表明:这些方法可以有效地把训练误差传递到靠近输入层的地方,为深层卷积神经网络的训练奠定了坚实的实践基础。

图4-1-16高密度网络

4-1-2-5-3循环神经网络

循环神经网络(Recurrent Neural Network,RNN)[14]的设计也有很强的仿生学基础。我们可以联想一下自己如何读书看报。当我们阅读一个句子时,不会单纯地理解当前看到的那个字本身,相反我们之前读到的文字会在脑海里形成记忆,而这些记忆会帮助我们更好地理解当前看到的文字。这个过程是递归的,我们在看下一个文字时,当前文字和历史记忆又会共同成为我们新的记忆,并对我们理解下一个文字提供帮助。其实,循环神经网络的设计基本就是依照这个思想。我们用

表示在时刻的记忆,它是由t时刻看到的输入和时刻的记忆st-1共同作用产生的。这个过程可以用下式加以表示:

(公式4-1-9)

很显然,这个式子里蕴含着对于记忆单元的循环迭代。在实际应用中,无限长时间的循环迭代并没有太大意义。比如,当我们阅读文字的时候,每个句子的平均长度可能只有十几个字。因此,我们完全可以把循环神经网络在时域上展开,然后在展开的网络上利用梯度下降法来求得参数矩阵U、W、V,如图图4-1-15所示。用循环神经网络的术语,我们称之为时域反向传播(Back Propagation Through Time,BPTT)。

图4-1-17 循环神经网络的展开

和全连接神经网络、卷积神经网络类似,当循环神经网络时域展开以后,也会遇到梯度消减的问题。为了解决这个问题,人们提出了一套依靠门电路来控制信息流通的方法。也就是说,在循环神经网络的两层之间同时存在线性和非线性通路,而哪个通路开、哪个通路关或者多大程度上开关则由一组门电路来控制。这个门电路也是带参数并且这些参数在神经网络的优化过程中是可学习的。比较著名的两类方法是LSTM[43]和GRU[44](如图2.17所示)。GRU相比LSTM更加简单一些,LSTM有三个门电路(输入门、忘记门、输出门),而GRU则有两个门电路(重置门、更新门),二者在实际中的效果类似,但GRU的训练速度要快一些,因此近年来有变得更加流行的趋势。

图4-1-18循环神经网络中的门电路

循环神经网络可以对时间序列进行有效建模,根据它所处理的序列的不同情况,可以把循环神经网络的应用场景分为点到序列、序列到点和序列到序列等类型(如图4-1-17所示)。

图4-1-19循环神经网络的不同应用

下面分别介绍几种循环神经网络的应用场景。

(1)图像配文字:点到序列的循环神经网络应用

在这个应用中,输入的是图像的编码信息(可以通过卷积神经网络的中间层获得,也可以直接采用卷积神经网络预测得到的类别标签),输出则是靠循环神经网络来驱动产生的一句自然语言文本,用以描述该图像包含的内容。

(2)情感分类:序列到点的循环神经网络应用

在这个应用中,输入的是一段文本信息(时序序列),而输出的是情感分类的标签(正向情感或反向情感)。循环神经网络用于分析输入的文本,其隐含节点包含了整个输入语句的编码信息,再通过一个全连接的分类器把该编码信息映射到合适的情感类别之中。

(3)机器翻译:序列到序列的循环神经网络应用

在这个应用中,输入的是一个语言的文本(时序序列),而输出的则是另一个语言的文本(时序序列)。循环神经网络在这个应用中被使用了两次:第一次是用来对输入的源语言文本进行分析和编码;而第二次则是利用这个编码信息驱动输出目标语言的一段文本。

在使用序列到序列的循环神经网络实现机器翻译时,在实践中会遇到一个问题。输出端翻译结果中的某个词其实对于输入端各个词汇的依赖程度是不同的,通过把整个输入句子编码到一个向量来驱动输出的句子,会导致信息粒度太粗糙,或者长线的依赖关系被忽视。为了解决这个问题,人们在标准的序列到序列循环神经网络的基础上引入了所谓“注意力机制”。在它的帮助下,输出端的每个词的产生会利用到输入端不同词汇的编码信息。而这种注意力机制也是带参数的,可以在整个循环神经网络的训练过程中自动习得。

神经网络尤其是深层神经网络是一个高速发展的研究领域。随着整个学术界和工业界的持续关注,这个领域比其他的机器学习领域获得了更多的发展机会,不断有新的网络结构或优化方法被提出。

          下一章

相关内容     系统首页