当前位置:   article > 正文

【笔记一】飞浆-基于深度学习的自然语言处理_飞桨怎么初始化embedding矩阵

飞桨怎么初始化embedding矩阵

课程地址:https://aistudio.baidu.com/aistudio/education/group/info/24177

导论

在这里插入图片描述

应用场景

在这里插入图片描述
智能问答:传统搜索引擎,现在推出了智能手机、智能音箱,呈现小屏化、无屏化的特点
在这里插入图片描述
如,自动制作咖啡
在这里插入图片描述
场景如,刷剧字幕,国际会议

挑战

1、多样性
2、歧义性
在这里插入图片描述

图灵测试

人类发起一个问题,当返回的结果,人无法区分出是机器返回的、还是人返回的,就说明机器已经达到了人的水平,就通过了图灵测试。
在这里插入图片描述

NLP的技术发展

NLP技术范式的变化:
在这里插入图片描述
基于深度学习的方法,不仅带来了技术上的革新,也带来了开发效率的提升
在这里插入图片描述
在这里插入图片描述

学习线路

在这里插入图片描述
问答:检索式、生成式 KBQA
对话:单轮对话、多轮对话、多方对话

在这里插入图片描述
在这里插入图片描述

基础概念

在这里插入图片描述

神经网络

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
损失函数:度量预测值和真实值的差距
交叉熵损失,从信息量的角度,度量预测概率的分布和真实概率分布的差异
实际分类任务中,交叉熵损失用的多,在指导神经网络训练优化的过程中更稳定
softmax 概率映射函数
神经网络的损失,反向传播对权重w进行更新
搜索方向是d,步长n

自监督词表示学习

(1)onehot编码
(2)word2vec: skip-gram、CBOW

embedding词向量最初是随机初始化的,然后通过自监督的网络进行学习
  • 1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
embedding编码其实是onehot编码的线性映射,低维稠密的可学习向量
onehot编码是规定的规则,不需要学习; Embedding编码需要学习得到
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
CBOW的目标是最大化中间词wt

在这里插入图片描述

句子编码神经网络

(1)自回归语言模型 LM
(2)循环神经网络 RNN
(3)self-Attention
(4)Transformer
在这里插入图片描述
LM 是依次用上文的单词预测当前单词,并最大化一个句子从头到尾预测每个单词的概率;只能拿到上文的信息,对当前词做预测

在这里插入图片描述
在这里插入图片描述
RNN 是串行的结构,没有并行,因此,建模长距离语意关系的时候,由于通路太长,模型会对靠前的语义产生遗忘
为了实现并行、常数时间复杂的长距离依赖,提出来self-Attention;就是每个单词和整句话的每个词进行匹配,获取当前这个单词对每个单词的重视程度,然后利用重视程度对整句话的单词表示进行加权,加权的结果就可以表示这个单词。(每个单词的表示都是整合整个句子的)

在这里插入图片描述
self-Attention 是Transformer的核心模块

Transformer 是Multi-Head Self-Attention 多头注意力机制的结构;将不同参数的self-attention重复做多次,并拼接在一起;
目的是,模型形成多个子空间,让模型关注语言、句子信息的不同方面,让模型对句子有多视角的理解;

Self-Attention 和RNN 不同,并没有考虑单词的顺序,为了更精准的表示句子的信息,需要对句子的输入,加入位置信号;也就是Position Embedding

self-Attention的工作逻辑:

假定句子的输入是四个单词,对应的词向量映射到Q K V 三个不同的表示
阶段1:第一个单词的Query向量,会和句子中四个单词的K向量分别计算内积,会得到4个score; 
阶段2:对4个score进行softmax归一化,得到0-1的概率分布;就是注意力的权重
阶段3:用注意力的权重,对输入句子的value向量,分别做加权,得到融合整个句子序列的表示;就是得到的新的,对每个单词的向量表示
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
Transformer中还有一个重要的部分,残差连接,为了解决梯度消失的问题

神经网络的层数加深,模型的训练和优化会变得越来越困难,因为梯度消失;
RNN可以理解成,横向的很深的网络,现在要建立一个竖向的很深的网络,同样存在梯度消失的问题。

