【Self-Attention第2弹】模型如何知道跟谁更“亲”?
本篇开始~
模型在看一句话时,不是平均用力地看每个词,而是会悄悄判断:眼下这个词,最该重点参考谁。
它之所以能知道“谁跟谁关系更大”,靠的不是玄学,核心就三步:
第一步:先给每个词发三张“小卡片”
每个词进来后,都会被变成三个向量,你可以先把它们想成三张身份卡:
-
Query(查询):我现在想找什么信息
-
Key(钥匙):我身上有什么信息,别人可以来匹配我
-
Value(内容):如果你觉得我重要,你最后真正拿走的内容是什么
这有点像聚餐时找人聊天:
-
Query:我现在想找“谁知道明天去哪吃”
-
Key:每个人头上都挂着标签,比如“懂火锅”“会订位”“只会起哄”
-
Value:真正跟他聊时,他能给你的具体信息
第二步:当前词会拿着自己的 Query,去和所有词的 Key 比一遍
比如句子是:
小明把球给了小红,因为她更擅长投篮。
模型看到“她”时,会想:
“这个她,到底更像前面的谁?”
这时候,“她”的 Query 会去和句子里其他词的 Key 做匹配。
谁更匹配,谁的分数就更高。
你可以把它理解成相亲角,不对,还是别这么比,容易跑偏。
更像是在通讯录里搜人:
-
你心里有个查找条件
-
你会把这个条件跟所有候选人信息过一遍
-
最像的那个,优先级就更高
这个“匹配分数”本质上通常就是 向量点积。
说人话就是:
两个词的“关注需求”和“可提供信息”越对得上,分数越高。
第三步:再把这些分数变成权重,决定“重点听谁”
模型不会只选一个词,然后别的全不看。
它更像是给每个词打一个关注权重:
-
这个词,参考 50%
-
那个词,参考 30%
-
还有一个词,参考 15%
-
剩下那些,随便看看 5%
这一步会经过一个 softmax,把分数变成一组加起来等于 1 的概率权重。
于是,当前词最终拿到的信息,就是:
所有词的 Value 按权重加权求和后的结果
也就是说,模型不是简单问“谁最重要”,而是在算:
“我现在应该多大程度参考每个人?”
这就让它能捕捉“关系更大”这件事。
一个更生活化的比喻
你在饭桌上没听清一句话,想知道“他”指的是谁。
你不会把刚才每个人说的话都同等对待,而是会自动判断:
-
前面谁刚被提到
-
谁更符合语境
-
谁在这件事里更像主角
-
哪个人和当前这句话联系更强
然后你脑子里会形成一个感觉:
-
大概率是张三
-
也可能是李四
-
王五基本没戏
Self-Attention 干的就是这个事,只不过它不是“凭感觉”,而是把这套判断变成了可计算的数学过程。
为什么它能学会这种关系?
关键在于:这些 Query、Key、Value 不是手工写死的,是训练出来的。
也就是说,模型在海量文本里慢慢学会:
-
什么情况下代词通常指向谁
-
什么词和什么词经常搭配
-
哪些句法结构里,谁更该被重点关注
-
哪些远距离词虽然隔得远,但关系其实很强
比如这句话:
The animal didn't cross the street because it was too tired.
模型会更倾向于觉得 “it” 指的是 animal。
但如果是:
The animal didn't cross the street because it was too wide.
它又可能更倾向于 “it” 指的是 street。
为什么?
因为模型在训练里见过大量类似模式,慢慢把“语义关系”学进了这些向量和权重里。
所以 Self-Attention 解决了什么问题?
在它之前,很多模型处理句子更像“排队过安检”,一个词一个词往后走。
这样一来,前面的信息传到后面会越来越淡,远一点的关系就容易丢。
Self-Attention 的好处是:
每个词都可以直接看全场,自己判断该重点参考谁。
这就很厉害了,因为自然语言里很多关系根本不是“谁离得近谁重要”。
比如:
-
代词指代
-
长距离依赖
-
主谓宾关系
-
转折和因果
-
上下文中的关键词呼应
它让模型不只是“按顺序看”,而是“按关系看”。
再浓缩下~
如果你想拿去跟别人解释,可以直接这么说:
Self-Attention 让句子里的每个词都像在开会,它会根据当前需要,给其他词分配不同注意力,谁更相关,谁的话语权就更大。
一句稍微技术一点(但还不至于劝退)的总结
它的核心公式可以理解成:
attention(Q, K, V) = softmax(QKᵀ / √d) V
别被这个公式吓到,它其实对应的就是:
-
用 Q 和 K 算相似度
-
把相似度变成权重
-
用权重对 V 做加权汇总
数学看着硬,意思其实很朴素:
先判断该看谁,再决定看多少,最后把信息汇总起来。
🌰 案例一只(加强理解)~
接下来我就拿一个具体句子,手搓一遍 Self-Attention 到底怎么算“谁跟谁更相关”的
先看一句话
小明给了小红一本书,因为她很喜欢阅读。
现在问题来了:
这里的 “她” 更可能指谁?
人一眼大概率会觉得是 小红。
因为“喜欢阅读”这个语义,更容易跟“小红收到书”这件事连起来。
模型要做的事,差不多也是这个。
第一步:句子先拆成一个个 token
比如粗略拆成:
-
小明
-
给了
-
小红
-
一本
-
书
-
因为
-
她
-
很
-
喜欢
-
阅读
现在轮到模型处理“她”这个 token。
它会问自己:
“我现在理解‘她’,该重点参考前面哪些词?”
第二步:给每个词准备三份信息
每个词都会变成三份向量:
-
Q(Query):我现在想找什么
-
K(Key):我能不能被你匹配上
-
V(Value):如果你关注我,你真正拿走什么信息
你可以先把它想成:
-
Q 是“提问”
-
K 是“标签”
-
V 是“内容”
所以“她”这个词会拿着自己的 Q,去问全场:
-
小明,跟我有多相关?
-
给了,跟我有多相关?
-
小红,跟我有多相关?
-
书,跟我有多相关?
像在开会时偷偷扫一圈,看谁最像我现在要找的人。
第三步:用“她”的 Q 去和所有词的 K 打分
这一步本质上是算相似度。
你不用先管公式,先理解成:
越像我当前需要的线索,分数越高。
假设模型内部算出来一个大概分数,可能像这样:
-
小明:1.2
-
给了:0.3
-
小红:3.8
-
一本:0.2
-
书:1.5
-
因为:0.4
-
她:2.0
-
很:0.1
-
喜欢:2.4
-
阅读:2.8
别纠结这些数字怎么来的,先看意思:
对于“她”来说,小红、喜欢、阅读 这些词,相关度明显更高。
这就很像你听别人聊天时,虽然所有字都进耳朵了,但脑子会自动觉得:
-
哦,这里重点得看“小红”
-
“喜欢阅读”也是关键线索
-
“一本”这种词,存在感就别太强了,先靠边站
第四步:把分数变成“注意力权重”
分数本身还不是最终结果。
模型会再做一步 softmax,把这些分数变成一组权重。
你可以理解成:
把“谁更像”变成“我该分多少注意力给谁”。
比如最后可能变成:
-
小明:5%
-
给了:2%
-
小红:35%
-
一本:1%
-
书:7%
-
因为:2%
-
她:10%
-
很:1%
-
喜欢:17%
-
阅读:20%
这就很直观了:
当模型理解“她”时,它没有平均参考所有词,
而是把更多注意力给了:
-
小红
-
喜欢
-
阅读
也就是,谁和当前词关系更大,谁分到的权重就更高。
第五步:把这些词的信息加权汇总
前面只是决定“该重点听谁”。
现在模型会把这些词各自的 V(Value) 拿出来,按权重加权平均。
什么意思?
就是“她”这个词最后的表示,不再只是它自己原来的意思,
而是融合了上下文后的新意思:
-
她和“小红”关系强
-
她和“喜欢阅读”这个语义也强相关
-
所以“她”更像是在指向小红,而不是小明
于是模型更新后的“她”,就更懂自己在这句话里是谁了。
整个过程,像什么?
特别像你在群聊里看一句:
“他昨天终于答应了。”
你第一反应不会是平均想一遍群里所有男的。
你会自动结合上下文判断:
-
刚刚主要在聊谁?
-
谁前面被提得最多?
-
谁最符合“答应了”这个语境?
然后你心里会冒出一个概率排序:
-
八成是张三
-
两成是李四
-
王五大概只是路过
Self-Attention 做的就是这个,只不过它把这种“语感判断”变成了数字计算。
如果稍微技术一点,它在算什么?
当处理“她”时,模型会做:
-
取“她”的 Query
-
和所有词的 Key 做点积
-
得到每个词和“她”的相关分数
-
经过 softmax 变成注意力权重
-
用这些权重对所有词的 Value 加权求和
-
得到“她”在当前上下文中的新表示
一句人话版总结:
“她”这个词会主动去看全句,决定自己该重点参考谁,然后把这些信息揉进自己里面。
为什么这样就能知道“谁跟谁关系更大”?
因为“关系更大”这件事,在 Self-Attention 里并不是人手工规定的,
而是模型在训练中慢慢学出来的。
它见过无数句子后,会逐渐学会:
-
代词通常会参考哪些词
-
动词更容易和哪些主语、宾语产生强关系
-
哪些形容词通常修饰什么对象
-
哪些词虽然离得远,但语义联系特别强
所以它不是拿着一本语法书硬套,
而是在海量样本里,慢慢练成一种“上下文判断力”。
你可以理解成:
Q、K、V 是它的大脑接口,训练过程是在教它如何用这些接口判断关系。
再来一个更生活的比喻
想象你去婚礼现场,突然听见一句:
“她今天终于愿意上台讲话了。”
你会怎么判断“她”是谁?
你脑子里会立刻做几件事:
-
看前文刚在聊谁
-
看今天谁最像“会被鼓励上台讲话的人”
-
看这个场景里哪些人更合理
-
给每个候选人一个可能性
这就是 attention 的味道。
不是死记硬背,不是只看最近的词,
而是结合全局语境,动态决定“谁更值得参考”。
最后浓缩成一句话
Self-Attention 让每个词在理解自己时,都能去全句里“找重点对象”,谁和它更相关,谁就会被分配更高的注意力权重。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)