Transformer学习笔记

1. 参考

李沐 动手学深度学习 PyTorch版
Transformer论文
李宏毅《机器学习》
Batch Norm详解之原理
李沐 Transformer论文逐段精读【论文精读】
Transformer、GPT、BERT,预训练语言模型的前世今生

2. 模型图

在这里插入图片描述

3.encoder部分

3.1 Positional Encoding

为了使模型利用序列的顺序,注入一些关于序列中标记的相对或绝对位置的信息。为此,我们在中的输入嵌入中添加“位置编码

3.2 Muti-Head Attention

首先先是用了Attention机制,key和value是等长的,具体的之前提到过,就不在多解释。

在这里插入图片描述
关于 d   k   \sqrt{ d~k~ } d k  的解释:
当dk不大时,除或者不除都没什么影响。对于dk的大值,点积的幅度变大,softmax后最大的将更靠近1,最小的将更靠近0,也就是两极化严重,这样算梯度时梯度变化会过小。

Muti-Head:
作者对此的解释是与其做单个的自注意力函数,不如将q,k,v都投影到低维h次,然后再做h次的注意力函数,将得到h个结果contact一起,为了恢复原样再次进行一次线性变化。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这样操作的原因是希望在h次投影机会中能够学到不同的取法能够适用于不同模式所需要的相似函数。

3.3 ADD–残差连接

这里加入了一个残差连接,论文原文中的公式为 LayerNorm(X + SubLayer(X))。至于残差连接的作用可以查阅下面文章

3.4 Norm标准化

Transformer里面用的是layerNorm而不是batchNorm,下面是batchNorm和layerNorm区别。假设只考虑二维输入情况下

  • batchNorm,将不同batch的同一特征进行均值为0方差为1标准化(也可以均值为x,方差为y,这是可学习的)

在这里插入图片描述

  • layerNorm则对应同一样本来进行变换
    在这里插入图片描述
    拓展到batch,seq,feature上后,batchNorm是对不同batch,不同的seq,同一feature进行Norm,蓝色部分
    而layerNorm是对不同seq,不同的feature,同一样本进行Norm(黄色)在这里插入图片描述
    而之所以用layerNorm而不是batchNorm,解释原因是
    每个样本seq长度不一定都是相同的,可能如下
    在这里插入图片描述
    而且如果突然遇到特别长的seq,则之前的全局的均值和方差就不太适用,反观layerNorm,他是对每个样本自己来计算均值和方差
    在这里插入图片描述

还有一种解释是layerNorm在梯度方面表现的比batchNorm较好,这里李沐老师没有细说。

3.5 单个Transformer Encoder流程图

在这里插入图片描述

4.decoder部分

4.1 mask Muti-Head Attention

mask主要是为了避免在t时间时看到t+1后的东西,比如输出预测的时候,我们是按照上一个输出来预测下一个输出,这个输出之后的东西在实际情况下是不可知的。而attention机制要求看到全局数据,于是这里加了mask,实际上是将那些不能见的数据换成一个非常大的负数,这些数在进入softmax指数运算时会趋向0。
在这里插入图片描述

4.2 Muti-Head Attention

decoder的 Attention不是self Attention了,是cross Attention,key和value来自编码器的输出,query来自decoder中的mask Muti-Head Attention的输出。
在这里插入图片描述

5 多个Transformer Encoder和多个Transformer Decoder连接方式

这里的连接方式有很多种,原论文用的是方式(a)
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值