GPT6指令不跟随原理更深度解析
之前发帖聊过GPT6不终结条件句,容易无限展开,无法收敛的问题的帖子。以前有人对我这个帖子的评论说是单纯上下文占满了。
我知道这很像是上下文拥挤的结果,但是我想说的其实是另一个层面更底层的,和上下文容量完全独立的原因。
项目或严密推演往往是分步骤推进的,而推进步骤势必要进行阶段化成果收敛。开启下一个步骤,需要上一个步骤已经形成确切的成果和结论。比如在第一步面对十种可能性,必须通过引入约束条件,比较取舍并淘汰掉九种,保留唯一确定的结论,把这个确切的成果作为第二步的基础,任务才能往下推进。从计算复杂度的角度来看,阶段化收敛的核心作用是及时对状态空间进行剪枝,让后续步骤的推演复杂度保持在可控的范围内。
但是GPT6的生成倾向是拒绝剪枝。因为训练时对不断提出新角度和新方案的激励太多,对比较取舍并形成决策的权重太少,它完全不去围绕目的去设计实验来终结条件句,导致在第一步生成的就不是一个确切的结论,而是带着一大堆条件句,补充说明和未决方案的发散内容。
在这个基础上,再叠加Transformer架构本身的自注意力机制,问题就会被急剧放大。
因为模型在基座层面欠缺在宏观上审视全局,对目的性进行追踪的能力,它在生成后续内容时,只是把前面生成的每一个Token当作接下来注意力计算的上下文,顺着往下推进。
当模型为了追求局部区域的解释完备性,不去及时终结条件句时,那些在单次交稿阶段原本只是顺带一提的防御性回答,边缘反例和次要分支,到了长线多轮任务中就会以指数级速度一瞬间膨胀。
这些冗余分支占据了实实在在的Token篇幅,在注意力计算中的权重不断放大,直接导致注意力发散和理解漂移,进而稀释掉最开始给它的核心指令。结果就是,哪怕上下文容量还远远没有占满,它推演着推演着,也会被自己前面随手抛出的一个次要条件句带偏,顺着那个次要分支无限展开,陷入自指困境,最终出现严重的指令不跟随,导致结果乱成一坨。
看清了这个形成机制,就能明白为什么不能把这个问题简单归结为上下文容量不够,或者认为是人工设计提示词和Skill的能力不够。
我们在设计提示词,编写Skill或者搭建Harness工作流的时候,只能针对任务的主干逻辑去设定先验的边界。但是GPT6这种因为拒绝剪枝和自注意力机制叠加产生的发散,是在推演过程中动态产生的。所以最后到真正设计任务的时候,你并不知道GPT6会在哪一步的推演中发生注意力发散,不知道它会在什么莫名其妙的地方,被某个次要条件句延伸出去并带偏。
这是无法事先预料的,就被迫需要人不断投入大量的精力去检查GPT6的交付产物,人工帮它完成阶段性的取舍和收敛,找出执行问题并进行流程优化。我们必须意识到,这是模型底层的生成机制缺陷给人带来的额外工程设计负担,而非单纯的上下文容量限制,更不是人本身无法驾驭模型的能力缺陷。