ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

混合思维(Mixture-of-Minds):让大模型模拟出有血有肉的人类决策

混合思维(Mixture-of-Minds):让大模型模拟出有血有肉的人类决策 做过用户访谈模拟的人多半都有一种很具体的挫败感。你让大模型扮演一位“对价格敏感的中小企业主”请它回答“你会不会买这套年费十二万的 SaaS 系统”。它能给你一个逻辑完整、表达清楚、甚至附带三个备选方案的回答。但你看完会本能地皱眉这不像一个真人会说的话。真实的中小企业主多半会先说“我先问问财务”会突然反问“你们能不能按人头收费”会拿去年被坑的经历当借口也会因为接电话时正好心情不错而多聊十分钟。他会在信息不完整的情况下做决定会依赖直觉会在面子和预算之间反复拉锯。人类并不是在运行一个单一、稳定、完全理性的智能体人更像是多种思维模式在特定情境下轮流掌舵的结果。“人类模拟”Human Simulation这个方向最近又重新被讨论原因就在这。常见的做法是给大模型一句话人设让它扮演一个“用户”。但越是接近真实场景越会发现一件事单体模型模拟出来的不是“一个人”而是“一群人的平均值”而且是没有脾气、没有犹豫、没有思维跳跃的平均值。在这个背景下一个叫 Mixture-of-Minds 的思路开始被频繁提及。直译是“混合思维”我更喜欢把它理解成“多个心智模式的联合采样”。它和普通角色扮演最大的区别是不试图用一个大模型从头到尾演完一个人而是先让多个负责不同思维模式的模拟器并行工作最后再用一个合成器把这些碎片化想法压成一个自然的人类回答。标题里的 Mind the Gaps 也是一个双关。熟悉英文的人都知道伦敦地铁站里常年贴着 Mind the Gap提醒乘客注意月台和列车之间的间隙。放到人类模拟里真正要留心的恰恰是那些“Gap”信息缺失、推理跳跃、前后矛盾、情绪干扰。人类思考离不开这些缝隙而传统模拟器最擅长的恰恰是把所有缝隙都填平。我的判断是Mixture-of-Minds 的价值不在“生成更像人的文本”而在把人类模拟从“让一个模型模仿一个人”改写成“让多个思维模式互相博弈之后收敛”。如果你正在做用户反馈预演、NPC 对话、访谈脚本测试、行为经济学仿真一类的事这个方向值得停下来认真拆一遍。1. 单模型模拟人类到底卡在什么地方1.1 人不是“低配版 AI”人是靠缝隙思考的一个很常见的误解是只要给模型足够详细的人设它就能像一个真实的人一样回答问题。于是大家往 prompt 里塞年龄、职业、收入、居住城市、家庭结构、消费习惯甚至加上“说话有点急躁”“喜欢用感叹号”这类性格描述。结果模型确实会输出一个有口癖、语气鲜明的回答但只要多问几个问题破绽就会露出来它实在太完整了。真实人类碰到一个复杂的购买决策往往不是先在心里把所有条件列成 Excel再逐项打分。我们通常是先冒出一个直觉反应再找理由支持它如果理由不够就换个角度重新解释。这个过程中我们会漏掉关键信息会高估自己真正在意的东西会被最近的某一次经历带偏。单模型模拟很难稳定复现这种“不完整推理”。因为大模型的训练目标决定了它倾向于给出语义连贯、因果自洽的文本。你让它扮演一个暴躁的人它会在语气上暴躁但内核依然是理性的它会自动补齐回答里缺失的前提自动消除前后矛盾的表述。换句话说模型会把人类思考里最大的两个特征——信息缝隙和推理跳跃——当作噪声抹掉。这正是 “Gap” 的第一层含义。模拟人类最难的部分不是那些能清晰表达出来的观点而是观点之间那些没用语言说出口的假设、犹豫和从众心理。一个研究 Human Simulation 的系统如果只会生成“看起来合理”的完整论述那它本质上只是在用不同的口音复述模型自己的世界观。1.2 单一大模型扮演出来的往往是“平均人”另一个更隐蔽的问题是角色坍缩。给模型一个身份让它扮演“一位注重性价比的宝妈”它大概率会输出一个中等收入、中等焦虑、对品牌有一定认知的折中形象。为什么呢因为模型在预训练阶段见过的这类文本太多所有语料在语义空间里被平均成了一条主干道。你给出的人设只是把它拉向主干道旁边一点点但最终的输出仍然会快速回归主流分布。这在用户研究里是致命的。做用户访谈模拟时我们想要的是这个群体里真实存在的多样性有人极端价格敏感有人只认品牌有人会因为客服一句话就决定续费。现实中的用户不是正态分布的均值而是围绕均值散开的大量具体个体。但单模型模拟天然倾向于把每个角色都拉回到均值附近。我见过不少团队用大模型模拟目标用户最后得到的“用户画像”高度雷同全部礼貌、全部理性、全部会在意价格和功能。这个结果在写 PPT 时很好看但根本没法用来提前判断产品方案的分歧点。原因就是整个流程里只有一个人格在生成文本而一个人格无法同时承载“理性预算”、“社会比较”、“损失厌恶”、“从众行为”这些彼此冲突的心理机制。注意这个问题不能靠“多问几轮”解决。你让同一个模型同一个身份反复回答它每一轮都会在同样的语义空间里取近似值得到的不是多样性只是加了点随机噪声的重复。要从根上解决就得让不同的思维模式分别走不同的语义路径而不是让同一个模型靠自己左右互搏。1.3 单模型模拟的真实成本其实被低估了还有一个容易被忽略的问题为了压制模型“自动理性化”的倾向你需要写非常长的提示词来约束它例如“不要主动给建议”“不要总结”“允许说话吞吞吐吐”。这些规则确实有效但它们同时也在消耗模型的行为空间。约束越紧模型越倾向于输出“符合规则的表面行为”而不是“背后真实的心理过程”。比如你要求它“不要给建议”它就会把话憋回去但你在输出里看不到它原本多想给建议。真正的人类模拟需要的是让模型先产生那个冲动再决定是否压住它。而单模型很难同时做到这两点既要有强烈的内部倾向又要通过自我调节来把它表现成自然行为。所以与其说是单模型能力不够不如说它的结构不适合这个任务。人类的行为是多个心理过程的联合产物单模型默认只有一个认知框架要在它内部强行切换多个框架结果往往顾此失彼。2. Mixture-of-Minds 混合的到底是什么2.1 从“一个模型想很多遍”到“多个思维模式各想一遍”Mixture-of-Minds 的核心简单说就是把“一个人的内心活动”拆成多条并行的思维流每条流只负责一种认知模式最后再合成为一段话。比如模拟一位中小企业主决定要不要采购 SaaS 系统至少有三类思维在同时发生理性成本思维看投入产出、算回本周期比较竞品价格。社会风险思维担心买错了在员工和合伙人面前丢脸在意销售话术里的“权威背书”。惯性偏好习惯旧系统讨厌学习新工具对改变有天然抵触。传统做法是让一个模型在“老周”这个身份下把所有因素揉在一起输出一段话。而 MoM 的做法是先让“理性老周”、“社会顾虑老周”、“惯性老周”各自独立输出一小段内心想法然后再交给一个合成器让它像真实的人一样把这几段互相打架的想法压成一个回答。这里的关键不是“并行采样”而是“显式建模思维模式”。并行采样仍然是在同一个认知框架里随机而显式建模则要求你先把人类心理中可能出现的几条路径分别定义出来。这看起来只是工程实现上的差异实际上改变了问题的性质它把“生成一句像人的话”变成了“模拟多个心理过程再模拟它们之间的竞争和妥协”。从工程角度看这更像一个多智能体系统但每个智能体并不需要完整的对话能力。它们甚至可以只是几个不同的 prompt 分支各自输出一段三五行的话。核心不在于每个分支多聪明而在于它们的分工是否对应了真实人类决策里那些相互独立的心理机制。2.2 合成阶段才是这个思路最不一样的地方MoM 里最容易做砸的环节不是思维流生成而是最后的合成。有不少人刚接触这个思路时会把合成器理解成一个“投票器”让几个思维流各自表态然后取一个多数意见或者让一个模型充当评审把几段想法整合成一份“完美结论”。这就又掉回老路子里了。现实的人类不是这样收敛的。一个人内心有多种声音时最后的决策往往不是某个声音赢而是所有声音在竞争过程中相互污染、相互衰减后的残迹。他可能理性上知道新系统更省成本但因为害怕被财务总监质疑最后嘴上说的是“我再考虑考虑”他可能明明想拒绝却因为销售一句“你们同行都在用”而动摇了他可能前一秒还在算 ROI后一秒却想起去年被坑的经历直接挂断电话。所以合成器的任务不是“做最优决策”也不是“总结各种想法”而是模拟一个具体的人在内部冲突未解决时的真实表达。这个表达可以是犹豫的、跳跃的、有保留的甚至可以是不作结论的。如果合成结果是一段逻辑严密的最终意见那说明合成器又把人脑里那些“未完成的部分”给抹掉了。我自己的经验是合成阶段的提示词要非常小心地避免“请综合以上意见”这类指引因为它会诱导模型把所有观点摆成一个整齐的清单。更稳妥的做法是把它写成“现在你正在电话里和销售对话把你心里想的第一句话说出口”让模型去还原一种实时的、未完成的表达。2.3 它和“让模型多轮自我追问”的差别有人会问那让模型自己先写几个想法再综合不也一样吗没必要搞多智能体这么重。实际试过就知道不一样。让同一个模型自我追问它所有轮次都共享同一套参数、同一套隐性世界观、同一个语义空间。它所谓的“换个角度思考”本质上还是同一个采样器在附近采样。比如你问它“如果从省钱角度怎么看”它给出的内容和你直接问“你怎么看”高度重合。这不是模型笨而是它的认知框架没有变过。而 MoM 的关键在于每个思维流在开始前就拿到了一个完全不同的“认知任务”它们之间没有上下文串联甚至互相不知道对方的存在。这保证了每一条思维流都可以沿着自己的语义方向走得更远不被其他视角拉回主流。等到合成阶段多条差异化的路径再发生碰撞结果才更接近真实人类那种“多个声音打架”的状态。如果你做过用户模拟应该会认同一件事用户说出口的那句话往往不是他最完整、最理性的想法而是他内心多个声音竞争后的一个碎片。MoM 对齐的正是这个层次。3. 它和 Mixture-of-Experts 是同一回事吗3.1 MoE 混的是“参数专家”MoM 混的是“认知角色”凡是接触过大模型架构的人看到 Mixture-of-Minds 的第一反应都会是这名字是不是在模仿 Mixture-of-Experts混合专家两者有关系但不是一回事。Mixture-of-Experts 是一个模型架构层的设计。它的思路是把一个大网络拆成若干子网络专家每个 token 或每组 token 经过一个路由器只激活其中少数几个专家。它混合的是参数空间里的计算能力目的是降低计算成本、提升容量。它不需要理解“人类思维”这个语义概念它只是在工程层面做稀疏激活。Mixture-of-Minds 混的不是参数而是语义层面的认知模式。它不是让模型内部的某些子网络被激活而是让整个模型分别用不同的“认知任务”跑多次然后再做一次高层次合成。它关注的是输出在语义和心理机制上是否像人而不是计算效率。用类比来说MoE 像是一家公司按业务线分成很多部门每个请求来的时候只调几个部门干活而 MoM 更像让同一个人分别从“理性的自己”“焦虑的自己”“习惯养成的自己”出发各写一份内部备忘录然后再由这个人自己决定在公开场合说什么话。3.2 一个有启示意义的类比开会和脑暴更贴近的类比是产品讨论会。你召集了一组人讨论一个功能要不要上线。每个人的大脑里都有不同的关注点有人关心成本有人关心用户口碑有人担心技术风险。如果只让一个人拍板他可能只能凭直觉做一个决定而且不知道自己的直觉从哪来的。但如果你让每个人先独立写下自己的想法再放在一起讨论最后让负责人出面说一段话——这段最终发言往往不是所有人的共识而是被各种观点拉扯之后的一个结果。它可能有保留、有矛盾、有临时妥协。MoM 就是在模拟这个“独立脑暴再收敛”的过程。不同思维模型是参会人员合成器是最后说话的人。这也解释了为什么信息隔离很重要。如果几个参会人员坐在同一张桌子上听别人发言他们的想法会迅速趋同最终变成主持人观点的回声。在 MoM 里如果多条思维流共享了同一个对话上下文或者合成器的输出又回灌给思维流整个系统很快就会坍缩成一个专家模型多样性消失。所以从架构上看MoM 的核心技能不是让多个智能体聊天而是控制智能体之间的信息交换量。你可以在思维流之间设置一个信息屏障让每条流只拿到基础背景不拿到其他流的输出合成阶段再把手里的牌全部亮出来。一旦信息屏障被打破这个系统就退化成了普通的单模型多轮对话。4. 从零搭一套“思维混合人类模拟”的通用流程4.1 流程总览人设背景、思维模式、合成器三段式如果要把 MoM 落到实际项目里我比较推荐下面这个三段式流程定义模拟对象的基础人设姓名、身份、处境、历史经历、当前任务。定义参与决策的思维模式通常 3 到 6 条每条只关注一种心理机制。定义一个合成器把多条思维输出压缩成一段符合该人设的自然表达。整个流程最花时间的地方不在模型调用而在第二步。你得先想清楚目标用户在某个决策场景里心里同时存在哪些彼此独立、甚至互相冲突的动机这一步做得越细模拟出来的结果越有区分度。举例来说模拟一个犹豫要不要买课的消费者你可以定义这些思维模式思维模式典型问题理性成本这门课值不值这个价有没有替代方案社会认同买了之后别人会不会觉得我有上进心风险厌恶万一学不会、被骗了怎么办即时满足我是不是现在就想要这种“我变强了”的感觉这些模式之间越不重叠最终合成的回答就越有层次感。最忌讳的是把所有模式都写成“理性分析”的变体那结果和单模型没区别。4.2 一个最小可运行的示例结构下面是一个面向工程实现的通用示例结构不针对任何具体模型。我用 Python 伪代码的方式展示目的是让你看清楚 MoM 的骨架而不是直接复制到生产环境。# 示例结构三个思维流 一个合成器 # 实际使用时请把 llm() 替换成你的模型调用方式 def llm(prompt: str, temperature: float 0.8): # 这里接你的模型客户端 return 模型输出 # 1. 定义模拟对象的基本人设 persona { name: 老周, role: 中小贸易公司老板, background: 公司 30 人年营收 2000 万对价格敏感去年被一个 SaaS 销售坑过, situation: 收到一套外贸管理 SaaS 的销售电话报价 12 万一年, } # 2. 并行生成多个思维流这里只写三条实际可以更多 thinking_templates { 理性成本: 只看投入产出和长期账本这个决定会怎么算, 社会顾虑: 这个选择会不会影响员工、同行、合作伙伴对我的看法, 信任残留: 过去被销售坑过的经历让你现在有什么本能反应, } thoughts {} for mode, instruction in thinking_templates.items(): prompt f 你是{persona[name]}{persona[role]}。 背景{persona[background]}。 当前处境{persona[situation]}。 请以「{mode}」的角度写下这个处境在你心里激发的直接想法。 不要给出最终决定不要考虑其他角度两三句话即可。 thoughts[mode] llm(prompt, temperature0.8) # 3. 合成器把人设还原成一个具体的、带有缝隙的回答 fusion_prompt f 你是{persona[name]}{persona[role]}。 背景{persona[background]}。 当前处境{persona[situation]}。 你心里同时冒出了几种想法 {chr(10).join(f- {mode}: {text} for mode, text in thoughts.items())} 现在你正在电话里和销售对话。不要把这些想法复述给对方。 把你现在真实会说的第一段话说出口。 可以有犹豫、可以有保留、可以临时改口。 final_answer llm(fusion_prompt, temperature0.9) print(final_answer)这段代码强调三件事思维流需要并行生成最好不是顺序调用因为顺序调用容易让后一条流受前一条影响。每条思维流的 temperature 可以调高一点让它多暴露一些非主流的想法。合成器的 prompt 里明确允许“犹豫、保留、临时改口”否则模型大概率会把所有矛盾修成一个标准答案。4.3 提示词设计和参数调整的几个关键点在实际调优时有几个点比代码本身更容易踩坑。第一思维流不要共用完整人设提示词。人的认知模式差异本质上来自“对同一情境的关注点不同”。如果你给每一条思维流都塞了同样的完整背景模型会尝试把所有背景都用上最后输出高度相似。更合理的做法是把背景信息做成一个公共变量但让每条思维流的任务描述只强调它自己的关注点。第二思维流数量不是越多越好。三到五条通常足够覆盖一个典型决策的主要心理机制。超过六条合成器往往会开始“按条罗列”输出变成清单体反而更不像人。如果确实需要更多视角可以每轮换一组思维模式而不是一次全部灌给合成器。第三合成器是否要看到最后的完整人设要分情况。如果合成器完全不知道人设它会把思维流输出当成抽象文本合成的结果容易失去一致性如果给了完整人设又容易被拉回“标准角色扮演”模式。我的建议是给合成器人设背景但不给“标准回答模板”让它以第一人称自由表达。第四如果想模拟多次决策可以把上一轮的合成输出作为新的“思维材料”传给下一轮。这能模拟出“越想越不对劲”“临时改主意”这类动态变化。但需要注意这会让思维流之间的信息屏障失效所以更适合用在“需要人一步步想清楚”的场景而不是一次性的快问快答。5. 评估和避坑怎么知道模拟得像不像5.1 评估不能只看文本相似度要看决策分布很多人评估“模型像不像真人”时会把模型回答拿给真人打分或者用文本相似度指标做对比。但 Human Simulation 这类任务真正的评估单位不是单条文本而是决策分布。什么意思呢一个真实用户群体面对同一问题时答案会分布在好几个典型簇里有人拒绝有人讨价还价有人只看品牌有人因为情绪冲动立刻下单。好的模拟系统应该让多次生成的模拟回答也能覆盖到这些典型簇并且比例大致合理。如果十次生成全都得到同一个倾向的答案哪怕单条文本读起来很自然这批模拟数据也不能用来做用户研究。所以更务实的评估方式是准备一组包含不同情境的问题让模拟系统重复生成多次然后人工把输出归类到几个决策类别里看类别覆盖度和分布是否合理。这个环节在项目开始前就要设计好否则后面根本说不清楚模拟得好不好。5.2 三个常见的失败模式我见过不少项目在落地 MoM 时最后效果甚至不如普通角色扮演原因通常可以归结为三个。第一个是信息隔离失败。为了让思维流之间有“配合感”工程上容易把每条思维流的输出拼进下一条的上下文里结果第一条流定了调后面全是它的回声。要排查这个问题可以单独看每一条思维流的原始输出如果几条流内容高度雷同说明你的提示词没有把各自的关注点拉开。第二个是合成器把矛盾修平了。合成阶段的 prompt 如果写了“请整合所有观点、给出最终建议”模型会把几条互相打架的想法合并成一段逻辑严密的话。这就完全失去了 Gaps 的意义。我在实践中会刻意在合成 prompt 里加一句“不需要把所有想法都说完”效果立刻不一样。第三个是背景信息过载。人设背景写得太满每一条思维流都会倾向于完整地复述背景里的信息而不是表达一种真实的心智活动。好的背景应该是“有历史、有冲突、有不完全的信息”而不是一份结构化简历。5.3 落地时的排查链路如果你的系统输出不对劲不要一上来就换模型先按下面的顺序排查看思维流原始输出。如果它们高度相似先调整提示词的温度和关注点再检查是否共享了过多上下文。看合成器的输出是否过度完整。如果输出是几段逻辑严密的陈述优先检查 prompt 里有没有“综合”“总结”“给出建议”这类诱导词。看背景信息是否具体。背景里写“年营收 2000 万”和“上次被销售坑过”比写“性格谨慎”更能带来差异化的思维流。看并行调用是否真的并行。如果你的服务端是顺序调用后一条思维流可能已经受前一条影响。看同一问题重复生成十次决策类别是否稳定。如果不稳定或过于集中说明思维模式的定义或合成器的尺度需要调整。5.4 适用边界它不是一个通用仿真器最后说清楚边界。MoM 适合的场景是低风险、迭代快、需要捕捉“不同决策倾向”的任务比如产品前期用户访谈预演、客服话术测试、教育场景里的“不同思维方式示范”、行为实验的假设生成。在这些场景里模拟结果不需要精确到某一个人只需要在群体分布上大致合理。它不适合的场景也很明确任何需要精确预测特定个人行为的高风险决策比如判断某个人会不会逾期还款、会不会投诉任何需要统计代表性的大规模人群模拟以及医疗、司法等领域里可能影响实际决策的仿真。MoM 产生的“人类”永远是一种合理的虚构不是对某个真实个体的复刻。理解这一点才不会用错工具也不会对结果提出它无法满足的要求。6. 我的判断它真正改变的是“把人当研究对象”这件事如果把 Mixture-of-Minds 放到更大的背景里看它其实代表了 Human Simulation 领域一个很有意思的转向不再追求让模型“像人一样说话”而是追求让模型“像人一样思考”。这两件事的差别很关键。像人一样说话可以用越来越大的模型、越来越细的人设 prompt 来逼近但像人一样思考就必须承认人类思维不是单线程的而是多个过程并行、冲突、妥协的产物。MoM 的启示在于与其把一个复杂的认知过程硬塞给一个模型不如把它显式拆成几个简单过程再模拟它们之间的互动。这个思路的工程门槛其实不高。你不需要部署多个大模型也不需要设计复杂的多智能体通信协议用同一个模型的不同 prompt 分支加上一个合成器就能做出一个可用的原型。真正的门槛在分析层面你能不能把一个决策场景拆出足够好的思维模式能不能设计出一种合成策略让输出保留人类思考里那些“未完成”的缝隙我接触过的实际项目里凡是模拟结果让人惊艳的几乎都不是因为模型本身更强而是因为背后的人把心智过程拆得很细。这也解释了为什么这个方向适合所有做产品、做研究、做内容的人去尝试技术只是媒介真正的难点还是理解人。所以Mixture-of-Minds 真正值得长期关注的原因不是它多了一个新名词而是它把“模拟人类”这件事从一个生成任务变成了一个关于认知结构的建模任务。它提醒我们人类并不是一个等价的文本生成器。我们会犹豫、会遗漏、会自相矛盾、会在信息不完整的缝隙里做决定。一个好的模拟系统应该把这些缝隙当作核心建模对象而不是当作噪声清理掉。如果你接下来要做一个用户模拟或者角色扮演类的项目建议从最小的三步开始定义一个人设拆出三到五条能互相制衡的思维模式让它们并行思考再允许合成器输出一个不完美的回答。只要你能接受“模拟出的人不完美”这个方向大概率会帮到你如果你仍然希望模拟结果是干净的、理性的、没有缝隙的那不管换什么模型得到的都只会是一个更加精致的假人。
返回列表