type
status
date
slug
summary
tags
category
icon
password
Transformer架构
‣
常见面试题
1.1 transformer中multi-head attention中每一个head为什么要进行降维?
在Transformer的Multi-Head Attention中,对每个head进行降维是为了增加模型的表达能力和效率。
每个head是独立的注意力机制,它们可以学习不同类型的特征和关系。通过使用多个注意力头,Transformer可以并行地学习多种不同的特征表示,从而增强了模型的表示能力。
然而,在使用多个注意力头的同时,注意力机制的计算复杂度也会增加。原始的Scaled Dot-Product Attention的计算复杂度为O(d2)O(d2),其中d是输入向量的维度。如果使用h个注意力头,计算复杂度将增加到O(hd2)O(hd2)。这可能会导致Transformer在处理大规模输入时变得非常耗时。
为了缓解计算复杂度的问题,Transformer中在每个head上进行降维。在每个注意力头中,输入向量通过线性变换被映射到一个较低维度的空间。这个降维过程使用两个矩阵:一个是查询(Q)和键(K)的降维矩阵WqWq和WkWk,另一个是值(V)的降维矩阵WvWv。
通过降低每个head的维度,Transformer可以在
保持较高的表达能力的同时,大大减少计算复杂度
。降维后的计算复杂度为(hd^2)其中d是降维后的维度。通常情况下,d会远小于原始维度d,这样就可以显著提高模型的计算效率
Attention机制
- 计算查询(Query):查询是当前时间步的输入,用于和序列中其他位置的信息进行比较。
- 计算键(Key)和值(Value):键表示序列中其他位置的信息,值是对应位置的表示。键和值用来和查询进行比较。
- 计算注意力权重:通过将查询和键进行内积运算,然后应用softmax函数,得到注意力权重。这些权重表示了在当前时间步,模型应该关注序列中其他位置的重要程度。
- 加权求和:根据注意力权重将值进行加权求和,得到当前时间步的输出。
一个比较有意思的举例说明qkv(claude)
Query:比如我想问图书管理员查询一本关于人工智能的书
key:表示每本书的tag
value:表示每本书的具体内容
那么Query*Key就代表了我想查询的书相似度分数,乘上value得到值。
在Transformer中,Self-Attention 被称为"Scaled Dot-Product Attention",其计算过程如下:
- 对于输入序列中的每个位置,通过计算其与所有其他位置之间的相似度得分(通常通过点积计算)。
- 对得分进行缩放处理,以防止梯度爆炸。
- 将得分用softmax函数转换为注意力权重,以便计算每个位置的加权和。
- 使用注意力权重对输入序列中的所有位置进行加权求和,得到每个位置的自注意输出。
参考:
常见面试问题
1.1
Loading...