我们说的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部门,先把 机器学习 表示成一个序列,然后预测出下一个词
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 + **】