首页 > 解决方案 > 自注意力术语中的温度是多少?

问题描述

我正在阅读论文的代码“Attention is All You Need”。代码链接在这里

我发现这个术语叫做温度。它与注意力的 Q,K,V 公式有什么关系。

我对自注意力的理解是

Attention = Softmax(matmul(Q,K.T),dim=-1)
Output = Attention.V

寻找一些东西来纠正或增强我的理解。

标签: pytorch

解决方案


在论文中,他们将“Scaled Dot-Product Attention”定义为:

Attention(Q, K, V) = matmul(softmax(matmul(Q,K.T) / sqrt(dk)), V)

其中 dk 是查询 (Q) 和键 (K) 的维度

在实现中,温度似乎是 dk 的平方根,因为它是从 MultiHeadAttention 类的 init 部分调用的:

self.attention = ScaledDotProductAttention(temperature=d_k ** 0.5)  

它用于实现上述公式的 ScaledDotProductAttention 类:

attn = torch.matmul(q / self.temperature, k.transpose(2, 3))

ScaledDotProductAttention 类: https ://github.com/jadore801120/attention-is-all-you-need-pytorch/blob/fec78a687210851f055f792d45300d27cc60ae41/transformer/Modules.py#L7


推荐阅读