NLP基础及其代码-BERT系列

1.基础知识

BERT系列RoBERTa ALBERT ERINE详解与使用学习笔记-腾讯云开发者社区-腾讯云 (tencent.com)

2.BERT

分词:wordpiece

预训练:

mask:选择15%的分词进行mask(80%mask 10%随机替换分词 10%分词保持不变)

NSP:判断前后句子是否连续

3. RoBERTa

Robustly optimized BERT approach

更多的数据

采用动态【MASK】

BERT:对15%的分词进行mask,对于同一文本,在训练过程中mask位置一直保持不变

Roberta:对15%的分词进行mask,对于同一文本,在训练过程中mask的位置会重新挑选

去掉下一句预测的NSP任务

RoBERTa去掉NSP任务

更大的batch_size

BERT的batch_size是256,一共训练了1M步

RoBERTa的batch_size是8k

4. ALBERT

A Lite BERT

大家常说刷榜的ALBERT,其实是xxlarge版本,普通的large版本性能是比BERT的large版本要差的

矩阵分解

通过一个矩阵分解去代替本来的embedding矩阵

参数共享

12层的attention层和全连接层层共享参数

全共享(attention层和全连接层都共享)是比单纯共享attention层的效果要差的,但是全共享d减少的参数实在太多了,所以作者采用的为全共享

SOP代替NSP

将负样本换成了同一篇文章中的两个逆序的句子

n-gram MASK

根据公式取1-gram、2-gram、3-gram的概率分别为6/11,3/11,2/11。越长概率越小

5.ERINE 1.0

Knowledge Integration

把MASK分成三部分

Basic-level Masking:与BERT一样

Entity-level Masking:把实体作为一个整体MASK,例如J.K.Rowling这个词作为一个实体,被一起【MASK】

Phrase-Level Masking:把短语作为一个整体MASK,如a series of作为一个短语整体,被一起【MASK】

Dialogue Language Model(DLM)

增加了对话数据的任务,多轮问答的数据,即可以是QQR、QRQ等等

把里面的单token、实体、短语【MASK】掉,然后预测它们

在生成数据的时,有一定几率用另外的句子替代里面的问题和答案,预测是否是真实的问答对

6.ERINE 2.0

连续多任务学习

策略一,Multi-task Learning,就是让模型同时学这3个任务,具体的让这3个任务的损失函数权重相加,然后一起反向传播

策略二,先训练任务1,再训练任务2,再训练任务3,这种策略的缺点是容易遗忘前面任务的训练结果,如最后训练出的模型容易对任务3过拟合

策略三:连续多任务学习,即第一轮的时候,先训练任务1,但不完全让他收敛训练完,第二轮,一起训练任务1和任务2,同样不让模型收敛完,第三轮,一起训练三个任务,直到模型收敛完

多任务学习,模型输入的时候额外多了一个Task embedding

词法级别

Knowledge Masking Task:把一些字、短语、实体【MASK】掉,预测【MASK】词语。

Capitalization Prediction Task:预测单词是大写还是小写,大写出现在实体识别等,小写可用于其他任务。

Token-Document Relation Prediction Task:在段落A中出现的token,是否在文档的段落B中出现。

语言结构级别

Sentence Reordering Task:把文档中的句子打乱,识别正确顺序。

Sentence Distance Task:分类句子间的距离(0:相连的句子,1:同一文档中不相连的句子,2:两篇文档间的句子)

语句级别

Discourse Relation Task:计算两句间的语义和修辞关系。

IR Relevance Task:短文本信息检索关系,搜索数据(0:搜索并点击,1:搜素并展现,2:无关)

7.ELECTRA

Efficiently Learning an Encoder that Classifies Token Replacements Auucrately

Generator-Discriminator的架构

对一句话里面的token进行随机的【MASK】,然后训练一个生成器,对【MASK】掉的token进行预测,通常生成器不需要很大(原因在后面的实验部分有论证),生成器对【MASK】掉的token预测完后,得到一句新的话,然后输入判别器,判别器判断每个token,是否是原样本的,还是被替换过的。

权重共享

生成器和判别器的embedding参数共享,而且生成器input层和output层的embedding参数共享(想想为什么可以这样?因为生成器最后是一个全词表的分类,所以可以跟输入时embedding矩阵的维度一致,而判别器最后是一个二分类,所以不能共享输入时的embedding矩阵),其他参数不共享

8.XLNET

[1906.08237] XLNet: Generalized Autoregressive Pretraining for Language Understanding (arxiv.org)

PLM

Permutation Language Modeling
XLNet理解_xlnet模型是现有现有的语言模型(language model)中的( )类型-CSDN博客
预训练模型-XLNet - 知乎 (zhihu.com)
XLNet 详解(看不懂你来骂我)-CSDN博客

