NLP之Bert相关算法介绍

网友投稿 774 2022-05-30

Bert相关算法介绍

主线

Bert的历史沿革是什么,继承了什么,创新了什么,为什么效果那么好,主要原因是什么

预训练

为什么可以复用

底层特征比较通用、可以复用

为什么还要做fine-tuning?

高层特征任务有相关性

预训练的特点

图像预训练

一方面ImageNet是图像领域里有超多事先标注好训练数据的数据集合,分量足是个很大的优势,量越大训练出的参数越靠谱;

另外一方面因为ImageNet有1000类,类别多,算是通用的图像数据,跟领域没太大关系,所以通用性好

word embedding

神经网络语言模型

NNLM

概念

根据句子里面前面的一系列前导单词预测后面跟哪个单词的概率大小(理论上除了上文之外,也可以引入单词的下文联合起来预测单词出现概率)

方法

单词用onehot编码

乘以矩阵Q

获得向量C(W)

拼接每个单词的C(W)

链接隐含层

接softmax预测应该接哪个单词

Q

包含v行,v代表词典大小

每一行对应的单词的word embedding

NLP之Bert相关算法介绍

Q需要学习

总体看

输入一个词的上文,预测下文

word2vec

分类

CBOW

Continous bag of words model

Skip-gram

Continous skip-gram model

方法

Word2Vec的网络结构其实和NNLM是基本类似的

CBOW

用一个词的上下文,预测中心词

Skip-gram

用一个,预测它的上下文单词

目标

构建word embedding结果

一个单词表达成word embedding后,比较容易找到语义相近的其他词汇

使用Word2Vec或者Glove,通过做语言模型任务,就可以获得每个单词的Word Embedding

效果

提升1-2个点

有什么问题?

多义词问题

因此一个词只对应一行embedding

静态的word embedding

训练好之后每个单词的表达就固定住了,以后使用的时候,不论新句子上下文单词是什么,这个单词的Word Embedding不会跟着上下文场景的变化而改变

如何解决多义词问题?

EMLO

ELMO

名称

Embedding from Language Models

论文题目

Deep contextualized word representation

概念思路

先用语言模型学好一个单词的Word Embedding,此时多义词无法区分,不过这没关系。

实际使用Word Embedding的时候,单词已经具备了特定的上下文了,可以根据上下文单词的语义去调整单词的Word Embedding表示,这样经过调整后的Word Embedding更能表达在这个上下文中的具体含义,自然也就解决了多义词的问题了。

所以ELMO本身是个根据当前上下文对Word Embedding动态调整的思路。

算法思路

第一个阶段是利用语言模型进行预训练;

第二个阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的Word Embedding作为新特征补充到下游任务中。

网络结构

双层双向LSTM

图中左端的前向双层LSTM代表正方向编码器,输入的是从左到右顺序的除了预测单词外Wi的上文Context-before;

右端的逆向双层LSTM代表反方向编码器,输入的是从右到左的逆序的句子下文Context-after;

每个编码器的深度都是两层LSTM叠加。

每个单词都能得到对应的三个Embedding

单词的Word Embedding

第一层LSTM中,对应单词位置的Embedding

句法信息更多

第二层LSTM中,对应单词位置的Embedding

语义信息更多

如何使用

每个单词得到3个Embedding

每个embedding给一个权重a

权重可以学习

特点

Feature-based Pre-Training

提取特征,然后整体整合在一起

是否解决多义词问题?

第一层LSTM编码了很多句法信息,这在这里起到了重要作用

缺点

LSTM抽取特征能力,弱于Transformer

拼接方式双向融合特征的融合能力偏弱

GPT

Generative Pre-Training

生成式的预训练

基于Fine-tuning模式的预训练模型

预训练思路

第一个阶段是利用语言模型进行预训练

第二阶段通过Fine-tuning的模式解决下游任务。

如何用在下游任务

对于分类问题,不用怎么动,加上一个起始和终结符号即可;

对于句子关系判断问题,比如Entailment,两个句子中间再加个分隔符即可;

对文本相似性判断问题,把两个句子顺序颠倒下做出两个输入即可,这是为了告诉模型句子顺序不重要;

对于多项选择问题,则多路输入,每一路把文章和答案选项拼接作为输入即可

与其他方法的区别

与ELMO的区别

用了transformer的结构,而不是LSTM

没有上下文同时预测

仅用上文预测

Bert

几大类语言任务

序列标注

中文分词

词性标注

命名实体识别

分类任务

文本分类

情感计算

句子关系判定

QA等

判断语义关系

生成任务

机器翻译

文本摘要

roberta

更长的时间,更大的batch size,更多的数据进行训练

训练方式发生变化

去掉BERT中的NSP目标(next sentence prediction)

如何选取sentence组合

segment组合

sentence组合

full sentence组合

没有NSP任务等

跨越文档的sentence组合

在更长的句子上进行训练

根据训练数据动态地改变mask的模式

BERT的masking是在预处理时进行的,导致这种Masking是静态的,每个epoch的masking结果一致。原本的BERT为了避免这种情况,把数据复制了十份,然后进行了十种不同的静态masking。这样在40个epochs的训练中,同样masking的数据会在整个训练中出现四次。

RoBERTa中使用Dynamic Masking,只是在序列送入模型中的时候才去进行动态的masking,这样在更大的数据集上或者更多步数的训练上会表现更好

学习链接

https://zhuanlan.zhihu.com/p/49271699

Transformer

https://zhuanlan.zhihu.com/p/37601161

相关基础知识

https://jalammar.github.io/illustrated-transformer/

Jay Alammar可视化地介绍Transformer的博客文章

http://nlp.seas.harvard.edu/2018/04/03/attention.html

哈佛大学NLP研究组写的“The Annotated Transformer. ”

代码原理双管齐下,讲得非常清楚。

附件: Introduction - ZL.pptx 718.07KB 下载次数:1次

AI 机器学习 深度学习 自然语言处理基础

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Django框架基础(大型施工现场。。)
下一篇:AB153x API----ADC
相关文章