自然语言处理中的深度学习

教材选用《动手学深度学习》,李沐等著;


词嵌⼊(word2vec)

⾃然语⾔是⼀套⽤来表达含义的复杂系统。把词映射为实数域向量的技术也叫词嵌⼊(word embedding)。近年来,词嵌⼊已逐渐成为⾃然语⾔处理的基础知识。
Word2vec ⼯具包含了两个模型:跳字模型(skip-gram) 和连续词袋模型(continuous bag of words,简称 CBOW)。跳字模型假设基于中⼼词来⽣成背景词,连续词袋模型假设基于背景词来⽣成中⼼词。
为了降低计算复杂度需要使用近似训练⽅法:负采样(negative sampling)或层序softmax(hierarchical softmax)。

⼦词嵌⼊(fastText)

构词学(morphology)作为语⾔学的⼀个重要分⽀,研究的正是词的内部结构和形成⽅式。fastText 提出了⼦词嵌⼊(subword embedding)的⽅法,从而试图将构词信息引⼊ word2vec 中的跳字模型。

全局向量的词嵌⼊(GloVe)

在有些情况下,交叉熵损失函数有劣势。GloVe 采⽤了平⽅损失,并通过词向量拟合预先基于整个数据集计算得到的全局统计信息。

⽂本情感分类:使⽤循环神经⽹络(BiRNN)

使⽤⽂本情感分类来分析⽂本作者的情绪。这个问题也叫情感分析,并有着⼴泛的应⽤。例如,我们可以分析⽤⼾对产品的评论并统计⽤⼾的满意度,或者分析⽤⼾对市场⾏情的情绪并⽤以预测接下来的⾏情。
⽂本分类也属于词嵌⼊的下游应⽤,应⽤预训练的词向量和含多个隐藏层的双向循环神经⽹络们来判断⼀段不定⻓的⽂本序列中包含的是正⾯还是负⾯的情绪。
BiRNN模型中,每个词先通过嵌⼊层得到特征向量。然后,我们使⽤双向循环神经⽹络对特征序列进⼀步编码得到序列信息。最后,我们将编码的序列信息通过全连接层变换为输出。具体来说,我们可以将双向⻓短期记忆在最初时间步和最终时间步的隐藏状态连结,作为特征序列的编码信息传递给输出层分类

⽂本情感分类:使⽤卷积神经⽹络(textCNN)

如果将⽂本当做是⼀维图像,从而可以⽤⼀维卷积神经⽹络来捕捉临近词之间的关联。其中textCNN是卷积神经⽹络应⽤到⽂本分析的开创性⼯作之⼀。
TextCNN 主要使⽤了⼀维卷积层和时序最⼤池化层。多输⼊通道的⼀维互相关运算可以看作是单输⼊通道的⼆维互相关运算。时序最⼤池化层的输⼊在各个通道上的时间步数可以不同。

textCNN 的设计

textCNN 的计算主要分为以下⼏步:

  1. 定义多个⼀维卷积核,并使⽤这些卷积核对输⼊分别做卷积计算。宽度不同的卷积核可能会捕捉到不同个数的相邻词的相关性。
  2. 对输出的所有通道分别做时序最⼤池化,再将这些通道的池化输出值连结为向量。
  3. 通过全连接层将连结后的向量变换为有关各类别的输出。这⼀步可以使⽤丢弃层应对过拟合。

编码器—解码器(seq2seq)

当输⼊输出都是不定⻓序列时,我们可以使⽤编码器—解码器(encoder-decoder) 或者 seq2seq模型。这两个模型本质上都⽤到了两个循环神经⽹络,分别叫做编码器和解码器。

编码器—解码器

上图使⽤编码器—解码器将句⼦由英语翻译成法语。
编码器的作⽤是把⼀个不定⻓的输⼊序列变换成⼀个定⻓的背景变量,并在该背景变量中编码输⼊序列信息。
解码器将上⼀时间步的输出以及背景变量作为输⼊,来⽣成输出序列。

束搜索

束搜索(beam search)是对贪婪搜索的⼀个改进算法。它有⼀个束宽(beam size)超参数。束搜索通过灵活的束宽来权衡计算开销和搜索质量。

束搜索

上图展示了束搜索的过程。束宽为 2,输出序列最⼤⻓度为 3。候选输出序列有 A、C、AB、CE、ABD和 CED。

注意⼒机制

以循环神经⽹络为例,注意⼒机制通过对编码器所有时间步的隐藏状态做加权平均来得到背景变量。

:编码器—解码器上的注意⼒机制

上图描绘了注意⼒机制如何为解码器在时间步上计算背景变量,在解码器的每个时间步使⽤不同的背景变量,并对输⼊序列中不同时间步编码的信息分配不同的注意⼒。

机器翻译

机器翻译是指将⼀段⽂本从⼀种语⾔⾃动翻译到另⼀种语⾔。
评价机器翻译结果通常使⽤ BLEU(Bilingual Evaluation Understudy)。

你可能感兴趣的:(自然语言处理中的深度学习)