版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
自然语言处理NaturalLanguageProcessing第四章自然语言处理任务之一语言模型目录背景介绍Contents1章节概述2小节介绍3本章总结4背景介绍BACKGROUNDONE背景介绍
在自然语言处理领域,研究者们为了对存在的大量文本进行分析,建立了一系列的模型来帮助人们理解自然语言。语言模型是自然语言处理领域最基础的任务,通过语言模型训练得到的文本特征可以直接地广泛应用于各类下游任务当中。本章对语言模型的历史发展进行了一个详细的汇总,对其基本原理进行了介绍,并对未来的研究趋势进行了展望。章节概述CHAPTEROVERVIEWTWO章节概述图4-1语言模型导图小节介绍SECTIONINTRODUCTIONTHREE4、语言模型4.2从统计语言模型到神经网络语言模型语言模型任务定义4.14.3语言模型评价指标4.4预训练语言模型4.5语言模型的前沿技术与发展趋势4.1语言模型任务定义
4.2从统计语言模型到神经网络语言模型从统计语言模型到神经网络语言模型4.2语言模型任务定义4.14.4预训练语言模型4.5语言模型的前沿技术与发展趋势4.3语言模型评价指标4.2.1统计语言模型
4.2.1统计语言模型
4.2.1统计语言模型
4.2.1统计语言模型图4-2表示了N-gram模型的求解过程。对于音字转换问题,输入拼音nixianzaiganshenme,可能对应着很多转换结果,各节点之间构成了复杂的网络结构,从开始到结束的任意一条路径都是可能的转换结果,从诸多转换结果中选择最合适的结果的过程就需要解码算法。常用的解码算法是viterbi算法,它采用动态规划的原理能够很快地确定最合适的路径,这里不予详细介绍。图4-2N-gram模型求解过程4.2.2神经网络语言模型
N-gram语言模型存在很多问题,其中一个很重要的问题是N-gram只考虑到其相邻的有限个单词,无法获得上文的长时依赖。2003年Bengio提出了神经网络语言模型(neuralnetworklanguagemodel,NNLM),并提出了词向量的概念。词向量采用连续变量(具有一定维度的实数向量)来进行单词的分布式表示。图4-3神经网络语言模型基本结构4.2.2神经网络语言模型
如图4-2所示,它是一个最简单的神经网络,仅由四层构成,输入层、嵌入层、隐藏层、输出层。神经网络语言模型先给每个词在连续空间中赋予一个向量(词向量),再通过神经网络去学习这种分布式表征。很显然只要单词表征足够好的话,这种方式相比N-gram具有更好的泛化能力。从而很大程度地降低了数据稀疏带来的问题。通常来讲,我们可以将图4-2中的神经网络语言模型看作如图4-3示的四层结构:图4-4
神经网络语言模型四层结构4.2.2神经网络语言模型
网络的输入是文本的index序列,例如单词“我”在字典(大小为∣V∣)中的index是16,单词“爱”的index是27,则神经网络语言模型通过句子“我爱”来预测“我爱学习”,窗口大小内上文词的index序列就是16,27。嵌入层(Embedding)是一个大小为|V|×K的矩阵,其中K的大小是自己设定的,从中取出第16,27行向量拼成2×K的矩阵作为Embedding层的输出了。隐藏层接受拼接后的Embedding层输出作为输入,通过Softmax操作进行归一化,得到输出在每一个单词上的概率分布。图4-5
Softmax计算方法4.2.2神经网络语言模型
NNLM的优点在于:NNLM相比N-gram语言模型不需要事先计算保存所有的概率值,而是通过函数计算得到;NNLM增加了单词词向量,利用神经网络求解最优参数及Softmax的使用,相比N-gram可以更加平滑的预测序列单词的联合概率。随着深度学习技术的不断发展,目前基于循环神经网络(RNN)的语言模型成为科研界的主流。循环神经网络可以真正充分地利用所有上文信息来预测下一个词。从形式上看,这是一个非常理想的模型,它能够用到文本的所有信息。如图4-6所示图4-6基于RNN的语言模型4.3语言模型评价指标语言模型评价指标4.3语言模型任务定义4.1从统计语言模型到神经网络语言模型4.24.4预训练语言模型4.5语言模型的前沿技术与发展趋势4.3语言模型的评价指标
当训练得到一个语言模型的时候,我们需要一个标准来评价语言模型的好坏,即计算模型输出与真实分布之间的差异,信息论中常采用相对熵(relativeentropy)来衡量两个分布之间的相近程度。对于离散随机变量X,熵、交叉熵以及相对熵的定义分别如下假定p是样本的真实分布,q是对其的建模。因为真实分布的熵H(p)值是确定的,因此优化相对熵D(p||q)等价于优化交叉熵H(p,q)。4.3语言模型的评价指标显然,交叉熵越小,则建模的概率分布越接近真实分布。交叉熵描述的是样本的平均编码长度,虽然物理意义很明确,但是不够直观。因此,在此基础上,我们定义困惑度(perplexity)如下:
4.3语言模型的评价指标
则PP(S)的计算结果为:
此时训练好的bigram语言模型的困惑度为3,也就是说,在平均情况下,该模型预测下一个单词的时候,会有3个单词等可能地作为下一个单词的合理选择。4.4预训练语言模型预训练语言模型4.4语言模型任务定义4.1从统计语言模型到神经网络语言模型4.24.5语言模型的前沿技术与发展趋势语言模型评价指标4.34.4.1什么是预训练语言模型
预训练思想的本质是模型参数不再是随机初始化,而是通过一些任务(如语言模型)进行预训练。大量的研究工作表明,大型语料库上的预训练模型(Pre-trainedModel,PTM)已经可以学习通用的语言表征,这对于下游的NLP相关任务是非常有帮助的,可以避免大量从零开始训练新模型。
第一代预训练模型旨在学习词向量。由于下游的任务不再需要这些模型的帮助,因此为了计算效率,它们通常采用浅层模型,如4.4.3节讲到的Word2Vec语言模型。尽管这些经过预训练的词向量也可以捕捉单词的语义,但它们却不受上下文限制,只是简单地学习“共现词频”。这样的方法明显无法理解更高层次的文本概念,如句法结构、语义角色、指代等等。而第二代预训练模型专注于学习上下文的词嵌入,如后续章节会讲到的ELMo、OpenAIGPT以及BERT等等。它们会学习更合理的词表征,这些表征囊括了词的上下文信息,可以用于问答系统、机器翻译等后续任务。另一层面,这些模型还提出了各种语言任务来训练预训练模型,以便支持更广泛的应用,因此它们也可以称为预训练语言模型。4.4.1什么是预训练语言模型
图4-7
自然语言处理模型训练一般结构4.4.1什么是预训练语言模型图4-8
预训练语言模型发展趋势
预训练语言模型的发展如图4-8所示。从2013年Word2Vec出现以来,预训练语言模型的不断飞速发展。下一节对ELMo和BERT两个最近受到研究者们关注的预训练语言模型进行介绍
。4.4.2
ELMo模型
4.4.2
ELMo模型
图4-9ELMo模型预训练过程
4.4.2
ELMo模型
ELMo的本质思想是:事先用语言模型学好一个单词的词向量,此时多义词无法区分。在实际使用词向量的时候,单词已经具备了特定的上下文了,这个时候可以根据上下文单词的语义去调整单词的词向量表示,这样经过调整后的词向量更能表达在这个上下文中的具体含义,自然也就解决了多义词的问题了。其详细结构如图所示图4-10ELMo模型详细结构4.4.2
ELMo模型每个编码器的深度都是两层LSTM叠加,计算方式为:对于每个单词通过一个L层的双向LSTM计算出2L+1个表示
4.4.2
ELMo模型
图4-11展示了ELMo模型在下游任务的使用过程。假设下游任务仍然是QA问题,此时对于问句X,先将句子X作为预训练好的ELMo网络的输入,这样句子X中每个单词在ELMo网络中都能获得对应的三个词向量,之后给予这三个词向量中的每一个词向量一个权重,这个权重可以学习得来,根据各自权重累加求和,将三个词向量整合成一个,然后将整合后的这个词向量作为问句X在自己任务的那个网络结构中对应单词的输入,以此作为补充的新特征给下游任务使用。图4-11ELMo模型下游任务使用流程4.4.3
BERT模型谷歌在2018年提出了BERT语言模型(BidirectionalEncoderRepresentationfromTransformers),并在各类自然语言处理任务上取得了极好的成绩,逐渐成为目前语言模型的主流。BERT主要采用了Transformer作为特征提取器。Transformer的结构如图4-12所示。图4-12Transformer结构4.4.3
BERT模型和大多数seq2seq模型一样,Transformer的结构也是由Encoder和Decoder组成。其中Encoder和Decoder都是由六个相同的Layer构成。Encoder每层包括两个sub-layers:1、multi-headself-attention。
用来计算输入的self-attention。2、简单的全连接网络。Decoder每层包括3个sub-layers:1、Maskedmulti-headself-attention,计算输入的self-attention,因为是生成过程,因此在时刻t的时候,大于t的时刻都没有结果,只有小于t的时刻有结果,因此需要做Mask。2、全连接网络,与Encoder相同。3、对encoder的输入进行attention计算。4.4.3
BERT模型在Transformer的encode中,数据首先会经过一个叫做Self-Attention的模块得到一个加权之后的特征向量,在这一段暂时将其叫做Z
。得到Z之后,它会被送到encoder的下一个模块,即FeedForwardNeuralNetwork。这个全连接有两层,第一层的激活函数是ReLU,第二层是一个线性激活函数。图4-13
Self-Attention计算示意图4.4.3
BERT模型
图4-14
Self-Attention计算流程14.4.3
BERT模型而对于Self-Attention的计算方法,整个过程可以分成7步:1、将输入单词转化成嵌入向量。2、根据嵌入向量得到Q、K、V三个向量图4-15
Self-Attention计算流程24.4.3
BERT模型3、为每个向量计算一个Score。4、为了梯度的稳定,Transformer使用了Score归一化。5、对Score施以Softmax激活函数。6、Softmax点乘Value值V
,得到加权的每个输入向量的评分。7、相加之后得到最终的输出结果。图4-16
Self-Attention计算流程34.4.3
BERT模型
Transformer中采用了Multi-HeadAttention机制,其相当于N个不同的Self-Attention的集成(ensemble)。多次进行Self-Attention操作,然后将得到的结果进行合并,然后将合并的结果进行线性变换得到最后的输出。图4-17
Multi-Head
Attention机制4.4.3
BERT模型这里我们以N=8举例说明。Multi-HeadAttention由八个Self-Attention集成得到,输出分成3步:1、将数据X分别输入到8个Self-Attention中,得到8个加权后的特征矩阵2、将8个按列拼成一个大的特征矩阵。3、特征矩阵经过一层全连接后得到输出4.4.3
BERT模型图4-18
Multi-Head
Attention计算流程4.4.3
BERT模型Decoder和Encoder的结构差不多,但是在在机器翻译中,解码过程是一个顺序操作的过程,也就是当解码第i个特征向量时,我们只能看到第i个及其之前的解码结果,所以多了一个Masked
Multi-Head
Attention的sub-layer,而Decoder中的Self-Attention部分与Encoder部分完全一样。Decoder的输入输出和解码过程为:输入:Encoder的输出和对应i-1位置Decoder的输出。所以中间的Attention不是self-attention,它的K,V来自Encoder,Q来自上一位置Decoder的输出输出:对应i位置的输出词的概率分布图4-19
Transformer
Decoder结构4.4.3
BERT模型解码组件最后会输出一个实数向量。我们如何把浮点数变成一个单词?这便是线性变换层要做的工作,它之后就是Softmax层。线性变换层把解码组件产生的向量投射到一个比它大得多的、被称作对数几率(logits)的向量里。对数几率向量为多个单元格长度的向量——每个单元格对应某一个单词的分数。接下来的Softmax层便会把那些分数变成概率(都为正数、上限1.0)。概率最高的单元格被选中,并且它对应的单词被作为这个时间步的输出。图4-20
Softmax输出4.4.3
BERT模型
Transformer是一个仅由Self-Attention和前馈神经网络组成的模型,它不是类似RNN的顺序结构。考虑到RNN的计算限制为是顺序的,也就是说RNN相关算法只能从左向右依次计算或者从右向左依次计算。Transformer将序列中的任意两个位置之间的距离是缩小为一个常量,虽然ELMo用双向LSTM来做特征提取器,但是这两个方向的LSTM其实是分开训练的。而BERT提出了使用一种新的任务来训练监督任务中的真正可以双向特征提取的模型。OpenAIGPT也是一个以Transformer为基础的预训练语言模型,核心思想是利用Transformer模型对大量文本进行无监督学习,其目标函数就是语言模型最大化语句序列出现的概率,不过这里的语言模型仅仅是forward单向的,不同模型之间的区别如图4-21所示。图4-21预训练语言模型对比4.4.3
BERT模型如图4-22所示,整个BERT模型的输入由三部分组成,每个序列的第一个单词始终是特殊分类嵌入([CLS])。对应于该单词的最终隐藏状态(即Transformer的输出),被用作分类任务的聚合序列表示。对于非分类任务,将忽略此向量。TokenEmbeddings是词向量,第一个单词是CLS标志,可以用于之后的分类任务。句子对被打包成一个序列,以两种方式区分句子。首先,用特殊标记([SEP])将它们分开。其次,添加一个句子A嵌入到第一个句子的每个单词中,一个句子B嵌入到第二个句子的每个单词中。对于单个句子输入,只使用句子A嵌入。将学习得到的的位置向量加到输入里面,支持的序列长度最多为512个单词。图4-22BERT模型输入4.4.3
BERT模型
BERT随机去掉句子中的部分单词,然后模型来预测被去掉的单词是什么。这样实际上已经不是传统的神经网络语言模型了,而是单纯作为分类问题,根据这个时刻的隐藏层来预测这个时刻的输出应该是什么。这里的操作是随机mask语料中15%的单词,然后预测被遮挡的单词。这样操作存在一个问题,进行微调的时候没有遮挡单词,为了解决这个问题,采用了下面三种策略:80%的时间中:将选中的词用[MASK]来代替,例如:
我爱学习
我爱[MASK]10%的时间中:将选中的词用任意的词来进行代替,例如
我爱学习
我爱桌子10%的时间中:选中的词不发生变化,例如
我爱学习
我爱学习这样存在另一个问题在于在训练过程中只有15%的单词被预测,正常的语言模型实际上是预测每个单词的,因此Masked语言模型会收敛的慢一些。4.4.3
BERT模型这里微调之前对模型的修改非常简单,例如针对情感分析这类任务,取第一个单词的输出表示,用一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地铁闸机安装合同范本
- 大型美甲店合伙协议书
- 墙壁衣柜出租合同范本
- 地库电缆安装合同范本
- 场地物料租赁合同范本
- 外包项目工程合同范本
- 围栏安装承揽合同范本
- 垃圾清理承揽合同范本
- 土建工程爆破合同范本
- 园林苗木修理合同范本
- 软件开发中的自动化测试
- 【MOOC】颈肩腰腿痛中医防治-暨南大学 中国大学慕课MOOC答案
- 【MOOC】中级宏观经济学-江西财经大学 中国大学慕课MOOC答案
- 主动脉夹层的护理查房
- 《工程管理与经济决策》课程教学大纲
- 高中语文课件:对联
- 眼科护理常见不良事件文件
- 2024-2025学年人教版物理九年级上学期期中选择通关训练
- 集装箱购销协议合同范本
- 烧伤病人护理(查房)
- DL∕T 5161.14-2018 电气装置安装工程质量检验及评定规程 第14部分:起重机电气装置施工质量检验
评论
0/150
提交评论