残差连接包括 映射 和 直连接部分;
残差模块在计算梯度的时候,直连接的部分就多了一个常数1,这样就可以缓解梯度消失的问题
对残差之后的结果做归一化:因为随着残差连接层数的不断增加,数据的输出分布会不断产生变化,为了保证数据特征分布的稳定性,就要做归一化。
nlp和图像不一样,它是变长的,所以,用的是层归一化的操作:对每一个位置的向量表示,对每个词的向量表示做归一化

不用batch nomalization,对同一个batch里,每个feature的维度进行归一化,由于NLP中每个batch的序列长度不一样,为了保证并行的运算,会对比较短的序列做padding
如果用batch nomalization,会把padding这种表示也归一化进去,造成很多的噪声

自回归、自编码预训练学习

神经网络建模好句子后,可以用于各种NLP任务,如文本分类、文本生成等,可以提高这些任务的效果;并结合Transformer高效建模句子的能力,并结合大规模的语料数据,大规模预训练提供了基础
在这里插入图片描述
GPT:自监督语言模型任务的代表,是用Transformer结构在大规模的语言数据上,学习语言模型(从左到右,结合上文信息,逐个最大化单词的任务)

在这里插入图片描述
以自编码词向量CBOW为代表的预训练模型BERT,对句子中的某个中间词进行掩码,并结合上下文的单词对中间词预测。每个单词都可以表示句子中的全局信息,句子的表示能力更强
基于语言模型的GPT,只能看到每个单词的上文信息。

预训练语言模型及应用

语言理解

在这里插入图片描述

一个好的表示,应该要具备通用含义,且与具体的任务无关;同时,能对具体的任务提供有用的信息
语义理解是针对于任务的理解:
如果是做完型填空的任务,需要对局部信息有很好的理解,对字、词粒度编码就行;
如果做文本分类,就更应该关注文局信息,对句子、篇章粒度编码

NLP领域,好的语言表示应该能从文本中学习到蕴含的内在、潜在规则,同时支持语义、句法结构、语言学的信息等

如何学习好的通用语义表示?
(1)自监督学习范式:word2vec
(2)序列编码网络:RNN、LSTM

在这里插入图片描述
在这里插入图片描述
词袋模型,从大规模、无标注数据中,学习每个token的词向量,词向量是具有空间意义的,并不是简单映射,我们希望具有相关意义是词在词向量空间是相近的

word2vec和序列编码网络,都是从海量的、无标注的语料数据中,学习通用的语言表示;产生的词向量是与具体的下游任务无关的;

与词袋模型相比,序列编码网络学习词向量是通过Embedding层来实现的
在这里插入图片描述
获取到词向量矩阵后,如何解决具体的任务?简单范式如下:
(1)通过查表的方式,将原始的文本转化为对应的词向量
(2)做token级别的任务,如观点抽取,抽取式阅读理解,只需要在文本词向量之后接一个分类器
(3)做句子级别的任务,如情感分析、文本匹配,需要先经过pooling层,获取全局的语义信息,再接一个分类器
在这里插入图片描述
针对上述问题,解决范式:Pre-training & Fine-tuning机制
在这里插入图片描述
好处:
(1)可以明显的加速收敛;
(2)减少模型对任务相关数据的需求
在这里插入图片描述
在这里插入图片描述
预训练网络是深层的神经网络,不同的层可以捕获到不同粒度的特征信息;其底层信息具有高可复用性(通用性比较强,在cv领域,底层信息就是点、线、人脸的局部特征等,是与下游任务无关的)
高层语义特征是与具体的任务有强相关性的,这些丰富的信息就是Fine-tuning阶段取得提升的关键
在这里插入图片描述

ELMO

在这里插入图片描述
ELMO : 双层、双向LSTM
在这里插入图片描述
在这里插入图片描述
获取预训练模型后,如何应用到具体的任务?ELMO 采用的是Feature-Based的Fine-tuning范式,将预训练模型作为纯粹的特征抽取器,参数是固定的,不同的下游任务只是通过预训练模型获得词向量,需要设计特定的网络结构来完成具体的下游任务

