当前位置: 首页 > news >正文

语言模型理论基础-持续更新-思路清晰

1.预训练

相似的任务A、B,任务A已经用大数据完成了训练,得到模型A。

我们利用-特征提取模型的-“浅层参数通用”的特性,使用模型A的浅层参数,其他参数再通过任务B去训练(微调)。

2.统计语言模型

通过条件概率,解决“完型填空”问题和“预测句子出现概率”问题。

3.神经网络语言模型 -- 为了预测next

就是通过mlp,利用已有的词库将单词编码为onehot * Q矩阵(可学习),拟合一个预测下一个单词的模型。最后输出的softmax维度是词库的维度大小。

softmax(w2(tanh((w1x+b1)))+b2)

x是输入的词编码

缺点:onehot的维度==词库的大小,容易出现维度爆炸。我们希望去训练一个Q去控制词embedding大小。

得出:onehot * Q = V,V向量就能表示一个单词的词向量。且能调整大小、能计算词的余弦相似度。

但是:一个Q矩阵,所有的词都在用?

4.Word2Vec类模型 -- 为了得到词vec

· CBOW

给出一个词的上下文,预测这个词。--完形填空

· Skip-gram

给出词预测上下文。--没啥用

w2v是一种预训练模型,因为这个模型可以预训练好一个Q矩阵,供别的下游任务直接使用,无需重新训练。

而onehot不是预训练,是一一对应的表查询。

但是:词向量不能进行多义词表示。

5.ELMo--解决上述问题

注意双向双层

输入:很普通的w2v词向量E;

输出:融合上下文信息的新词向量T。对于一个同一词,T的编码也会不一样了,而且相关性应该是负的。

但是:lstm不能并行,长期依赖。

6.attention

理解:“Query,Key,Value的概念取自于信息检索系统,举个简单的搜索的例子来说。当你在某电商平台搜索某件商品(年轻女士冬季穿的红色薄款羽绒服)时,你在搜索引擎上输入的内容便是Query。 然后搜索引擎根据Query为你匹配Key(例如商品的种类,颜色,描述等)。 然后根据Query和Key的相似度得到匹配的内容(Value)。”

理解:Q,K,V是三个矩阵。 是 X 输入与 Wq,Wk,Wv 点积的结果。 最开始Wq,Wk,Wv 是随机生成的, 后面通过训练 Wq,Wk,Wv 会不断调整,通过loss 函数进行。 Wq,Wk,Wv 就是需要训练的参数。

理解:每个token都会发出一个Q去询问其他token,点乘他们的K,得到相对的重要性,为了消除较大的K对softmax的影响除以根号dk,再做softmax得到概率后,点乘V,得到具体需要注意多少

  !!从分布的角度解释。

7.self-attention

经典

8.67的区别

· 注意力机制没有规定QKV的来源

· 自注意力规定QKV必须是源于X,只是乘了不同的矩阵,在空间上做了不同的伸缩旋转。

9.self和rnn lstm的比较

rnn:

,x0的信息传的远了就消失了。

lstm:

,通过门,选择性记忆/增强前文的信息。

二者都不能并行,存在长序列依赖问题。

10.mask attention

生成模型是一个单词一个单词的生成,所以对已生成的单词想要做attention的话,attention map会像是下阶梯形矩阵。

11.多头自注意

就是将X分成8块,每个头有自己的QKV,同样得到一个Z,拼接后再经过一个线性变换得到原来大小的Z。

12.位置编码

· 由于attention可以并行计算,导致它不能像rnn一样完全顺序进行计算。

· 而且如果没有位置编码,即使话的顺序是乱的,也不影响attention的计算。所以应该有位置编码来表示语序。加到原来的词向量中。

计算方式:

 对于每个pos的编码,偶数位置用sin奇数位置用cos。2i的目的仅是为了转换为对应的三角函数。

再根据三角函数和差化积:

得到:PE = sin(将posi分为两数之和) = 这两个数的PE的线性组合。

理解为:较大posi的编码中蕴含了较小posi的PE信息。即,相当于递归的意思,后面的pos必须依赖之前的值。

13.transformer框架

seq2seq模型

encode:将输入变成词向量

decode:输入词向量,生成下步预测

· Encoder层

N层encoder,代表输入经过了N个encoder逐步增强词向量表示。

每层中,初始化X的embedding--position encode--self att--Z score--laynorm(X+Z)--Z1--FFN做非线性变换--laynorm(Z1+Z2)

· Decoder层

将encode的输出作为KV,那decode层的输入是啥?

训练阶段的输入是生成的target目标值,然后用它经过mask self att求Q,再和之前的KV做交叉att。

预测阶段的输入是之前生成过的所有值,根据这些内容去预测下一个可能的词。

14.为什么decoder做mask?

为了解决训练阶段和测试阶段的输入不匹配。即:训练阶段decoder输入了完整的target序列, 而测试阶段只有已生成的序列。所以,使用了mask后,可以让训练阶段也看不到序列后文。

15.为什么decoder产生Q,encoder产生KV?

一句话来讲:输出的内容是要参考你输入序列的上下文。

16.关于最初始化的词向量,无所谓是onehot还是别的,最后都会得到更新。但是越高效的初始化能对应更少的更新次数。模型会把一个词向量对应到一个空间位置。 

相关文章:

  • 无人机螺旋桨平衡标准
  • LangChain开发(二)LangChain提示词模板Template使用
  • 2.7 进度控制习题-2
  • 【JS】反转字符串中的单词
  • 计算机网络基础:WiFi 与蓝牙的原理与应用
  • JavaScript中的继承有哪些方式?各有什么优缺点
  • 强化学习与神经网络结合(以 DQN 展开)
  • STL之空间配置器
  • 【深度学习与实战】2.1、线性回归模型与梯度下降法先导
  • 数据结构:利用递推式计算next表
  • PostgreSQL详解
  • SiLU与GeLU激活函数:现代大模型的选择
  • WindowsPowerShell、CMD Linux Bash对比分析
  • 工作中遇到的spark SQL小问题:包含某个或某些字符的条件
  • uniapp + Axios + 小程序封装网络请求
  • 力扣HOT100之子串:76. 最小覆盖子串
  • mock.js模拟数据
  • 在linux部署网站
  • Rust vs. Go: 在仅使用标准库时的性能测试
  • 数据库基础知识点(系列七)
  • “鱼米之乡”江苏兴化的产业哲学:以融合与创新重构价值链条
  • 韩国总统选举民调:共同民主党前党首李在明支持率超46%
  • 巴菲特宣布将于年底退休,“接班人”什么来头?
  • 乌方公布矿产协议详情:未提债务义务,包含美再援助条款
  • 伊朗外长:伊美第四轮间接谈判将于5月3日举行
  • 讲座|为什么要不断地翻译叶芝的诗?它们为什么值得细读?