Transformer相关八股

1.transformer为什么使用多头注意力机制

多头可以学习到不同维度的特征和信息。矩阵的整体size不变,只改变了每个head对应的维度大小,并且计算量和单个head差不多

为什么可以学习到不同维度的信息呢?

多头注意力机制的组成是若干个self attention,由于self attention通过产生QKV矩阵来学习数据特征,那每一个self attention最终会产生一个维度上的输出特征,所以当使用多头注意力机制的时候,模型就可以学习到多维度的特征信息,这使得模型可以从多个维度更好的理解数据。同时多头注意力机制还是并行计算的,这也符合现在硬件架构,提升计算效率。

2.为什么在进行多头注意力的时候需要对每个head进行降维?

不增加时间复杂度的情况下,同时,借鉴CNN多核的思想,在更低的维度,在多个独立的特征空间更容易学习到更丰富的特征信息,并且减少计算量。

Transformer的多头注意力看上去是借鉴了CNN中同一卷积层内使用多个卷积核的思想,原文中使用了 8 个“scaled dot-product attention”,在同一“multi-head attention”层中,输入均为“QKV”,同时进行注意力的计算,彼此之间参数不共享,最终将结果拼接起来,这样可以允许模型在不同的表示子空间里学习到相关的信息。简而言之,就是希望每个注意力头,只关注最终输出序列中一个子空间,互相独立。其核心思想在于,抽取到更加丰富的特征信息

3.transformer为什么Q和K使用不同的权重矩阵生成,为什么不能使用同一个值进行自身的点乘?

使用Q/K/V不相同可以保证在不同空间进行投影,增强了表达能力,提高了泛化能力。
同时,由softmax函数的性质决定,实质做的是一个soft版本的arg max操作,得到的向量接近一个one-hot向量(接近程度根据这组数的数量级有所不同)。Q和K相乘是为了得到一个attention score矩阵,然后用来对V进行提纯。Q和K使用不同的权重W_q和W_k进行相乘,可以理解为在不同空间上的投影,在不同空间上的投影不相同,增加了表达能力,获得不同的attenton score矩阵,这样得到的attention_score矩阵泛化能力更高,提高了泛化能力。如果令Q=K,那么得到的模型大概率会得到一个类似单位矩阵的attention矩阵,这样self-attention就退化成一个point-wise线性映射。这样违反了设计的初衷。

4.self attention中为什么是点乘而不是加法?二者复杂度上有什么区别?

为了计算更快。矩阵加法在加法这一块的计算量确实简单,但是作为一个整体计算attention的时候相当于一个隐层,整体计算量和点积相似。在效果上来说,从实验分析,两者的效果和dk相关,dk越大,加法的效果越显著。点乘复杂度为O(d*n^2)其中d是embedding维度,n是序列长度。

5.为什么在进行softmax之前需要对attention进行scaled(为什么除以dk的平方根)

这取决于softmax函数的特性,如果softmax内计算的数数量级太大,会输出近似one-hot编码的形式,导致梯度消失的问题,所以需要scale
那么至于为什么需要用维度开根号,假设向量q,k满足各分量独立同分布,均值为0,方差为1,那么qk点积均值为0,方差为dk,从统计学计算,若果让qk点积的方差控制在1,需要将其除以dk的平方根,是的softmax更加平滑

6.在计算attention score的时候如何对padding做mask操作?

padding位置置为负无穷(一般来说-1000就可以),再对attention score进行相加。

7.简单介绍一下Transformer的位置编码?有什么意义和优缺点?

attention是与位置无关的,无论句子怎么样,通过attention计算都是一样,这不符合我们的要求,所以要想办法表达每个token的位置信息,所以transformer来通过位置编码来表示token在句子中的信息。

8.为什么transformer块使用LayerNorm而不是BatchNorm?LayerNorm 在Transformer的位置是哪里?

layernorm更适合句子不一样长的NLP序列,对每个样本进行归一化,这样更好。

LayerNorm在多头注意力层和激活函数层。

Layer Normalization(LN) 层标准化 (为什么Transformer用LN)(手写手动实现LN)-CSDN博客

那对于处理CV data的VIT,可不可以用BN呢?

Leveraging Batch Normalization for Vision Transformers里面就说了:其实可以的,但是直接把VIT中的LN替换成BN,容易训练不收敛,原因是FFN没有被Normalized,所以还要在FFN block里面的两层之间插一个BN层。(可以加速20%VIT的训练)

9.简单描述一下Transformer中的前馈神经网络?使用了什么激活函数?相关优缺点?

前馈网络(FFN)也叫作 多层感知器(MLP:multi-layer perceptron)

ReLU

优点:

1.计算效率高:ReLU函数非常简单,无需复杂计算,可以显著提高神经网络的训练速度。
2.缓解梯度消失问题:在神经网络中,反向传播算法用于计算梯度并更新权重。传统的 Sigmoid 或 Tanh 激活函数在输入值较大或较小时,梯度会接近于0,导致梯度消失问题。而 ReLU 函数在输入为正数时,梯度始终为1,有助于缓解梯度消失问题。
3.稀疏性:ReLU 函数在输入为负数时输出为0,这使得网络中的许多神经元在训练过程中处于“关闭”状态,从而提高了神经网络的稀疏性。稀疏性有助于提取数据中的关键特征,并降低过拟合的风险

10.Encoder端和Decoder端是如何进行交互的?(在这里可以问一下关于seq2seq的attention知识)

Cross Self-Attention,Decoder提供Q,Encoder提供K,V

11.Decoder阶段的多头自注意力和encoder的多头自注意力有什么区别?(为什么需要decoder自注意力需要进行 sequence mask)

让输入序列只看到过去的信息,不能让他看到未来的信息

12.Transformer的并行化提现在哪个地方?Decoder端可以做并行化吗?

Encoder侧:模块之间是串行的,一个模块计算的结果做为下一个模块的输入,互相之前有依赖关系。从每个模块的角度来说,注意力层和前馈神经层这两个子模块单独来看都是可以并行的,不同单词之间是没有依赖关系的。
Decode引入sequence mask就是为了并行化训练,Decoder推理过程没有并行,只能一个一个的解码,很类似于RNN,这个时刻的输入依赖于上一个时刻的输出。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Transformer是一种使用注意力机制的深度学习模型,可以并行训练以避免递归,从而加快训练速度。 在自然语言处理(NLP)中,Transformer使用了前馈神经网络(feed forward),而在计算机视觉(CV)中,这部分被替换为多层感知机(MLP),其本质上也是一种前馈神经网络。前馈神经网络的作用是添加非线性,增强模型的表达能力。 另外,Transformer还使用了残差连接,其目的是通过将输入和输出相加,使得模型能够更容易地学习到残差信息。这种连接方式有助于避免梯度消失和梯度爆炸问题,同时也提高了模型的训练效果。 与之相对的是,在计算机视觉中,常用的是多尺度的卷积核进行卷积操作,然后将卷积后的特征图进行拼接,以使每个通道具有不同的感受野。这样可以在不增加计算量的情况下,提高网络的宽度(每层的通道数)和深度。这种结构被称为Inverted Residual或Linear Bottleneck Inverted Residual。 综上所述,Transformer模型在深度学习中起到了重要的作用,它采用了注意力机制和前馈神经网络来处理输入数据,并使用残差连接来提高模型性能。同时,在计算机视觉中也可以应用多尺度卷积和特殊的连接方式来增强网络的表达能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [transformer八股文知识点整理](https://blog.csdn.net/weixin_41994778/article/details/129271275)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [深度学习CV八股文](https://blog.csdn.net/weixin_39994739/article/details/122864848)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值