• 「骂 AI 它就变聪明」,能用机制解释的只有一半


    「你骂它两句,它就变聪明了。」这个说法在群里传了很久,而且大家都有体感支持——骂完那一轮,回答确实好了。

    体感是真的,归因大概错了。

    拆开看,你骂的时候通常顺手带进去了一句具体指正。「我问的是苹果公司股价,你给我扯水果」,这半句才是起作用的东西。至于「你真笨」那半句,模型读到的是一串 token,它不会抖三抖。

    更麻烦的是纯情绪那一半可能倒扣分。过激辱骂在对齐数据里常跟「用户不满意,模型给短回答或者道歉」这个模式绑在一起,有时候换回来的是拒答或者过度保守。

    所以那句话得改一个字:骂在点上有用,而点上那部分跟骂无关。

    一、真正起作用的是解空间被你收窄了

    具体的指正在语义空间里形成一个高权重标记,逼模型回溯前面的推理路径,定位到出偏差的那一环。「你忽略了第二步的边界条件」这样的话,能让它当轮重新分配注意力。

    换个说法更好理解——你在替它缩小可行解空间。具体的纠错信息直接抬高了任务相关那部分 continuation 的概率,采样自然就更集中在你想要的方向上。

    所以把「你怎么又错了」换成「第二步的逻辑不对,应该先判断空指针再取值」,它立刻知道边界在哪。同一件事的两种说法,一种给了坐标,一种只给了音量。

    顺着这个机制,最省事的做法是把抱怨直接写成验收标准加反例。这比事后纠正更早介入,也不用赌安全侧会不会误判成攻击。

    二、「越用越好用」是两套机制叠在一起

    这条也有体感支持,也一样容易归错因——它其实是两件事,很多人把它们当成一件。

    第一件在当前对话窗口里发生。上下文学习让模型看得见你之前所有的交流,你纠正它,它实时调整。部分模型还会显式存一些关键偏好,比如「我习惯用 TypeScript」,之后的对话自动适配。这一层是当场生效的。

    第二件在版本之间发生。你的点赞、点踩、复制、采纳,进厂商的数据池,经过人类反馈强化学习或者 DPO 这类对齐算法,影响下一个版本。典型路径是人类反馈到偏好数据到奖励建模到新模型发布。

    对个人来说,第二件是间接的、滞后的、聚合的。你的每一次使用都在为下一代模型投票,但这一代不会当场翻盘。

    两层叠在一起就很容易产生因果错觉——当场变好其实来自第一层,而你把它记在了第二层账上。拆开看就清晰了。

    三、先复述再写代码,便宜在自回归上

    「别一上来就要一整坨代码,先让它用两句话复述改哪里、输入输出是什么、哪些不能动。」这条建议听着像开工前对表的礼节,它的收益其实很硬。

    模型的生成是自回归的。前面几个 token 走错分支,后面所有 token 都会沿着错误方向狂奔,而且越写越自洽,越自洽越难看出来。先复述任务,本质上是把走错分支的概率压在最前面那几步。

    这一个小动作,能省掉后面大部分「不对不对,我不是这个意思」。结构化的需求还会持续约束后续生成的条件分布,一次对表管很多轮。

    同一条道理的另一个用法是要小步。先设计、先写测试、再实现,大改拆成多轮。每一轮的分支都短,走歪了也就歪一小段。

    四、写代码的六条

    # 动作 怎么做 示例
    1 给边界 说清能改什么、不能改什么、用什么版本 只能动这个函数内部,接口签名不改,Python 3.10
    2 给例子 一对「输入 → 期望输出」胜过十句吐槽 输入 [1,2,3] 返回 [2,4,6],不要用循环
    3 要小步 先设计、先写测试、再实现,大改拆多轮 先写这个函数的测试用例,再实现它
    4 先复述 写代码前让它先确认任务边界 你先用两句话复述一下我要你改什么
    5 可验证 贴终端报错,让它自己跑检查 这是报错 KeyError: 'user_id',帮我定位
    6 固定规则 项目里写清目录和风格,减少重复说明 这个项目用 black 格式化,变量用 snake_case

    六条的共同点是都在给约束,一条比一条更早介入。第 6 条最省事,一次写好,每次生效。

    五、收个口

    急眼不犯法——你拍桌子、骂两句,只要不砸电脑,没人拦着。

    但要是真想少返工,更划算的动作是具体指出错在哪、说清想要什么样。纯情绪对模型没作用,对你的血压有作用。

    这件事的机制说到底只有一句话——模型对语义和结构约束敏感,对情绪 token 不敏感。高质量的反馈能压低跑题和幻觉的后验概率,而这才是你体感里「它变聪明了」的主要来源。

    你可以骂,骂在点上才值回票价。只给约束不带火气的那种,票价更高。

  • 相关阅读:
    vue3 + vite + ts + setup , 第十一练 Vue3自定义全局函数和变量,vue3 如何使用自定义插件
    异常
    IDEA类和方法注释模板配置
    C# Winform自定义点阵控件
    Java图书馆借阅功能实现
    TCP IP网络编程(四) 基于TCP的服务器端、客户端
    堆(完全二叉树的一种) 模拟
    嵌入式系统开发笔记79:为什么要获取本机网卡IP地址
    【学习笔记】支配树基础理论
    【前端】JavaScript(一)
  • 原文地址:https://www.cnblogs.com/xiexj/p/23053019