预训练语言模型发展史

预训练

相似的任务A和任务B,任务A已经通过大数据预训练好A模型,A模型就可以经过调整(微调、冻结)适用于小数据量的任务B

如果AB任务不相似,就通过BERT来解决(后面再提)

语言模型

想计算一句话的下一个词出现的概率,需要涉及这句话所有词

统计语言模型(n元语言模型

如果使用n元语言模型,只考虑下一个词的前n个词即可,可以大大减少计算量
如果训练数据里没有想要预测的结果,可以通过平滑策略生成一个概率极小的值,而不是0(具体请搜索平滑策略的内容

词向量

onehot编码获取词向量

  • 最开始是通过onehot编码得到词向量,但是onehot编码占用的空间太大了

NNLM神经网络语言模型获取词向量

  • 后面NNLM模型原本是用来预测下一个词的,但是可以训练出一个Q矩阵得到词向量,比onehot编码占用空间更小,十个向量可以表示一百个词。

word2vec模型获取词向量

  • 再然后专门发明了word2vec(CBOW、skip-gram)得到Q矩阵做词向量。但是word2vec没法解决多义词的问题,比如吃的苹果和苹果手机的词向量一样,于是发明ELMO解决多义词问题

ELMO模型获取词向量

发明ELMO解决多义词问题——不仅训练Q矩阵,还要把词的上下文信息融入Q矩阵中

下游任务改造

给出一句话,先使用独热编码,再使用Word2Vec 预训练好的Q矩阵直接得到词向量,然后进行接下来的任务

  1. 冻结:可以不改变Q矩阵
  2. 微调:随着任务的改变,改变Q矩阵

Attention(QKV)

计算查询对象Q(正在看图的我) 和被查询对象V(被看的图)的相似度,相似度越近,说明V对于Q更重要
通过点乘计算Q和K(K是从哪来的?原来的V?)里的每一事物(k1、k2、kn) 的相似度,然后softmax计算出概率,然后乘V,得到新的V’,里面包含了新的信息(哪些更重要、哪些不重要)

Self-Attention

QK相乘求相似度,

Transformer

GPT

BERT

参考

已读09 Transformer 之什么是注意力机制(Attention)_哔哩哔哩_bilibili