自注意力机制
把一句话中的每个词都看成一个人,每个人要同时“看”全队其他人,然后决定“更该听谁的意见”。做法是给每个人发三张小纸条:Q(Query,我要打听什么)、K(Key,我有什么标签能被匹配)、V(Value,我能提供的具体信息)。每个人用Q去和所有人的K比对相似度,得到一个“相关度分数”,再用Softmax把分数变成权重,最后按权重把大家的V信息加权求和,更新成自己的“更懂上下文的新想法”。核心计算是:Attention(Q, K, V) = softmax(Q·K^T / √d_k) · V。这样一来,“我 想吃 蛋炒饭”里,“吃”会给“蛋炒饭”更高权重,“我”也会把“蛋炒饭”的信息融合进来,形成更合适的表示。
多头注意力
单头注意力像只有一位评委,只能按一种标准打分;多头注意力就像同时派出多个评委团,每个团用不同的“评分标准”(不同的Q/K/V投影)去评估,然后把各团的意见拼在一起,再统一汇总。这样做能同时捕捉语法关系、语义关系、指代关系等多种依赖,信息更全面、更稳健。形式化上就是把输入分别投影成h组Q/K/V,各自算注意力,再把输出拼接并做一次线性变换:MultiHead = Concat(Head1, …, Headh) · W_O。
位置编码
自注意力本身对“先后次序”不敏感,“我 喜欢 猫”和“猫 喜欢 我”在它眼里可能差不多。于是需要位置编码给每个位置加“坐标指纹”。Transformer 原论文用的是正弦/余弦绝对位置编码:为每个位置pos和向量维度i生成一组数值,偶数维用sin,奇数维用cos,频率随维度指数变化,保证不同位置有唯一且可比较的编码,还能体现一定的相对位置关系。直观理解:就像给每个时间点装上不同“转速”的秒表,指针角度组合能唯一标识时间位置;在模型里,把位置编码和词向量相加,模型就能同时知道“是谁”和“在哪儿”。
前馈网络
注意力之后,每个位置会进入一个全连接的前馈网络(FFN)做“非线性深加工”。它通常由两层线性变换夹一个ReLU组成:FFN(x) = max(0, x·W1 + b1)·W2 + b2。可以把它想成“小型加工厂”:对每个位置的特征先做线性组合,再经过非线性“激活”增强表达能力,最后再线性映射回原维度。FFN不跨位置交流(各自独立),但与注意力配合,能把局部特征进一步提炼,提升整体表达力。
948

被折叠的 条评论
为什么被折叠?