具体来说:ELMO 是通过将任务相关的文本,输入进预训练网络,并提取模型每一层输出的语义信息,如图中的E1、E2、E3都是每一层输出的不同的语义信息;然后将这些语义信息进行加权相加,再输入到任务特定的网络中进行学习

语义特征信息的加权相加,阿尔法参数是可学习的,这也是ELMO实现动态word embedding的关键

Model-Based和Feature-Based都是模型在做fine-tuning时的方法,Feature-Based是固定预训练网络的参数,直接把它作为特征的提取器,在做下游任务的时候不对参数进行调整;Model-Based就是直接拿预训练的网络作为下游任务网络的一部分

在这里插入图片描述
Glove 是无法区分同一个词的词性、词义的,ELMO 具备更优的区分能力;不仅解决了多义词的问题,还可以让词性都对应起来

在这里插入图片描述
并没有显示的、句向量的建模

GPT

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
GPT采用基于Model-Based的方式,预训练网络作为下游任务网络的一部分,参与任务学习,这样的方式可以大大减少下游任务新增参数的数量,下游任务的网络相较于预训练网络也只有少量的网络结构的变动,可以节省大量的时间
在这里插入图片描述
对于分类任务,模型只需要在原输入文本上加上起始、终结的符号,并在网络后端新增一个分类器。
对于句子关系判断的问题 ,如语义识别,两个句子中间再加个分隔符,对于文本相似度的判断、多向选择等问题,都只需要少量的改动就可以实现Fine-tuning
在这里插入图片描述
GPT采用的仍然是传统单向语言模型作为训练目标,完全没有做交互式双向预训练的探索,只解决了ELMO下游任务网络设计复杂的问题

BERT

在这里插入图片描述
Bert实现了交互式语言模型建模
引入句子级别的预训练任务,实现句向量的显示建模
在这里插入图片描述
Bert 同时训练了token和句子级别的任务;token级别的任务是Mask-LM任务
Bert mask的粒度是字

在这里插入图片描述
Bert中引入的句子级别的任务,是下一句预测任务;用于判断模型输入两个句子,是否是上下句关系,以此来建立句向量
在这里插入图片描述
如何使用,指的是预训练模型如何用于下游任务

Bert采用了Model-Based的范式,在做分类任务的时候,只需要在网络的后端接一个分类器
在这里插入图片描述

在这里插入图片描述
Bert LM的任务,mask的是字粒度的信息,模型可以只通过对mask的字进行局部建模完成对mask字的预测,可以不需要文本中除了这个词以外的其它token的;模型缺乏对全局建模信息的动力。 这样,模型就难以学到词、短语、实体的完整语义信息

因此,百度提出了基于知识增强的语义理解模型;ERNIE在网络结构和预训练和Bert基本保持一致,主要区别:
(1)ERNIE 将mask的粒度由token(Bert)扩展为了word或entity(词或实体)
(2)ERNIE 采用的是百度自建的预训练语料库

ERNIE

ERNIE 将mask的粒度由token(Bert)扩展为了word或entity(词或实体)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
科学的探索是无止境的!
在这里插入图片描述
ERNIE的初衷是为了强化语言知识建模,ERNIE2.0 相较于ERNIE,引入了更多的预训练任务,用于捕捉更丰富的语义知识;与此同时,也带来了新的问题,如何在学习新知识的同时不遗忘旧知识,为此ERNIE2.0提出了持续学习语义理解框架,简言之,就是在预训练阶段不断进行任务的叠加训练
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

应用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于表示的匹配模型,两段文本分别进行建模,然后基于得到的语义表示进行相似度计算,一般都是双塔结构

基于交互的匹配模型,两段文本进行联合表示建模,然后直接在句向量上进行分类,一般都是单塔结构

每个塔,就是一个transformer encoder;双塔的两个transformer encoder可以进行参数共享

在这里插入图片描述
Bert允许建模的最大长度是512
在这里插入图片描述
两段文本进行联合建模,基于句向量进行分类
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/737311
推荐阅读
相关标签
  

闽ICP备14008679号