pytorch - 自注意力术语中的温度是多少?
问题描述
我正在阅读论文的代码“Attention is All You Need”。代码链接在这里。
我发现这个术语叫做温度。它与注意力的 Q,K,V 公式有什么关系。
我对自注意力的理解是
Attention = Softmax(matmul(Q,K.T),dim=-1)
Output = Attention.V
寻找一些东西来纠正或增强我的理解。
解决方案
在论文中,他们将“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
推荐阅读
- entity-framework - Azure 数据库、EF、超时问题
- javascript - React Apollo 的 MockedProvider 模拟 refetch() 函数
- javascript - 在 vueJS 2 中具有分页但无法呈现的 element-ui 表行的背景颜色
- tsql - 返回字段的数量是否会影响 TVF 的性能?
- c# - 如何在代码中为规范流场景大纲标题获取自动生成的名称以用于报告目的
- ios - 如何从终端更新 Visual Studio for Mac / Xamarin Studio?
- session - Firebird 中 UDF 的会话特定存储
- javascript - mqtt async 等待并发消息然后响应相应的 http post 请求
- javascript - NodeJS 流 - 内存不足
- google-apps-script - 通过 Google 表单添加日历活动