为什么你只说“好看一点”,AI 就把其他要求忘了?

1 minute read

Published:

你在用 AI 的时候,有没有遇到过这种情况?

作者:Koutian Wu;GitHub: ktwu01

你给它提了几个要求:语气礼貌,内容准确,排版好看,间距再大一点。它交出第一版,你觉得已经差不多了,只想继续调整外观,于是补了一句:

“能不能再好看一点?”

下一版出来,变化倒是很明显:标题更抢眼,留白更多,文字也更少了。可你仔细一看,为了让页面显得简洁,一段解释不见了;原本需要保留的限定条件,也被压缩成了一句口号。

你赶紧说:“准确性还是要保留啊。”

它又改了一版。这次说明加回来了,页面却重新挤满了文字。

你开始在两个方向之间来回纠正。你以为自己在微调,AI 却像每次都在重新理解整个任务。

你说的是“把这一项调高一点”,它做出来的效果却像“现在只剩这一项重要了”。

这正是我们讨论的那个问题:当一个任务同时包含 A、B、C,为什么强调 B,会让 A 和 C 失效?

一个很自然的想法是,能不能直接给 AI 一组权重?

礼貌占 20%,准确性占 30%,美观占 40%,间距占 10%。这些要求始终保留,只调整它们之间的优先级。就像调音台上有几个推子,提高人声,不应该顺手把鼓和吉他全部静音。

更何况,大语言模型里本来就有一个叫 attention 的机制,中文通常译作“注意力”。它本来就在分配权重。那为什么不能把这些推子交给用户?

要回答这个问题,需要先弄清楚:attention 到底在给什么分配权重。

我们读一段话时,会不断把前后信息联系起来。看到“请把第二版的标题改一下”,就需要找到第二版,辨认标题,再理解要怎么修改。

语言模型也需要在文字之间建立联系。Attention 是它完成这类计算的一种机制:处理当前位置时,根据学到的匹配方式,从前文不同位置读取信息,再把这些信息组合起来。[1]

可以借用“一边写,一边翻阅资料”来理解它:写到不同地方,参考的内容和参考程度会变化。但这只是帮助理解的比喻,模型没有一个人在里面翻页。

把这个过程写成数学,其实可以分成两步。第一步,算每个位置该参考多少:

\[a_{ij}= \frac{\exp\!\left(q_i^\top k_j/\sqrt{d_k}\right)} {\sum_{m\in S_i}\exp\!\left(q_i^\top k_m/\sqrt{d_k}\right)}\]

先不用被符号吓住。\(i\) 是当前正在处理的位置,\(j\) 是一个可以参考的位置。\(q_i\) 叫 Query,\(k_j\) 叫 Key;它们都是一串数字,点积 \(q_i^\top k_j\) 算出匹配分数。可以把它近似理解为“此刻需要的信息,与这个位置提供的线索有多匹配”,但这种匹配方式是训练学出来的。

\(d_k\) 是这些向量的维数,除以它的平方根,是为了调整分数尺度。\(S_i\) 表示允许读取的位置;对于标准因果 attention,不能读取尚未出现的后文。最后,\(\exp\) 是指数运算:把各位置的分数变成正数,再除以这些正数的总和,就得到了比例。这整个换算过程叫 softmax。

因此,\(a_{ij}\) 可以读成:“处理位置 \(i\) 时,分给位置 \(j\) 的读取比例。”

第二步,按这些比例组合信息:

\[z_i=\sum_{j\in S_i}a_{ij}v_j\]

\(v_j\) 叫 Value,是位置 \(j\) 携带的信息向量;\(\sum\) 表示把各项加起来。如果三个位置的比例是 20%、30%、50%,这一步就是“第一份信息乘 0.2,加上第二份乘 0.3,再加上第三份乘 0.5”。得到的 \(z_i\) 会进入后续计算。

到这里,公式完成的是信息的选择与组合,还没有计算答案是否准确、是否礼貌。

问题恰好出在“参考程度”和“做事优先级”之间。

多参考一句话,并不自动等于更好地执行这句话。

假设你让一个人反复读“请保持准确”。他确实把很多时间花在了这句话上,但如果没有核对数字、理解限定条件、检查删改内容,最终仍然可能写错。

模型也是如此。让“准确”这个词获得更多 attention,既不会凭空提供核查事实的能力,也不会自动建立一套“删掉这句话是否改变了原意”的检查流程。

而且,模型并没有一个统一的“注意力总开关”,把 100% 分成礼貌、准确、美观和间距。它在许多层、许多位置反复进行信息读取。内部这些权重描述的是文字表示之间的关系,用户的权重描述的是结果应该如何取舍。

两者可以通过训练建立联系,但不能直接画等号。

Softmax 还揭示了一种值得注意的竞争。假设某个 attention head 在某个位置只参考三处信息,匹配分数原本都是 0,那么每处约占三分之一。如果只把第二处分数从 0 提高到 3,比例会变成:

