面试题:Self-attention的公式及参数量?为什么用多头?为什么要除以根号d?
参考答案
Self-attention,也称为自注意力,是一种在自然语言处理和其他序列建模任务中广泛使用的机制。以下是self-attention的基本公式和相关的参数量分析:
1. Self-Attention的基本公式:
Self-attention的计算可以分为三个步骤:计算查询(Q)、键(K)和值(V),然后计算注意力权重,最后进行加权求和。
2. 参数量:
- 假设输入序列的长度为n,每个嵌入的维度为d。
- WQ, WK, WV都是d × d维的矩阵。
- 因此,每个权重矩阵有d^2个参数。
- 总共有三个权重矩阵,所以参数量为3 × d^2。
3. 为什么使用多头(Multi-Head)?
多头注意力机制是将输入分割成多个“头”,每个“头”都有自己的权重矩阵WQ, WK, WV,可以捕捉到输入序列的不同部分和不同方面的信息。这样做有以下几个好处:
- 捕捉不同关系: 不同的头可以学习到输入序列的不同关系和表示。
- 增加模型容量: 多头注意力相当于有多个独立的注意力机制,可以增加模型的表达能力。
- 并行计算: 多头注意力可以在不同的头上并行计算,提高计算效率。
4. 为什么除以根号d?
在计算注意力权重时,点积结果除以根号d_k(键向量的维度)的原因是为了在大量维度的情况下防止点积结果过大,导致softmax函数在梯度下降过程中饱和,从而难以训练。这个操作可以看作是一种缩放,目的是保持数值稳定性。
具体来说,当维度d_k增加时,Q和K的点积会不成比例地增加,这可能导致softmax函数的梯度变得非常小(因为softmax函数的梯度在输入非常大或非常小的时候接近于0)。通过除以根号d_k,可以确保点积的方差保持在一个合理的范围内,使得训练过程更加稳定。
这种做法是基于一个假设,即每个维度应该是独立的并且具有相同的方差。当所有维度都缩放到方差为1时,点积的方差将是d_k,因此除以根号d_k可以保持点积的期望值为1。
文末
有需要全套的AI大模型面试题及答案解析资料的小伙伴,可以微信扫描下方CSDN官方认证二维码,免费领取【
保证100%免费
】