Bert原理 | Bert油管视频学习法

必须要懂的交叉熵:

https://cloud.tencent.com/developer/article/1539723

 

 

 

 

 

 

这部分其实就是 Transformer Encoder 部分 + BERT Embedding, 如果不熟悉 Transformer 的同学,恰好可以从此处来加深理解。

这部分源码阅读建议可先大致浏览一下整体, 有一个大致的框架,明白各个类之间的依赖关系,然后从细节到整体逐渐理解,即从上图看,从右往左读,效果会更好。

1. BERTEmbedding

分为三大部分:

  • TokenEmbedding : 对 token 的编码,继承于 nn.Embedding, 默认初始化为 :N(0,1)
  • SegmentEmbedding: 对句子信息编码,继承于 nn.Embedding, 默认初始化为 :N(0,1)
  • PositionalEmbedding: 对位置信息编码, 可参见论文,生成的是一个固定的向量表示,不参与训练

这里面需要注意的就是 PositionalEmbedding, 因为有些面试官会很抠细节,而我对这些我觉得对我没有啥帮助的东西,一般了解一下就放过了,细节没有抠清楚,事实证明,吃亏了。

2. Transformer

这里面的东西十分建议对照论文一起看,当然,如果很熟的话可以略过。 我在里面关键的地方都加上了注释,如果还是看不懂的话可以提 issue, 这里就不赘述了。

 

 

 

 

我们说的contextualized word embedding 就是取中间这个部分的向量出来,这里是上文的所有信息。

高烧退了

丞退了

这两个向量都是不同的 

 

elmo直接用两个参数相加更新, 全都要

h = a1*h1 + a2*h2

 

 

 

bert抽取出来的[mask 词]的embedding 一定要够准,要不然linear classifier本来就是一个很弱的分类器,他认不出词语的

BERT 其實就是 Transformer 中的 Encoder,只是有很多層

 

 

bert情感分类问题:(只在开头做一个输出)

 

 

bert序列标注问题

 

 

 

bert在NLI问题(句子匹配,问句匹配)

 

 

 

 

bert在信息抽取,阅读理解上面的应用

 

 

 

橙色和蓝色的vector和黄色的其实是一个模型出来的,但是为了表示不同的主题(问句和文档),因此才划分成三种。

最后用1(橙色和黄色)   2(黄色和蓝色)分别做一个人softmax的映射,找出1 2 对应的位置信息

 

 

 

GPT的意思就是三个主要参数,和前面的做一个交互(self-attention),然后两个交互项目之间做一个weighted sum ,最后预测下一个词

 

 

 

我们说的self-attention 其实外部看起来作用和biRNN 很像,都是一个sequence进出

同时输出的每个每个信息都是带有上下文信息的

 

 

 

注意QKV三个参数的不同表示

 

 

 

这里是self-attention的计算方式(简单来说就是用Q去match其他的K,就是用新的值去表示两者之间的距离)

为什么是这个值,是因为这个值类似余弦相似度的计算:

 

 

 

为了让a的值适合训练一点,做一个softmax的计算,得到a head^

 

 

 

z最后出来的序列是【b1,b2,b3,...bn】这里才是带有句子信息的新的表示

对于a head ,他就类似一个weighted sum --》 得到b

 

 

 

 再来一次:

【b1,b2,b3,...bn】以上的都是平行计算出来的(用矩阵)

 

 

 

计算过程(矩阵平行计算的过程)

 

 

 

 

 

 

总的流程如下

 

 

 

 

multi head 的做法,其实就是从开头那里开始就乘多一个矩阵,一个参数变两个,整体的参数量多两倍

 

 

 


 

bert的话只用到了encoder的这一层,注意区别

https://www.youtube.com/watch?v=ugWDIIOHtPA

(动图在37.10)很明显看出差别

机器学习--machine learning 

 

1/ encoder部门,先把 机器学习 表示成一个序列,然后预测出下一个词<BOS>.

2/ 然后再结合《 机器学习  + BOS》 预测出下一个词machine 

3/ 最后《 机器学习  + BOS + machine》 预测出下一个词learning

 

 

 


 

batch norm 是对一个batch 来做normalization

layer norm是对一个层来做,不考虑batch 数据分布(常和RNN一起来做)

下面这个add就是把self attention处理过的信息【b1b2...bn】+[a1,a2...an]

这个做法类似信息的highway

 

 

masked的部分是表示要预测的部分。参考动图应该是《 机器学习  + BOS》 >>>>>> 【machine  +   **

 

posted @ 2020-07-08 16:50  TFknight  阅读(362)  评论(0编辑  收藏  举报