匹配分数第一处的比例第二处的比例第三处的比例
\((0,0,0)\)33.3%33.3%33.3%
\((0,3,0)\)4.5%90.9%4.5%

这是直接代入公式的示例。第二处的指数值从 1 变成约 20.1,于是在总和约 22.1 中占了九成。其他位置没有被删除,相对比例却明显下降了。

这在形态上很像“强调一项,其他项就弱下去”。但表中的三处信息是 token 位置,并不是礼貌、准确和美观三个目标;这个局部计算也不能代表整个模型。

这也意味着,“它忽略了其他要求,一定是 attention 被抢走了”还只是一个猜测。仅凭最终答案,我们看不见故障究竟发生在哪一步。

那么,AI 为什么不能像一个合作者那样,记住我们此前已经谈好的要求?

理解这个问题,可以想象两种完成修改的过程。

一种过程是:接到“好看一点”之后,直接交出一版看起来更好看的结果。

另一种过程是:先确定哪些要求仍然有效,再修改外观,最后检查数字、含义、语气和间距是否仍然符合要求。

对于用户来说,我们自然期待第二种过程。但一个能生成修改结果的模型,不会因此自动拥有这整套检查程序。

大语言模型通常是一小段一小段地生成文字;它也能在这个过程中规划、推理和检查,但这些行为需要被训练出来,或者由外围系统安排。生成了一份看起来符合最新要求的答案,并不保证它已经逐项验收所有旧要求。

这个生成过程可以写成:

\[p_\theta(y\mid x) =\prod_{t=1}^{T}p_\theta(y_t\mid x,y_{<t})\]

\(x\) 是模型实际收到的上下文,\(y\) 是整份回答,\(\theta\) 是训练得到的模型参数。\(y_t\) 是第 \(t\) 个 token,也就是一段文字单位,不一定恰好是一个字或一个词;\(y_{<t}\) 是此前已经生成的部分。

竖线 \(\mid\) 表示“给定这些条件”,\(\prod\) 表示连乘。整句话的意思是:一份回答的概率,由每一步在当时上下文下生成相应 token 的概率相乘得到。

这个公式解释了为什么已经写下的内容会影响后续内容。它并不证明模型不能规划,也没有附带“所有要求均已满足”的保证。比如,公式里并没有一个默认存在的检查项,负责确认开头那段限定条件最后还在不在。

后训练在这里很重要。可以把它理解为:通过示范、反馈和奖励,继续训练一个已经学会语言规律的模型,让它更会执行指令。InstructGPT 等研究已经展示了这种训练如何改善指令遵循。[2]

但训练具体奖励什么,会影响模型学到什么。

设想一种情况:用户说“更好看一点”,模型大幅删减文字,评价者觉得页面更清爽,于是给了高分。假如评分没有检查被删掉的内容是否影响准确性,模型就可能学到一种有问题的修改习惯——让变化一眼可见,却没有同样学会保护此前的要求。

这是一个需要实验验证的解释,不能据此断言某个模型就是这样训练的。它提示我们,训练时应当检查“改善了什么”,也检查“改坏了什么”。

所以,当用户已经说明白,AI 却没有执行,当然应该改进系统。只是修复之前还要查清楚:它没有利用那条要求,还是理解了却做不到?是模型改坏了,还是应用根本没有把此前要求传过去?

把这些情况全部叫作“没听话”,足以描述体验,却还不足以定位原因。

再回到那四个推子。

如果我们直接写“礼貌 20%,准确 30%,美观 40%,间距 10%”,会不会好一些?可能会。模型可以从这些数字里理解相对优先级。

但写下一个比例,与让结果稳定地服从这个比例,中间还隔着一段工程。

如果要让那四个百分比成为一套明确的比较规则,可以写成:

\[U_w(y)= 0.2r_{\text{礼貌}}(y) +0.3r_{\text{准确}}(y) +0.4r_{\text{美观}}(y) +0.1r_{\text{间距}}(y)\]

这里的 \(y\) 是一份候选作品,\(r\) 表示某一方面的评分,\(U_w\) 是按权重 \(w\) 算出的总分。你可以把它当作一张评分表:每项分数乘上对应权重,最后加起来。

注意,这里的 0.4 乘的是“整份作品的美观得分”。前面 attention 里的比例,乘的是“某个位置的信息向量”。两个公式都在加权,但加权的对象不同,执行的工作也不同。

如果系统先生成一组候选 \(\mathcal{Y}\),再执行

\[y^*=\arg\max_{y\in\mathcal{Y}}U_w(y),\]

意思就是:“在这些候选里,选总分最高的那份。”这就把加权落实成了一项操作。但它只能选已有候选,还依赖评分是否可靠。把同一个公式写进 prompt,并不保证普通模型已经完整执行了这套过程。

拿“间距大一点”来说,如果任务是网页排版,我们可以检查具体的样式数值。“美观提高一点”就没有这么直接:减少文字、调整颜色、统一字体,都可能改善外观,也可能带来用户不想要的变化。

