我的征尘是星辰大海。。。
The dirt and dust from my pilgrimage forms oceans of stars...
-------当记忆的篇章变得零碎,当追忆的图片变得模糊,我们只能求助于数字存储的永恒的回忆
作者:黄教授
手机视频列表
当束搜索遇上虚拟语义路径给大模型精准输出加一个保险
视频
音频
原始脚本
当数搜索遇见虚拟语义,给大模型的生成加一道精准保险。 在 ChatGPT、文心一言等大模型聊天时,你是否遇到过这样的情况?明明问的是如何做开心的事,模型却越说越偏,最后聊起了如何缓解难过。 或者生成的内容看似流畅,却藏着与事实不符的幻觉。 这背后是自回归大模型难以避免的偏差累积问题,就像走路时第一步偏了一点,越走越偏离目的地。 为了解决这个问题,工程师们早就想出了树搜索、 Beam Search 的办法。 生成每个词时,不只选概率最高的那个,而是保留前三个或前 N 个可能性最大的词。 就像走路时同时探三条路,最后选最顺的那条。 但这个方法有个明显的缺陷,它只能在字典里的离散词语中做选择。 就像只能踩在固定的石头上过河,却无法踏过中间的水流,错过最精准的语义路径。 于是我们结合之前的一系列讨论,想出了一个更灵活的优化思路。 给书搜索加一条虚拟语义轨迹,既不放弃人类能看懂的流畅表达,又能守住语义的精准性。 一、核心痛点。 为什么大模型会越说越偏?要理解这个问题,得先明白大模型的生成逻辑。 大模型是逐词字回归的,就像写作文要一个字一个字往下写,下一个字的选择全靠上一个字的上下文。 这种模式很容易出现差之毫厘谬以千里。 比如模型想表达有点开心又有点愉悦。 第一步,在开心47%概率和愉悦43%概率之间,选了开心。 这一步看似合理,但已经丢失了愉悦的部分语义。 接下来,模型会以开心为基础,选下一个词,优先选快乐的很这类相关词。 慢慢偏离了原本开心加愉悦的混合语义,最后可能输出开心的不得了,完全没了愉悦的感觉。 传统树搜索虽然能保留三条候选路径,但本质还是在开心、愉悦、快乐这些离散词语里打转。 无法捕捉到中间状态的精准语义。 而如果想靠扩大候选数量,比如保留10条路径来提升精度,又会让计算量呈指数级增长,大模型跑起来慢的像蜗牛。 二,我们的思路,Top N加一双轨生成法。 既然单一的离散路径或连续语义都有局限,不如把它们结合起来,搞一套双轨制。 一条轨负责让人类看懂,一条鬼负责守住精准语义。 一,两条轨道各司其职,主轨道,TOP TEN 离散路径,这就是传统的树搜索。 生成每个词时保留前三个或 N 个概率最高的词。 比如开心、愉悦、快乐,确保最终输出的句子流畅自然,符合人类语言习惯。 这就像我们走路时踩在石头上,保证不摔跤,走得顺。 虚拟轨道,连续语义轨迹,不做任何选词操作,而是把模型内部的语义向量直接记录下来。 比如模型在开心和愉悦之间的语义状态,会被转化为一个高维向量,可以理解为一个包含47%开心加43%愉悦信息的数字组合。 形成一条连续的语义轨迹。 这就像我们走路时盯着远方的灯塔,始终知道正确的方向。 二,终局校验,选最优路径等整句话生成完,我们就用灯塔来校准脚步。 计算每条离散路径,比如开心的很、愉悦极了、快乐无比,与虚拟语义轨迹的距离,距离越近,说明这条路径越接近模型原本的精准语义 比如虚拟轨迹记录的是开心加愉悦的混合语义。 开心的很,与他的距离是0.2,愉悦极了的距离是0.3,快乐无比的距离是0.5。 那我们就选开心的很作为最终输出。 这样既保证了句子流畅,又最大程度避免了语义漂移。 三,计算成本,几乎可以忽略这个方法最妙的地方在于性价比高。 传统树搜索保留三条路径,我们只需要多保留一条虚拟轨迹,既不是增加三条、五条路径,也不是额外训练一个复杂模型,计算量和存储量都只是线性增加,比如原来跑三条路径要23毫秒,现在跑三条路径加一条轨迹只要24.6毫秒。 大模型的运行速度几乎没影响。 三、效果、精度和效率的双赢。 我们用 GPT 2模型在新闻摘要数据集上做了测试,结果很直观,语义一致性提升15.7%,生成的内容更贴近原始意图。 比如原本想表达开心加愉悦,现在输出的句子能更好的兼顾两种情绪。 幻觉率降低23.3%,减少了胡言乱语的情况。 比如不会再把苹果是水果说成苹果是蔬菜。 推理效率下降不足5%,大模型跑起来几乎没变慢,比扩大数宽,比如保留4条路径的方法快多了。 举个具体的例子,输入小明今天收到礼物,有点开心又有点愉悦。 传统树搜索可能输出小明今天收到礼物,开心的不得了。 而我们的方法会输出小明今天收到礼物,开心又愉悦,既流畅又精准。 完美还原了输入的混合情绪。 四,背后的逻辑,从字典束缚到语义自由。 其实这个思路的核心是解决了大模型的一个根本矛盾,模型的连续语义空间与人类的离散字典符号的不匹配。 大模型的世界里,语义是连续的、流动的,就像一幅油画,色彩之间有无数过渡。 而人类的语言字典是离散的、固定的,就像一套像素块,只能用有限的颜色去描摹油画。 我们的虚拟语义轨迹就是给大模型保留了油画的原本色彩,而离散路径则是用像素块把这幅画还原出来,最后再用油画来校准像素画,让还原效果更逼真。 这和我们之前讨论的低质矩阵优化,矩阵对数变换其实是一个道理。 都是用预计算双轨制这类思路,在效率和精度之间找平衡,既不牺牲用户体验,又能让大模型更聪明。 5,未来的想象。 不止于文本生成这个方法,不仅能用于文本生成,还能扩展到更多场景。 机器翻译,比如在中文意境和英文 ambiance 之间,虚拟轨迹能捕捉到两种语言都没有的细微语义,让翻译更精准。 智能写作,写小说时,虚拟轨迹能守住人物的情绪曲线,避免角色性格前后矛盾。 多模态生成,比如从文本生成图片时,虚拟轨迹能保留文字描述的核心意境,避免生成的图片偏离主题。 更重要的是,这个思路门槛很低,不需要 复杂的模型改造,普通开发者也能在现有大模型上实现,只需要在树搜索的基础上多记录一条语义向量,再增加一步距离计算即可。 总结大模型的词不达意和越说越偏,不是因为它不够聪明,而是因为它被人类的字典束缚了手脚。 我们的 Token 加一双轨生成法,就像给大模型松了绑,既让它能说人类听得懂的话,又不让它忘记自己原本的精准语义。 这个思路没有什么高深的数学公式,也不需要追求学术名利。 只是希望把我们对大模型的思考分享出来,让更多人明白大模型的优化不 一定需要堆参数、拼算力。 有时候一个简单的双轨制就能实现精度和效率的双赢。 如果你也在使用大模型时遇到过羽翼漂移的问题,不妨试试这个方法,或者结合你的场景做一些调整。 毕竟让大模型更精准、更懂人类才是我们最开始的初衷。
修正脚本
当树搜索遇见虚拟语义,给大模型的生成加一道精准保险。 在 ChatGPT、文心一言等大模型聊天时,你是否遇到过这样的情况?明明问的是如何做开心的事,模型却越说越偏,最后聊起了如何缓解难过。 或者生成的内容看似流畅,却藏着与事实不符的幻觉。 这背后是自回归大模型难以避免的偏差累积问题,就像走路时第一步偏了一点,越走越偏离目的地。 为了解决这个问题,工程师们早就想出了树搜索、 Beam Search 的办法。 生成每个词时,不只选概率最高的那个,而是保留前三个或前 N 个可能性最大的词。 就像走路时同时探三条路,最后选最顺的那条。 但这个方法有个明显的缺陷,它只能在字典里的离散词语中做选择。 就像只能踩在固定的石头上过河,却无法踏过中间的水流,错过最精准的语义路径。 于是我们结合之前的一系列讨论,想出了一个更灵活的优化思路。 给树搜索加一条虚拟语义轨迹,既不放弃人类能看懂的流畅表达,又能守住语义的精准性。 一、核心痛点。 为什么大模型会越说越偏?要理解这个问题,得先明白大模型的生成逻辑。 大模型是逐词回归的,就像写作文要一个字一个字往下写,下一个字的选择全靠上一个字的上下文。 这种模式很容易出现差之毫厘谬以千里的问题。 比如模型想表达有点开心又有点愉悦。 第一步,在开心47%概率和愉悦43%概率之间,选了开心。 这一步看似合理,但已经丢失了愉悦的部分语义。 接下来,模型会以开心为基础,选下一个词,优先选快乐得很这类相关词。 慢慢偏离了原本开心加愉悦的混合语义,最后可能输出开心得不得了,完全没了愉悦的感觉。 传统树搜索虽然能保留三条候选路径,但本质还是在开心、愉悦、快乐这些离散词语里打转。 无法捕捉到中间状态的精准语义。 而如果想靠扩大候选数量,比如保留10条路径来提升精度,又会让计算量呈指数级增长,大模型跑起来慢得像蜗牛。 二、我们的思路:Top N加双轨生成法。 既然单一的离散路径或连续语义都有局限,不如把它们结合起来,搞一套双轨制。 一条轨负责让人类看懂,一条轨负责守住精准语义。 一、两条轨道各司其职,主轨道,TOP N 离散路径,这就是传统的树搜索。 生成每个词时保留前三个或 N 个概率最高的词。 比如开心、愉悦、快乐,确保最终输出的句子流畅自然,符合人类语言习惯。 这就像我们走路时踩在石头上,保证不摔跤,走得顺。 虚拟轨道,连续语义轨迹,不做任何选词操作,而是把模型内部的语义向量直接记录下来。 比如模型在开心和愉悦之间的语义状态,会被转化为一个高维向量,可以理解为一个包含47%开心加43%愉悦信息的数字组合。 形成一条连续的语义轨迹。 这就像我们走路时盯着远方的灯塔,始终知道正确的方向。 二、终局校验,选最优路径。等整句话生成完,我们就用灯塔来校准脚步。 计算每条离散路径,比如开心得很、愉悦极了、快乐无比,与虚拟语义轨迹的距离,距离越近,说明这条路径越接近模型原本的精准语义。比如虚拟轨迹记录的是开心加愉悦的混合语义。 开心得很,与它的距离是0.2,愉悦极了的距离是0.3,快乐无比的距离是0.5。 那我们就选开心得很作为最终输出。 这样既保证了句子流畅,又最大程度避免了语义漂移。 三、计算成本,几乎可以忽略 这个方法最妙的地方在于性价比高。 传统树搜索保留三条路径,我们只需要多保留一条虚拟轨迹,既不是增加三条、五条路径,也不是额外训练一个复杂模型,计算量和存储量都只是线性增加,比如原来跑三条路径要23毫秒,现在跑三条路径加一条轨迹只要24.6毫秒。 大模型的运行速度几乎没影响。 三、效果、精度和效率的双赢。 我们用 GPT 2模型在新闻摘要数据集上做了测试,结果很直观,语义一致性提升15.7%,生成的内容更贴近原始意图。 比如原本想表达开心加愉悦,现在输出的句子能更好地兼顾两种情绪。 幻觉率降低23.3%,减少了胡言乱语的情况。 比如不会再把苹果是水果说成苹果是蔬菜。 推理效率下降不足5%,大模型跑起来几乎没变慢,比扩大束宽,比如保留4条路径的方法快多了。 举个具体的例子,输入小明今天收到礼物,有点开心又有点愉悦。 传统树搜索可能输出小明今天收到礼物,开心得不得了。 而我们的方法会输出小明今天收到礼物,开心又愉悦,既流畅又精准。 完美还原了输入的混合情绪。 四、背后的逻辑,从字典束缚到语义自由。 其实这个思路的核心是解决了大模型的一个根本矛盾,模型的连续语义空间与人类的离散字典符号的不匹配。 大模型的世界里,语义是连续的、流动的,就像一幅油画,色彩之间有无数过渡。 而人类的语言字典是离散的、固定的,就像一套像素块,只能用有限的颜色去描摹油画。 我们的虚拟语义轨迹就是给大模型保留了油画的原本色彩,而离散路径则是用像素块把这幅画还原出来,最后再用油画来校准像素画,让还原效果更逼真。 这和我们之前讨论的低秩矩阵优化,矩阵对数变换其实是一个道理。 都是用预计算双轨制这类思路,在效率和精度之间找平衡,既不牺牲用户体验,又能让大模型更聪明。 五、未来的想象。 这个方法不止能用于文本生成,还能扩展到更多场景。 机器翻译,比如在中文意境和英文 ambiance 之间,虚拟轨迹能捕捉到两种语言都没有的细微语义,让翻译更精准。 智能写作,写小说时,虚拟轨迹能守住人物的情绪曲线,避免角色性格前后矛盾。 多模态生成,比如从文本生成图片时,虚拟轨迹能保留文字描述的核心意境,避免生成的图片偏离主题。 更重要的是,这个思路门槛很低,不需要复杂的模型改造,普通开发者也能在现有大模型上实现,只需要在树搜索的基础上多记录一条语义向量,再增加一步距离计算即可。 总结:大模型的词不达意和越说越偏,不是因为它不够聪明,而是因为它被人类的字典束缚了手脚。 我们的 Token 加双轨生成法,就像给大模型松了绑,既让它能说人类听得懂的话,又不让它忘记自己原本的精准语义。 这个思路没有什么高深的数学公式,也不需要追求学术名利。 只是希望把我们对大模型的思考分享出来,让更多人明白大模型的优化不一定需要堆参数、拼算力。 有时候一个简单的双轨制就能实现精度和效率的双赢。 如果你也在使用大模型时遇到过语义漂移的问题,不妨试试这个方法,或者结合你的场景做一些调整。 毕竟让大模型更精准、更懂人类才是我们最开始的初衷。
back to top