算法岗常见面试题(八):Transformer
01 Transformer Encoder 有什么子层?(超参数一面)
Encoder由六个相同层构成,每层都有两个子层:多头自注意力层和全连接的前馈神经网络层(Linear+relu+dropout+Linear)。使用残差连接和层归一化连接两个子层。
02 写一下self-attention的公式(超参数一面)
03 Transformer的优缺点
优点:
- 可并行
- 独立于卷积和循环,完全依赖于attention处理全局依赖,解决长距离依赖问题
- 性能强
缺点:
- 长度固定
- 局部信息的获取不如RNN和CNN强:Transformer关注的全局关系,而RNN在计算过程中更关注局部,对距离更加敏感。
04 Encoder端和Decoder端是如何进行交互的?
Cross Self-attention,Decoder提供,Encoder提供。
05 Transformer中为什么需要线性变换?
分别是输入向量经过不同的线性变换矩阵计算得到。可以从正反两面分析线性变换的必要性:
线性变换的好处:在部分,线性变换矩阵将KQ投影到了不同的空间,增加了表达能力(这一原理可以同理SVM中的核函数-将向量映射到高维空间以解决非线性问题),这样计算得到的注意力矩阵的泛化能力更高。
不用线性变换的坏处:在部分,如果不做线性变换,即X=Q=K,则会导致注意力矩阵是对称的,即,这样的效果明显是差的,比如“我是一个女孩”这句话,女孩对修饰我的重要性应该要高于我修饰女孩的重要性。
06 Transformer attention的注意力矩阵的计算为什么用乘法而不是加法?
为了计算更快。
加法形式是先加、后tanh、再和V矩阵相乘,相当于一个完整的隐层。
在计算复杂度上,乘法和加法理论上的复杂度相似,但是在实践中,乘法可以利用高度优化的矩阵乘法代码(有成熟的加速实现)使得点乘速度更快,空间利用率更高。(论文P4有解释)
在较小的时候,加法和乘法形式效果相近。但是随着增大,加法开始显著优于乘法。作者认为,增大导致乘法性能不佳的原因,是极大的点乘值将整个softmax推向梯度平缓区,使得收敛困难。于是选择scale,除。
07 Transformer attention计算为什么要在softmax这一步之前除以
(7 封私信 / 80 条消息) transformer中的attention为什么scaled? - 知乎 (zhihu.com)
- 取决于Softmax的性质,如果softmax内计算的数过大或者过小,可能导致Softmax后的结果为0,导致梯度消失
- 为什么是。假设Q、K中元素的值分布在[0,1],softmax的计算中,分母涉及了一次对所有位置的求和,整体的分布就会扩大到[0,]。
08 Transformer attention计算注意力矩阵的时候如何对padding做mask操作的?
padding位置置为-1000,再对注意力矩阵进行相加。
09 Transformer的残差结构及意义
同resnet,解决梯度消失,防止过拟合
10 Transformer为什么使用LN而不是BN?
LN是针对每个样本序列进行归一化,没有样本间依赖,对一个序列的不同特征维度进行归一化。
CV使用BN是因为认为通道维度的信息对cv方面有重要意义,如果对通道维度也归一化会造成不同通道信息一定的损失。NLP认为句子长短不一,且各batch之间的信息没有什么关系,因此只考虑句子内信息的归一化。
11 Decoder阶段的多头自注意力和encoder的多头自注意力有什么区别?/ 为什么decoder自注意力需要进行sequence mask?
让输入序列只看到过去的信息,而看不到未来的信息。
12 Transformer的并行化体现在哪里,Decoder可以做并行化嘛?
Encoder的模块是串行的,但模块内的子模块多头注意力和前馈网络内部都是并行的,因为单词之间没有依赖关系。
Decode引入sequence mask就是为了并行化训练,推理过程不并行
13 Transformer计算量最大的部分是哪里(超参数二面、海信一面)
多头注意力部分计算量最大。
假设完成一次推理,(batch-size)=1, (seq-length,序列最大长度)=256, (hidden-size)=768, attention-head=12 经过一个Transformer的多头注意力block,所需要的矩阵乘法的数量:
总计:12 * (256 * 64 * 256 + 256 * 256 * 64)= 1亿次乘法
除了矩阵乘法的运算外,还有除和函数的运算:
- 除:计算量为=256*256
- 函数:计算量为
- 两个矩阵相乘的计算量:
假设矩阵A尺寸为(m,n),矩阵B尺寸为(n,k),则矩阵M和矩阵N相乘的计算量为m*n*k。
- 权重矩阵K,Q,V的尺寸:
不考虑多头注意力的情况下均为(s,h);多头注意力时,默认12个头,故单头的尺寸为(s,1/12h)。
14 Transformer、LSTM和单纯的前馈神经网络比,有哪些提升?
LSTM相比于单纯的前馈神经网络,首先具有理解文本的语序关系的能力(RNN)。除此之外,又解决了RNN在处理长序列时发生的梯度消失和梯度爆炸的问题。
Transformer进一步解决了RNN、LSTM等模型的长距离依赖问题,能够理解更长的上下文语义。可以并行化,所要的训练时间更短。
15 Transformer处理篇章级的长文本的变体
Transformer变体层出不穷,它们都长什么样? (qq.com)
16 有哪些处理超长文本的方法(超参数二面)
HIERARCHICAL
基于BERT的超长文本分类模型_valleria的博客-CSDN博客_长文本分类
- 基本思想:对数据进行有重叠的分割,这样分割之后的每句句子直接仍保留了一定的关联信息。
模型由两部分构成,第一部分是fine-tune后的BERT,第二部分是由LSTM+FC层组成的混合模型。即,BERT只用来提取出句子的表示,而真正在做分类的是LSTM+FC部分。
具体流程:首先将长句子分割为多个小句子,如长200,重叠长度为50.将分割后的数据集传入BERT,分别取每个句子的[CLS]表示句子的embedding,将来自相同长句子的embedding拼接,作为长句子的向量表示。最后,将长句子的向量表示传入LSTM+FC部分进行分类。
除此之外,第二部分还可以用Transformer。
由于都是从notion笔记里面复制过来的,所以可能存在公式缺失之类的问题,欢迎指出~
由于是个人笔记,可能有错误之处,欢迎指正~
#算法面经#