Transformer架构是算法岗必考真题,这道题在面试中几乎100%出现。不管是社招还是校招,不管是CV还是NLP方向,Transformer相关的问题几乎是标配。今天我们把这块内容彻底吃透,从整体架构到核心机制层层拆解。


【真题1】Transformer的Attention机制是怎么工作的?

请解释一下Transformer的Attention机制。

考查能力:对核心计算流程的理解深度,能否把抽象机制具象化表述。

参考解析:

Attention的本质是让模型学会"关注哪里"。给定一个输入序列,模型需要知道每个位置应该重点关注序列中的哪些部分——这就是相关性的计算过程。

整个计算流程可以拆成四个步骤:

步骤一:Q、K、V矩阵映射

输入序列经过三组线性变换,分别得到Query(查询)、Key(键)、Value(值)三个矩阵。可以理解为:Query是我要查什么,Key是索引标签,Value是实际内容。这个设计借鉴了信息检索的思想。

步骤二:点积计算相似度

用Q和K做点积,得到注意力分数矩阵。点积的几何意义是向量夹角的余弦值(归一化后),能反映两个向量的相似程度。为什么用点积而不是其他相似度度量?因为计算效率高,且有明确的几何解释。

公式里有个除以√d_k的操作,这个缩放很关键。当维度较高时,点积的绝对值会变大,softmax的梯度会趋近于0,导致训练困难。缩放后能让梯度保持在合理范围。

步骤三:Softmax转化为权重

相似度分数经过Softmax归一化,变成概率分布。每行的权重和为1,表示当前位置对各处的关注程度。Softmax的平滑性也保证了可微分,方便端到端训练。

步骤四:加权求和输出

用权重对Value进行加权求和,得到最终输出。这一步完成了信息的聚合:每个位置的输出都融合了整个序列的信息,但融合程度由注意力权重决定。

理解这四个步骤后,你会发现Attention的优雅之处:用矩阵运算一次性完成所有位置的相关性计算,并行化效率远超RNN的序列计算。


【真题2】Self-Attention和Cross-Attention有什么区别?

Transformer中的Self-Attention和Cross-Attention分别是什么?有什么本质区别?

考查能力:对模型架构的细节理解,能否区分不同模块的作用场景。

参考解析:

两者的核心区别在于Query的来源不同。

Self-Attention(自注意力)

Query、Key、Value都来自同一个序列。可以理解为序列"自己看自己"——每个位置都在计算它与序列中其他位置的相关性。

Self-Attention的作用是捕捉序列内部的长距离依赖关系。比如"他刚买的苹果很甜,他很开心",第二个"他"指代谁?Self-Attention能让模型建立这种指代关系的连接。

在Transformer中,编码器的每一层都用Self-Attention,因为编码器需要理解输入序列的内部结构。

Cross-Attention(交叉注意力)

Query来自一个序列,Key和Value来自另一个序列。这是"跨序列"的注意力机制。

典型应用场景是解码器在生成输出时,需要关注编码器的输出。Query来自解码器(当前要生成什么),Key和Value来自编码器(源序列有什么信息)。这样解码器就能根据当前生成状态,动态地从源序列中提取相关信息。

Cross-Attention在机器翻译、文本摘要等Seq2Seq任务中至关重要,它建立了源端和目标端的信息桥梁。

用一个比喻:Self-Attention是"读书时回顾前文",Cross-Attention是"翻译时看原文"。


【真题3】Transformer的FFN层为什么要先升维再降维?

Transformer中的Feed-Forward Network先把维度从d升到4d,再从4d降到d,这样设计的原因是什么?

考查能力:对模型设计思想的深层理解,能否解释架构选择的合理性。

参考解析:

FFN层的设计看起来有些反直觉:输入是d维,先投影到4d维的高维空间,再投影回d维。为什么要这么做?有两个关键原因。

原因一:提升特征表达能力

高维空间能容纳更丰富的特征组合。类比一下,二维平面上的两条线可能无法分离,但在三维空间中加入一个维度就可能线性可分。同样道理,把特征映射到更高维的空间,相当于给了模型更多的"自由度"来学习复杂的特征表示。

这里有个非线性激活函数(通常是GELU或ReLU),它是升维发挥作用的关键。如果没有非线性,两个线性变换等价于一个线性变换,升维就失去了意义。非线性激活打破了线性变换的叠加性质,让模型能拟合更复杂的函数。

原因二:增加非线性变换能力

Transformer的Attention层本质上是线性运算(加权求和是线性的),虽然Softmax引入了非线性,但整体特征变换能力有限。FFN层通过升维-激活-降维的结构,提供了更强的非线性变换能力。

可以理解为:Attention负责"信息的定位",FFN负责"信息的加工"。两者配合,一个找到关键信息,一个进行深度处理。

为什么还要降回来?

降维回到原始维度有两个目的:一是保持输入输出的维度一致性,方便残差连接和层堆叠;二是信息压缩,让模型学会提取最重要的特征,滤除冗余信息。

实际上,升维再降维的操作在神经网络中很常见,比如瓶颈层设计、自编码器的编码-解码结构,背后都有类似的思想。


【真题4】向量化(Vectorization)和词嵌入(Word Embedding)有什么本质区别?

请解释向量化和词嵌入的核心差异。

考查能力:对文本表示方法演进的理解,能否区分形式转换和语义编码的本质差异。

参考解析:

这个问题看似基础,但能区分出候选人是否真正理解"表示学习"的意义。

向量化:符号的数字化编码

向量化的核心目标是让计算机"看见"文字。最典型的是One-Hot编码:假设词表大小为V,每个词用一个V维向量表示,只有对应位置是1,其余都是0。

One-Hot的问题很明显:维度高(词表多大维度就多大)、极度稀疏、无法表达词与词之间的关系。"苹果"和"水果"的One-Hot向量,计算余弦相似度永远等于0,没有任何语义关联。

但向量化完成了最基础的工作:把离散符号变成计算机能处理的数字形式。

词嵌入:语义的稠密表示

词嵌入在向量化基础上向前迈了一大步——让计算机"理解"语言。

通过模型学习,每个词被映射到一个低维稠密向量空间(比如300维)。在这个空间里,语义相近的词距离更近。"苹果"和"水果"的词向量会有较高的余弦相似度,"苹果"和"汽车"则距离较远。

更重要的是,词嵌入能捕捉更复杂的语义关系。经典的例子:king - man + woman ≈ queen。这种线性关系说明词向量空间确实编码了语义信息。

词嵌入是怎么学到的?无论是Word2Vec的预测训练、GloVe的共现矩阵分解,还是Transformer中的动态嵌入,核心思想都是:上下文相似的词,语义也相似。

本质差异总结

向量化解决的是"表示"问题——把符号变成数字。词嵌入解决的是"理解"问题——让数字携带语义。

两者不是替代关系,而是递进关系:向量化是基础,词嵌入是升华。没有向量化,词嵌入无从谈起;只有向量化,模型永远停留在符号层面。


延伸练习题

【思考题】Transformer为什么用Multi-Head Attention而不是单头注意力?多头的"多头"是什么含义?

提示:可以从表示子空间、并行计算、特征多样性等角度思考。下期我们继续深入Transformer的其他高频考点。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