XLNet的基本做法是:对于输入序列[x1,x2,x3,x4],假设预测的单词为x3,位置在Position3。怎么在Position1和Position2的位置时看到Position4的信息呢?对序列中的4个单词进行随机排列,得到如图所示的4中示例情况。如果将[x2,x4,x3,x1]、[x1,x4,x2,x3]、[x4,x3,x1,x2]这3种排列作为模型的输入,那么x3就可以同时看到上文和下文的信息

把一部分预测词下文的单词排列在预测词的上文位置中,就同时看到了上文和下文的信息,但是形式上仍然是从左到右预测一个单词

令长度为T的序列为[1,2,...,T],ZT表示可能的排列序列,zt为第t个元素, z<t 表示排列 z∈ZT 的前 t−1 个元素

Two-Stream Self-Attention
最通俗易懂的XLNET详解-CSDN博客

表示由模型计算得到的上文表示, 是模型的参数,表示在时间步 t 之前的输入数据,是输入x的嵌入表示。

h只包含内容,g包含位置

content representation

不包含位置信息,包含上下文和自身的信息

query representation

包含位置信息,只包含上下文信息,不包含自身的信息

最后我们看下总的计算过程,首先,第一层的查询流是随机初始化了一个向量即,内容流是采用的词向量即,self-attention的计算过程中两个流的网络权重是共享的,最后在微调阶段,只需要简单的把query stream移除,只采用content stream即可。

集成Transformer-XL

片段循环机制

有一个长度为1000的序列,如果我们设置transformer的最大序列长度是100,那么这个1000长度的序列需要计算十次,并且每一次的计算都没法考虑到每一个段之间的关系,如果采用transformer-xl,首先取第一个段进行计算,然后把得到的结果的隐藏层的值进行缓存,第二个段计算的过程中,把缓存的值拼接起来再进行计算。该机制不但能保留长依赖关系还能加快训练,因为每一个前置片段都保留了下来,不需要再重新计算,在transformer-xl的论文中,经过试验其速度比transformer快了1800倍。

相对位置编码

在BERT等传统的Transformer模型中,位置编码是绝对的,即每个位置都有一个固定的编码,这个编码是基于其绝对位置的。对于序列中的每个单词,绝对位置编码提供了该单词在序列中的唯一标识。

这种编码方式在处理较长的序列时会遇到问题,尤其是在序列被拆分成片段时,因为绝对位置编码无法明确区分不同片段中的相同位置。

相对位置编码解决了绝对位置编码的局限性。它关注的是位置之间的相对关系而不是绝对位置。这使得模型能够更好地处理长序列和片段。

在Transformer-XL等模型中,引入了相对位置编码来捕捉序列中元素之间的相对距离,这样即使序列被拆分成多个片段,模型仍然能够保持对相对位置的感知。

  1. 位置编码的计算:

    • 给定两个位置 i 和 j,相对位置编码被表示为 sij。
    • 如果 i 和 j 属于同一个片段,则相对位置编码为 sij=s+。
    • 如果 i 和 j 不在同一个片段里,则相对位置编码为 sij=s−,其中 s+ 和 s− 是在训练过程中学习得到的编码。
  2. 计算注意力权重:

    • 在传统的Transformer中,注意力权重的计算公式是:

      其中 Q 是查询矩阵,K是键矩阵,V 是值矩阵,d是嵌入维度。

    • 引入相对位置编码后,计算方式有所调整。首先计算相对位置编码与查询向量的内积:

      其中 qi​ 是位置 i 的查询向量,b是一个需要训练的偏置量,Ssj​ 是相对位置编码。

    • 然后,将相对位置编码计算结果 aij与传统注意力权重的计算结果相加,得到最终的注意力权重。

xlnet:XLNet: Generalized Autoregressive Pretraining for Language Understanding - GitCode

相关推荐
loongloongz1 小时前
联合条件概率 以及在语言模型中的应用
人工智能·语言模型·自然语言处理·概率论
lijfrank1 小时前
情感计算领域期刊与会议
人工智能·人机交互
sp_fyf_20241 小时前
计算机人工智能前沿进展-大语言模型方向-2024-09-18
人工智能·语言模型·自然语言处理
sp_fyf_20241 小时前
计算机人工智能前沿进展-大语言模型方向-2024-09-14
人工智能·语言模型·自然语言处理
ybdesire1 小时前
nanoGPT用红楼梦数据从头训练babyGPT-12.32M实现任意问答
人工智能·深度学习·语言模型
AI极客菌1 小时前
Stable Diffusion绘画 | 生成高清多细节图片的各个要素
人工智能·ai·ai作画·stable diffusion·aigc·midjourney·人工智能作画
FOUR_A1 小时前
【机器学习导引】ch2-模型评估与选择
人工智能·机器学习
lupai2 小时前
盘点实用的几款汽车类接口?
大数据·人工智能·汽车
geekrabbit2 小时前
机器学习和深度学习的区别
运维·人工智能·深度学习·机器学习·浪浪云
Java追光着2 小时前
扣子智能体实战-汽车客服对话机器人(核心知识:知识库和卡片)
人工智能·机器人·汽车·智能体