Transformer中的核心问题 知识点汇总

Transformer架构

 transformer整体架构

1. Transformer 参数配置

Transformer EncoderDecoder使用6注意力模块所有网络输出维度均为512多头注意力部分使用8注意力头

2. 归一化的方式

归一化方式LayerNorm因为当时18还没有其他更好归一化方式LayerNorm同一个样本特征进行标准化从而保证模型训练不同网络输入输出分布稳定,从而加速训练。

3. 注意力得分计算为什么

因为导致梯度消失问题

  1. 两个分布为(均值=0方差=1向量内积结果分布为(均值=0,方差=d),其中d向量维度这就导致注意力分数可能出现一些非常这种softmax占据主导地位
  2. softmax计算公式

梯度计算公式

这里可以看出一旦softmax处理的向量的某一项很大那么softmax结果向量每一个输入x梯度都会趋近0因为如果softmax(x_i) -> 1那么其他softmax(x_j) 趋近0梯度公式里面无论哪一种情况都会导致梯度计算趋近于0最终引起梯度消失导致训练困难

4. 什么长程依赖问题?

长程依赖问题输入序列很长模型难以记住序列早期关键信息导致输出模型忘记这些关键内容

RNNLSTM因为上下文压缩一个两个固定大小的向量从而难以表示上下文所有关键信息导致长程依赖问题

5. Self-AttentionDropout作用

Dropout用于增强模型泛化能力防止模型过拟合

具体来说Dropout随机目前隐藏层(即神经元的输出)一定概率0丢弃

Dropout一般运用注意力得分矩阵FeedForward输出残差连接之前

通过Dropout可以防止模型过度关注某些节点输出

6. 多头注意力最后一层线性作用是什么

由于多头注意力里面每个value独立计算计算过程彼此之间并没有任何交互没有任何信息传递所以通过一个线性不同注意力输出结果相连从而彼此之间信息交互

7. Position Encoding位置编码专题

1位置编码目的设计要求

由于self-attention机制利用全局token信息tokentoken先后顺序丢失所以需要一种方式描述token之间相对位置于是transformer位置编码方式位置编码函数设计需要保证以下几点:

  1. 模型能够利用位置编码的信息间接捕获到token之间的相对位置或绝对位置
  2. 不同位置的token的位置编码不能相同
  3. 位置编码函数不能是隐函数

2位置编码为什么采用三角函数

因为位置编码嵌入后面注意力计算不同token之间会有乘积运算所以这里位置编码不同token之间会有乘积运算三角函数积化和差公式可以很好建模这种内积位置关系

3既然一个cossin已经能够表达积化和差直接位置i交替使用cos i, sin i,cos i,sin i编码不就为什么设计不同频率系数

因为如果只有一种频率模型其实无法解构真正相对位置关系因为模型只能拿到内积计算结果假定一个v这个v实际等于cos(a-b+k*T),其中T为三角函数的周期,由于三角函数周期性这里没办法定位真正a-b那个所以通过不同频率来求解到真正相对位置所以位置编码pos不变随着i三角函数周期变大不同i保证周期不一致,高维的周期更长,频率更低。

4什么10000分母底数

因为如果底数一个较小值这会导致最高周期不会太大试想当token数量变多的时候,一旦后面某个token的位置正好是前面某个token的位置编码中所有三角函数周期的公倍数的整数倍(因为计算机浮点精度的存在),这会导致不同位置的token具有完全相同的位置编码所以所有维度三角函数周期公倍数必须足够大选择10000最高维周期已经足够可以满足绝大多数场景需求

8. 为什么FeedForward

升维可以为模型提供更广阔的特征空间,使其能够捕捉到更丰富的信息,模型可以学习到更复杂的特征组合和交互,增强模型的表达能力

9. 多头交叉注意力多头自注意力区别是什么

多头交叉注意力中key和value来自于Encoder的输出,而query则来自于解码器中对生成的token的自注意力输出多头交叉注意力作用希望生成的token能够利用到先前输入中存在的一些关键信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值