海南行指网站开发公司wordpress更改固定连接后404
海南行指网站开发公司,wordpress更改固定连接后404,wordpress 文章 页面模板,seo教程搜索引擎优化在看 Transformer 的 self-attention 结构时#xff0c;很多人第一次见到 ( Q, K, V ) 三个矩阵都会有点疑惑#xff1a; 明明输入就是一个向量序列#xff0c;为什么还要多此一举做三次线性变换#xff1f; 而且最后还要套上一个 Softmax#xff0c;这又是在干什么#…在看 Transformer 的 self-attention 结构时很多人第一次见到 ( Q, K, V ) 三个矩阵都会有点疑惑明明输入就是一个向量序列为什么还要多此一举做三次线性变换而且最后还要套上一个Softmax这又是在干什么这两个问题其实是理解注意力机制的核心关键。我们从最直观的角度来拆开看。所有相关源码示例、流程图、面试八股、模型配置与知识库构建技巧我也将持续更新在GithubAIHub欢迎关注收藏一、为什么要 Q、K、V假设我们有一个输入序列X [ x 1 , x 2 , . . . , x n ] , x i ∈ R d X [x_1, x_2, ..., x_n], \quad x_i \in \mathbb{R}^dX[x1,x2,...,xn],xi∈Rd每个x i x_ixi就是一个 token 的 embedding比如一个词、一个字、或者一个图像 patch。如果我们直接用这些x i x_ixi之间做点积x i ⋅ x j x_i \cdot x_jxi⋅xj它确实能反映出两个 token 的相关性越大越相关但存在两个致命问题每个 token 的表示是静态的输入 embedding 没有区分谁在关注别人还是被别人关注。无法表达不同的关注模式所有 token 的关系都被一个固定空间描述模型无法灵活学习不同角度的相似性。于是就引出了 Q、K、V 的设计。二、Q、K、V 的线性变换在干什么1.投影到不同子空间输入的特征维度是d m o d e l d_{model}dmodel每个 token 的 embedding 包含所有语义信息。直接用原始 embedding 做 Q/K/V相当于在同一个空间计算相似度模型无法学习不同语义关系的权重。我们把输入 ( X ) 分别线性变换成三种表示Q X W Q , K X W K , V X W V Q XW_Q, \quad K XW_K, \quad V XW_VQXWQ,KXWK,VXWVQuery查询表示我想关注什么信息Key键表示我是什么样的信息Value值表示我携带的信息内容这三个矩阵其实是从同一个输入 (X) 投影出来的三种视角。这一步的作用就是让模型在不同子空间中理解 token 之间的关系。举个简单的例子在一句话中“他吃了一个苹果”“他”这个词Query可能更关注“吃”这个动词而“吃”这个词Key可能更多地被名词吸引。通过三组独立的线性变换模型可以学习到这种不同角色的匹配关系。所以你可以这样理解Q 是注意力的提问方式K 是信息的身份描述V 是最终被提取的信息内容。2.支持多头注意力多头注意力把 Q/K/V 切分成多个头每个头关注不同子空间的特征。如果没有线性变换每个头得到的还是原始 embedding无法学习多角度关系。线性投影允许每个 head独立学习一套查询/键/值表示提升模型表达能力。公式head i Attention ( X W Q i , X W K i , X W V i ) \text{head}_i \text{Attention}(X W_Qi, X W_Ki, X W_V^i)headiAttention(XWQi,XWKi,XWVi)MultiHead ( X ) Concat ( head 1 , . . . , head h ) W O \text{MultiHead}(X) \text{Concat}(\text{head}_1, ..., \text{head}_h) W_OMultiHead(X)Concat(head1,...,headh)WO3.增加可学习参数每个线性变换 W_Q, W_K, W_V都是可训练权重模型可以自动学习如何对不同 token 的 embedding 做不同的查询、匹配和加权。这使得 self-attention 不只是一个固定的相似度计算而是一个可调节、可优化的语义匹配函数。4.便于下游操作QK^T 计算的是注意力权重如果不做线性变换模型只能依赖原始 embedding 的内积这种相似度空间不一定适合 softmax 加权。线性变换可以把 embedding 投影到更适合做注意力匹配的空间提高学习能力。三、Q 与 K 的点积拿到 Q 和 K 后self-attention 计算的是每个 Query 与所有 Key 的相似度score i j Q i ⋅ K j T \text{score}_{ij} Q_i \cdot K_j^TscoreijQi⋅KjT这里的点积代表匹配程度即Q_i 表示第 i 个 token 想关注的信息K_j 表示第 j 个 token 所包含的信息它们的点积越大说明第 i 个 token 越应该关注第 j 个 token。从计算上看点积是将所有的对齐分量相乘并累加从几何上看当向量指向相似方向时点积为正如果向量垂直点积为0当向量方向相反时则为负数。这样我们就得到了一个注意力分数矩阵表示每个 token 对其他 token 的注意力权重。四、为什么要用 Softmax问题来了我们已经有了相似度分数为什么还要再过一遍 Softmax其实原因很简单把“相似度”变成“权重分布”点积结果可以是任意实数而 Softmax 会把它们压缩到 ( [0, 1] ) 区间并且所有权重之和为 1。这让注意力分数能被解释为概率分布即模型在关注谁、关注多少。放大强关注、削弱弱关注Softmax 有指数特性会让大的分数更大、小的分数更小从而突出主导注意力。这在语义建模中非常关键——模型不会平均地看所有 token而是能聚焦重点。梯度稳定性如果直接用点积做加权分数可能过大或过小导致梯度不稳定。Softmax 保证了数值范围可控梯度传播更平滑。最后一步把注意力权重乘上 ValueAttention ( Q , K , V ) Softmax ( Q K T d k ) V \text{Attention}(Q,K,V) \text{Softmax}\left( \frac{QK^T}{\sqrt{d_k}} \right) VAttention(Q,K,V)Softmax(dkQKT)V就得到了每个 token 根据上下文动态加权后的新表示。总结一下Q、K、V 的线性变换是为了让模型从同一输入中生成不同功能的向量表示分别负责提问、匹配和传递信息增强模型的表达灵活性。Softmax 的作用则是把相似度分数转成稳定的注意力分布突出重点并保证梯度可训练。推荐阅读● 一览Transformer整体架构● Transformer——Attention怎么实现集中注意力● Transformer——FeedForward模块在干什么● 从0开始实现Transformer● 什么是KV-Cache● Transformer注意力机制——MHAMQAGQA● FlashAttention怎么提升速度的● 面试官BatchNorm、LayerNorm、GroupNorm、InstanceNorm 有什么本质区别● 面试官Transformer如何优化到线性级● FlashAttention2更快的注意力机制更好的并行效率● FlashAttention3 全解析速度、精度、显存的再平衡● Transformer 中为什么用LayerNorm而不用BatchNorm关于深度学习和AI大模型相关的知识和前沿技术更新请关注公众号aicoting