NLP从入门到放弃的transformer 的笔记总结

NLP从入门到放弃的transformer 的笔记总结

目录

NLP从入门到放弃的transformer 的笔记总结

1、位置编码

2、多头注意力机制

3、残差和layerNorm

4、前馈神经网络

5、TRM面试讲解

encoders包括输入部分、多头注意力机制、残差和LN、前馈神经网络

1)输入部分包括Embedding和位置编码

(1)embedding我的其他文章讲过

(2)位置编码:公式

 2)注意力机制

(1)公式:QKV矩阵

(2)transformer中的注意力

(3)多头注意力 transformer中是8个头

 3)残差和LayerNorm

4)前馈神经网络

必看:整个流程训练和测试是有什么不同?​​​​​​​

Decoder

 为什么 Decoder 需要做 Mask


机器翻译上

我爱你作为输入,经过transformer模型,输出l love you

 左半部分是encoders(里面有N个小encoder)  右半部分是decoders (里面有N个小encoder)

输入:我爱你 经过encoders 将输出的结果作为decoders输入  ,经过decoders得到输出l love you

1、位置编码

2、多头注意力机制

3、残差和layerNorm

4、前馈神经网络

5、TRM面试讲解

encoders包括输入部分、多头注意力机制、残差和LN、前馈神经网络

1)输入部分包括Embedding和位置编码

 Embedding:随机初始化或者word2vec

对于【爱】->embedding->512维的向量【0.1,0.1,0.2,.....0.02】

对于【爱】->位置编码->512维的向量【sin,cos,sin.....cos】

两者相加得到新的512维的向量

(1)embedding我的其他文章讲过

(2)位置编码:公式

 2)注意力机制

(1)公式:QKV矩阵

Attention(Q,K,V)=softmax  (\frac{QK^T}{\sqrt{d_{K}}})V

Q:查询的部分(例如:爱)

K:被查询的部分(K1,K2,K3,K4)(例如:我不爱你)

V:表示K对应的权重

QK^{T}点乘表示Q、K的相似度 。将Q和K1,K2,K3,K4点乘就分别表示Q和K1,K2,K3,K4的相似度 ,哪个结果大,哪个相似度高,哪个就越关注(例如点乘结果:0.1,0.1,0.7,0.1)

(\frac{QK^T}{\sqrt{d_{K}}})V 单纯相乘值很大,当进入softmax后,会趋向两端,不容易做梯度下降

所以要除法运算,选择除以根号d,为了控制方差为一。再将相似度点乘V权重。

(2)transformer中的注意力

                                   经过                   得到

input :我   爱   <embedding>       词向量:x1,x2

q1=x1*w^Q    q2=x2*w^Q

k1=x1*W^{K}   k2=x2*W^{K}

v1=x1*W^{V}    v2=x2*W^{V}

W权重只有这三个且已知 

(3)多头注意力 transformer中是8个头

8个头用8个w^Q W^{K}W^{V}

 3)残差和LayerNorm

(1)残差 (下图 右侧):避免梯度消失

 (2)LN

BN 对不同样本的同一特征维度处理

优点:可以解决内部协变量偏移

缓解了梯度饱和问题(如果使用sigmoid激活函数的话),加快收敛

缺点:batch_size比较小的时候, 小样本去模拟全部效果差

rnn中效果差,rnn是动态的,有时不能求样本中的均值方差

 LN对一个样本的所i有维度做处理

 

 左侧是BN 右侧是LN

4)前馈神经网络

两个全连接层

必看:整个流程训练和测试是有什么不同?

 

 ​​​​​​​

 

 

Decoder

 为什么 Decoder 需要做 Mask

  • 训练阶段:我们知道 “je suis etudiant” 的翻译结果为 “I am a student”,我们把 “I am a student” 的 Embedding 输入到 Decoders 里面,翻译第一个词 “I” 时

    • 如果对 “I am a student” attention 计算不做 mask,“am,a,student” 对 “I” 的翻译将会有一定的贡献
    • 如果对 “I am a student” attention 计算做 mask,“am,a,student” 对 “I” 的翻译将没有贡献
  • 测试阶段:我们不知道 “我爱中国” 的翻译结果为 “I love China”,我们只能随机初始化一个 Embedding 输入到 Decoders 里面,翻译第一个词 “I” 时:

    • 无论是否做 mask,“love,China” 对 “I” 的翻译都不会产生贡献
    • 但是翻译了第一个词 “I” 后,随机初始化的 Embedding 有了 “I” 的 Embedding,也就是说在翻译第二词 “love” 的时候,“I” 的 Embedding 将有一定的贡献,但是 “China” 对 “love” 的翻译毫无贡献,随之翻译的进行,已经翻译的结果将会对下一个要翻译的词都会有一定的贡献,这就和做了 mask 的训练阶段做到了一种匹配

总结下就是:Decoder 做 Mask,是为了让训练阶段和测试阶段行为一致,不会出现间隙,避免过拟合。

假设训练模型的某一个阶段,我们来结合 Transformer 的完整框架描述下这个动态的流程图:

  1. 输入 “je suis etudiant” 到 Encoders,然后得到一个 KeKe、VeVe 矩阵;
  2. 输入 “I am a student” 到 Decoders ,首先通过 Masked Multi-head Attention 层得到 “I am a student” 的 attention 值 QdQd,然后用 attention 值 QdQd 和 Encoders 的输出 KeKe、VeVe 矩阵进行 attention 计算,得到第 1 个输出 “I”;
  3. 输入 “I am a student” 到 Decoders ,首先通过 Masked Multi-head Attention 层得到 “I am a student” 的 attention 值 QdQd,然后用 attention 值 QdQd 和 Encoders 的输出 KeKe、VeVe 矩阵进行 attention 计算,得到第 2 个输出 “am”;
  4. ……
  5. 参考预训练语言模型的前世今生 - 从Word Embedding到BERT - 二十三岁的有德

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值