仅用于个人学习,参考内容:【BERT】是师姐都说讲的清晰的BERT模型,确定不来看看吗!!_哔哩哔哩_bilibili
1.什么是BERT1


由多个transform层叠加起来的结构

著名传统方法word2vec,左图是用周围的词对中间词进行表征,右图是用中间词对周围词进行表征,也叫静态表征模型,缺点就是bank有三个意思,但是静态下只能表征一个意思,就适用性不好。还有可能就无法识别单身狗这种有隐含的多内容的词。

解决:把语义融合,BERT在representation的过程中又使用了transformer

下面是对transformer的创新 
decoder是单向的(预测,第一个输出lch又作为输入.....,蛇状的结构,后面的词没法和前面表征)
所以想改进到真正地双向表征,

但是BiLSTM好像也能做到啊?但是BiLSTM有反向依赖前向依赖,处理能力比transformer弱。

下面是BERT的encoder:

CLS表示它能融合前面一句话S和后面一句话T的语义,然后表示到S+T,放前面输出没问题,因为transforer没有前后项时序的要求。

已经知道了BERT完全使用了encoder,那么也对其做了写改变,传统是token embedding加上 positional embedding,但是BERT又加上了segment embedding,
且对position embedding进行了创新,以前用cos sin交替表示一个字的向量,现在使用的是参数训练得出的。“作者发现使用cos sin的方式的代价和自己训练的代价一样,而且作者也就是谷歌有钱来训练”。
然后BERT可以处理多个句子,使用它用segment embedding的方式,绿行里面AB交替出现,这是通过不同编码方式对两个句子进行分隔。

传统transformer中就是extreme和其他词都有关联,brightness和其他词也有关联......
MLM做的事情是,如果要表征 brightness的模型,那就把brightness遮盖起来,然后让extreme训练时不读到brightness是什么意思,而是跳过读其他词建立关系。
区别就是:传统中,extreme和其他词已经和brightness建立联系了,那如果要让你填空就直接抄,而BERT一开始就把brightness给mask起来了,程序就没有抄答案的地方了,而不得不联系其他词进行预测,就更好地实现了一个上下文语义标达的功能
但是发现被mask的地方embedding的效果很好,没有mask就不太好,就出现数据格式不匹配,但是也不可能全去mask

所以提出了加上随机替换
随机替换就是把hairy换成apple,所以模型不仅仅要预测mask是什么,还要判断这个apple是不是我真正要找的词

测试证明,此时综合效果最佳
2.预训练和微调

首先希望他能对单词进行单个处理(embedding),同时希望能在多句中进行应用,比如情感分类。对于token级别,就是mask然后训练embedding什么的,进行编码;句子级别,正如上图左半部分,融合上下语义,通过CLS向量输出,具体怎么实现呢?怎么融合?就是做了一个基础的训练,让模型判断句子S和句子T是否是相关联的,然后通过一些处理,就能得到融合上下文语义CLS向量,然后还可以加上一些特殊的层次、叠加语义等等,实现特定功能

第一个组有关联,就true,对CLS进行训练,第二组为false

比如Source是原模型,来自一个巨大图像库,可以对各种图像进行识别,而目标就是识别不同牌子的车,只要降维到车分类的任务上,这样降维打击,功能肯定会好
具体而言,上面那些功能层都copy

初始化不是我们随机的,而是原来的已知的强大的预训练模型的参数,这样模型的表现至少不会降低。

红框内就我们不需要改,只要对output layer进行训练,随机

微调就是黄球,离目标已经很近了,稍微改一下就跑过了,所以就叫微调


1万+

被折叠的 条评论
为什么被折叠?



