transformer 细节理解

  1. d_model 是什么
    d_model 是one_hot 向量经过 word embedding 之后的词向量维度。

  2. batch normalization 和 layer normalization 的区别
    batch normalization 是在batch维度,对输入的多个样本进行归一化;layer normalization 是在输入向量的维度,对样本自身的所有 features 进行归一化。

  3. 为什么要 padding
    因为每个 batch 的输入序列的长度不一样,这样子网络无法进行处理,所以固定一个长度max_seq_len,然后对小于这个长度的向量进行 padding, 填充0。
    具体的做法是,把这些位置的值加上一个非常大的负数(负无穷),这样的话,经过 softmax,这些位置的概率就会接近0!

  4. Sequence mask 的作用
    因为transformer在decoder端需要encoder的attention,但是又不能看到未来的消息,或者说,解码输出应该只能依赖于 t 时刻之前的输出。Sequence mask 用来将之后的输入信息进行隐藏。
    具体做法为,产生一个上三角矩阵,上三角的值全为 1,下三角的值全为0,对角线是 1,因为当前时刻的输出和当前时刻也有关。

  5. Positional Embedding 的作用
    用来对输入的序列继续位置编码,使得transformer 可以提取序列顺序的信息,具体的哪种方法方法其实有待研究,论文中提到的并不是最优。得到的 Positional Embedding 向量是直接相加到 Word embedding 中的。

  6. self attention 和 encoder-decoder attention
    字面意思理解,self attention 就是自己的query和自己的key-value,encoder-decoder attention 就是自己的query和别人的key-value,所以在transformer中,就是指encoder-decoder 之间的 attention。

  7. scaled dot-product attention?
    这里包含三点,

  • 首先是 attention,那么就需要Q、K、V矩阵;
  • 然后是 scaled,也就是对 Q K T QK^T QKT 的 scores 进行scale,除以 d k \sqrt{d_k} dk ,表示 K 的维度,论文中默认是64,不过如果不考虑 multi-head 机制的话,那就是64*8=512,加上这个缩放因子的原因是:对于 d k d_k dk 很大的时候,点积得到的结果维度很大,使得结果处于softmax函数梯度很小的区域;
  • 最后是dot-product,说明是乘性的attention(attention 分很多种,常见的有加性和乘性),而不是把 Q 、 K Q、K QK 进行拼接。

用公式总的来描述就是:
Attention ⁡ ( Q , K , V ) = softmax ⁡ ( Q K T d k ) V \operatorname{Attention}(Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d}_{k}}\right) V Attention(Q,K,V)=softmax(d kQKT)V

  1. 没有multi-head 机制下的 Q 、 K 、 V Q、K、V QKV 的维度?
    首先我们使用了 batch norm,那么第一个维度肯定就是 batch 的大小 B B B

  2. residual connection 的作用
    增加了一项 x,那么该层网络对 x 求偏导的时候,多了一个常数项1。所以在反向传播过程中,梯度连乘,也不会造成梯度消失!。

猜你喜欢

转载自blog.csdn.net/weixin_43335465/article/details/121255485
今日推荐