transformer注意力机制的理解(Q,K,V,dk)

Attention公式:

上面这个注意力公式可以理解为是算 V 的加权后的表示

权重就是V前面的所有部分,

其中 softmax 可以使得权重概率分布和为1。 

其中 \frac{QK^{T}}{\sqrt{d_{k}}} 算的就是注意力的原始分数(其实也就是相似度分数,通过Q和K的点积求出)

其中 {\sqrt{d_{k}}} 是缩放系数,可以使结果不至于过大或过小,导致 softmax 之后就非0即1。

可以看下图帮助理解(图中最上边一行是softmax之前的结果,中间一行是没有除{\sqrt{d_{k}}}的softmax结果,最后一行是除了{\sqrt{d_{k}}}的softmax结果。可以看出在不除{\sqrt{d_{k}}} 的时候softmax的结果只会在输入的最大值或者几个大值附近出现,看起来非常陡峭。当输入除了{\sqrt{d_{k}}} 以后我们发现输入数据的分布大部分都保留了下来,这样的好处就是可以在梯度回传的时候让梯度比较平稳)

 

 

### 自注意力机制中的 Q、K 和 V 的含义 在深度学习领域,尤其是Transformer架构中,自注意力机制(self-attention mechanism)的核心概念围绕着三个矩阵:查询(Query, Q)、键(Key, K)以及值(Value, V)。这些矩阵的作用可以被理解为一种计算输入序列中不同位置之间关系的方式。 #### 查询(Query, Q) 查询表示当前正在关注的信息片段。它用于衡量其他部分对于当前位置的重要性。通过线性变换得到的 Query 向量会与其他 Key 进行交互来评估相关程度[^1]。 #### 键(Key, K) 键代表的是每个词或者元素自身的特征属性。当模型试图找到某个特定 Query 所对应的上下文时,Keys 就起到了索引作用。具体来说,在计算过程中 Keys 被用来同 Queries 对比以判断相似度或关联强度[^3]。 #### 值(Value, V) 一旦确定了哪些部分与给定 Query 更加密切相关之后,则 Values 提供实际要提取出来的信息内容。也就是说 Value 是最终会被聚合起来形成新表征的数据源[^4]。 整个过程可以通过如下公式描述: \[ \text{Attention}(Q,K,V) = \text{softmax}(\frac{QK^T}{\sqrt{d_k}})V \] 其中 \( d_k \) 表示 key 的维度大小;\( softmax() \) 函数确保输出概率分布特性。 以下是实现上述逻辑的一个简单 Python 示例代码: ```python import torch import math def scaled_dot_product_attention(query, key, value): dk = query.size(-1) scores = torch.matmul(query, key.transpose(-2, -1)) / math.sqrt(dk) # 计算得分并缩放 attn_weights = torch.softmax(scores, dim=-1) # 应用 Softmax 得到权重 output = torch.matmul(attn_weights, value) # 加权求和获得结果 return output, attn_weights ``` 此函数接收三组张量作为参数——`query`, `key`, 和 `value`—并通过点积操作计算它们之间的匹配分数,随后应用SoftMax转换成概率形式,并据此重新组合原始 values 来构建更丰富的语义表达[^2]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值