李宏毅nlp学习笔记05:BERT

1.Context Vector(考虑上下文关系的向量):

李宏毅nlp学习笔记05:BERT

2.self-supervised learning(自监督学习):

李宏毅nlp学习笔记05:BERT

3.预测下一个token:

李宏毅nlp学习笔记05:BERT
需要注意的是,输入w1来预测出w2的时候,是不能同时把w2输入的,很显然的。否则模型直接训练为与下一个输入相同即可。
通过h1来得出输出为w1的方法,上图中的右侧为一种方法。
最早的使用的model 是一个LSTM:
李宏毅nlp学习笔记05:BERT

现在一般使用的是self-attention:

具体是使用了with constraint(限制注意力矩阵中的那些位置可以运算),以防止获取到未来的信息。
比如四个的时候,只有绿色的部分才能够进行计算,白色的部分不能。
李宏毅nlp学习笔记05:BERT

4.从上面可以得到,我们可以使用Predict next token来产生一个文章:

李宏毅nlp学习笔记05:BERT

5.Bidirectional

李宏毅nlp学习笔记05:BERT
从左往右的产生的向量考虑了上文,
从右往左的产生的向量考虑了下文,
因为最终把两个向量结合起来当做w4产生的向量。

李宏毅nlp学习笔记05:BERT
但是缺陷还是只看之前和只看之后。

6.bert使用的方式是把一些输入的token盖住:

基于transformer
而且产生注意力矩阵的时候没有限制。
这时在进行预测的时候就是看了一整个句子进行预测,这样的效果会显然好于只看之前和只看之后,或者两个的结合。
李宏毅nlp学习笔记05:BERT

这种预测方法与CBOW之间的差距,除了model复杂度,还有:CBOW相当于有一个固定的窗口,向前看多少个,向后看多少个,而bert是取决于你输入句子的长度。

李宏毅nlp学习笔记05:BERT

7.masked的方法:

一种是遮盖整个词。
一种是遮盖整个短语,或者命名实体(ERNIE)
李宏毅nlp学习笔记05:BERT

8.Spanbert 的遮盖方法:

遮盖一定数量的连续的token,到底遮盖多少个呢,概率如下图所示。给出概率,随机盖住多少个。
李宏毅nlp学习笔记05:BERT
SBO,根据w3,w8预测给出下标的一个词,如给出2,那么就是预测w3+2=w5,预测w5这个单词是什么。
李宏毅nlp学习笔记05:BERT

9.XLNET:

language model的观点来看,把一个词随机打乱来预测,如用深度来预测学,用深来预测学。
李宏毅nlp学习笔记05:BERT
从bert的观点来看,不打乱,给出深度习来预测, 给出度习来预测,给出深来预测。
李宏毅nlp学习笔记05:BERT

10.

李宏毅nlp学习笔记05:BERT

11.BERT 不善言辞。

具体是指在generate的任务中:
我们暂时认为产生一个文章,产生一个句子的方法应该是从左往右,而bert的训练方式不是按照文本从左往右的方式生成文本,而是根据上下文,因此根据现在产生一个句子的方法,根据上文写下下一个字,两者是不同的,
虽然可以以如下图右侧的方式生成下一个,但是因为与训练的方式不同,因此效果不太理想,
因此在这一方面的应用,我们会说bert是不善言词的。
李宏毅nlp学习笔记05:BERT

12.训练seq2seq的训练:

其中一种训练是对i编码的内容进行解码,解码的结果基本是一样的,说明解码器的效果很好。
但是需要对输入做一定的破坏,一定的改变。
李宏毅nlp学习笔记05:BERT
破坏的方式一般有mass和bart
mass:把一些token直接masked掉,
bart:直接删除掉
打乱把某些放在尾部的东西放到开头。
加入masked,随机插入(原来这个位置没有),一次用一个masked盖住两个。


李宏毅nlp学习笔记05:BERT
李宏毅nlp学习笔记05:BERT

13.Unilm

李宏毅nlp学习笔记05:BERT
李宏毅nlp学习笔记05:BERT

14.ELECTRA:

在输入的token里面,知道那些是被替换掉的,
李宏毅nlp学习笔记05:BERT
怎么替换原来句子中的词呢?使用的是small bert。

15.Sentence Embedding

用一个向量来表示整个句子。
李宏毅nlp学习笔记05:BERT

skip thought 两个不同的句子,他们下一句可以接的句子都很像,那么这两个句子的向量应该很相似。
quich thought:如果两个句子是相邻的,那么这两个句子的向量应该是越相似越好。
李宏毅nlp学习笔记05:BERT

16.NSP,SOP,

nsp是输入两个句子,预测是不是相邻的两个句子。
sop是交换两个句子的顺序之后,则输出是no。
李宏毅nlp学习笔记05:BERT