一个可信的推子,需要知道自己控制什么,还需要知道推上去之后,结果究竟怎样变了。否则,界面上的 40% 只是一个看起来精确的数字。

评分的尺度也必须处理。假如美观按 0—100 分计算、准确性按 0—1 分计算,那么美观这一项最高贡献 40 分,准确性最高只贡献 0.3 分。这显然不是用户看到“40% 对 30%”时期待的取舍。先统一评分尺度,再用例子校准各项分数的意义,百分比才有解释价值。

还有一个容易忽略的地方:即使加权做对了,也不保证每一项都不退步。

比如,两版页面中,一版解释更充分,另一版外观更符合偏好。提高美观的权重,系统可能从前一版切换到后一版。其他要求并没有被删除,只是在总分比较中被牺牲了。

用一个只考虑准确性和美观的例子,就能算出这种切换。以下分数是人为设定的示例,均在 0—1 之间:

页面准确性得分美观得分
A0.950.55
B0.750.85

设美观权重为 \(b\),准确性权重为 \(1-b\),两版的总分就是:

\[U(A)=0.95(1-b)+0.55b=0.95-0.40b\] \[U(B)=0.75(1-b)+0.85b=0.75+0.10b\]

让两个总分相等,就得到 \(b=0.4\)。低于这个值,A 得分更高;高于这个值,B 得分更高。

于是,把美观权重从 39% 调到 41%,系统就可能换一个答案,准确性得分从 0.95 降到 0.75。即使其他权重没有归零,结果也可能突然变化。小幅调整权重,不保证输出只发生小幅变化。

因此,我们最初说的“不要忘记其他要求”,其实包含两种期待:有时我们允许取舍,只希望取舍符合自己的偏好;有时我们只想修改外观,并没有授权删减内容。

“更重视美观”和“允许为了美观丢掉信息”,不能被系统默认当成同一件事。

一个能与用户协作的系统,需要从上下文里判断这次修改的范围。用户明确说“只改间距”,就应当保持文字;用户说“内容可以删减,视觉优先”,才有另一种修改空间。

这种区别也能写进数学。例如,用户要求准确性得分至少达到某个水平 \(\tau\),系统可以在选择候选时加上一条限制:

\[\max_{y\in\mathcal{Y}}U_w(y) \quad\text{满足}\quad r_{\text{准确}}(y)\ge\tau\]

\(\tau\) 就是不能跌破的最低分。把它设为 0.9,上面的 B 就不能入选,再好看也不行。如果所有候选都达不到要求,系统需要继续寻找答案或说明冲突。这项保证仍然取决于评分器是否评对。

对于“只改间距”,还可以直接检查“新旧文字是否一致”,不必把它绕成一个主观分数。权重负责允许的取舍,约束负责界定允许的范围。

这不要求用户每轮重写一份合同。此前已经表达、仍然有效的要求,本来就应该延续下去。

这样的控制机制能做出来吗?已有研究在尝试。

一条路径是直接干预 attention。PASTA 研究了如何让模型在推理时更重视用户指定的文字。另一条路径是专门训练模型根据多种偏好调整输出,Rewards-in-Context 就属于这一方向。[3][4]

这些研究说明,“用户指定重点,模型据此改变行为”是能够实现的。但增强一段文字的作用,与让四个目标像调音台一样可预测地变化,仍然有距离。

对于开头的场景,还可以从系统设计上解决:让 AI 持续维护当前要求,接到修改时只更新相关部分,完成后检查其余要求是否仍然满足。

如果用户说“更好看一点”,系统应当把它理解成当前任务的一次更新。准确性、礼貌和间距仍在,除非用户撤销它们,或者新的要求确实与它们冲突。

检查也必须落在结果上:文字和数字有没有被改动,限定条件有没有消失,间距是否改变。对于美观和语气,再使用事先定义的标准或用户反馈。模型自己说“我已经兼顾了所有要求”,算不上验收。

要知道哪个办法有用,可以做一个很直接的实验:给同一任务设置几项要求,先让 AI 完成,再只调整其中一项。既记录这一项有没有改善,也记录其他项是否出现未经允许的退步。然后比较普通对话、额外检查和针对性训练带来的变化。

如此,我们就从“它是不是注意力不够”走到了可以观察的问题:它到底改好了什么,又改坏了什么。

回到开头。用户说“能不能再好看一点”,这句话里的“一点”,往往已经包含了一种协作期待:我们正在继续修改同一个作品,之前达成的要求还算数。

AI 要学会的,正是这种延续。

当你把一个推子往上推时,它应该知道,其他推子还留在原来的位置。

参考阅读:

  1. Attention Is All You Need:Transformer 与 attention 的计算机制。
  2. Training language models to follow instructions with human feedback:示范与人类反馈如何改善指令遵循。
  3. Tell Your Model Where to Attend: Post-hoc Attention Steering for LLMs:通过 attention 干预增强指定文本的作用。
  4. Rewards-in-Context: Multi-objective Alignment of Foundation Models with Dynamic Preference Adjustment:通过训练支持多目标偏好调节。