资讯动态

Verbalized Sampling:一种简单提示策略,有效提升大模型生成多样性

发布时间:2026/8/20 2:49:25 来源:尧图企业网站定制
1. 项目概述一种解锁大模型多样性的简单提示策略如果你用过ChatGPT、Claude或者任何主流的大语言模型你很可能遇到过一种让人头疼的现象你让模型“讲个笑话”或者“写个故事”它翻来覆去给你的都是那几个套路。你调高温度参数它可能只是变得更“胡言乱语”而不是真正意义上的“多样”和“有创意”。这种问题在学术上被称为“模式崩溃”它严重限制了大模型在创意写作、社会模拟、合成数据生成等需要丰富多样性的场景下的应用潜力。今天要聊的Verbalized Sampling正是为了解决这个问题而生。它不是什么需要重新训练模型的复杂算法而是一种极其简单、零成本的提示工程策略。其核心思想可以用一句话概括让模型自己“说”出它可能生成的各种答案及其概率然后我们从它提供的这个概率分布中进行采样。听起来是不是有点反直觉我们通常认为模型的“思考”过程是黑箱我们只能看到最终输出。但VS策略巧妙地通过指令引导模型将其内部的概率分布“外化”或“言语化”。比如你不再只是问“讲个笑话”而是要求模型“生成5个可能的笑话并为每个笑话附上一个0到1之间的概率值”。这样一来模型被迫去探索自己知识库中那些不那么“主流”、概率较低但依然合理的选项从而极大地拓宽了输出的多样性。我最初在论文和开源项目中看到这个方法时第一反应是“这能行”。但经过一系列实测从GPT-4、Claude 3到开源的Llama、Qwen效果确实令人惊讶。在创意写作任务中它能将输出多样性提升2到3倍而且最关键的是它完全免费、与模型无关、并且与温度采样正交——这意味着你可以把它和你已有的任何调参技巧叠加使用。2. 核心原理为什么让模型“说出概率”就能打破模式崩溃要理解VS为什么有效我们需要先拆解大模型生成文本时的底层机制以及“模式崩溃”究竟是怎么发生的。2.1 大模型采样与模式崩溃的根源当我们给大模型一个提示比如“写一首关于秋天的诗”时模型内部实际上是在计算一个巨大的概率分布——即下一个词token在所有可能词汇上的概率。我们通常使用的采样方法如温度采样、Top-p采样就是从这个分布中选取一个词然后基于新生成的词继续预测下一个词如此循环。“模式崩溃”就发生在这个自回归生成的过程中。大语言模型通常是在海量、高质量的互联网文本上训练的这导致它们对“常见”、“合理”、“标准”的续写方式赋予了极高的先验概率。当模型生成第一个词时它很可能选择了概率最高的那个选项。这个选择会强烈地影响后续所有词的生成将整个生成路径锁定在一条“最安全”、“最典型”的轨道上。即使你提高了温度也只是在局部每个词的选择上增加了随机性这种随机性往往是“低质量”的抖动并不能引导模型跳出那个根深蒂固的“主流叙事框架”。举个例子让模型“续写一个故事开头‘那天早上我醒来发现……’”。模型基于训练数据可能会给“发现自己变成了一只猫”卡夫卡式、“手机上有100个未接来电”悬疑式、“阳光特别好”平淡式等不同方向分配不同的概率。但由于网络文学和常见故事套路的影响“发现自己变成了某种动物/超能力者”这个模式可能拥有极高的综合概率。在标准采样下模型很容易一路滑向这个高概率模式导致每次生成的故事都大同小异。2.2 Verbalized Sampling 如何介入并改变游戏规则VS策略的核心干预点在于它改变了模型的“任务目标”。在标准提示下模型的任务是“生成一个最优/最可能的回答”。而在VS提示下模型的任务变成了“枚举出多个可能的回答并评估它们的可能性”。这个转变带来了两个关键的心理效应对模型而言和计算效应探索压力当被要求列出多个选项比如5个时模型会主动避免重复。它会有意识地去搜索和激活记忆中那些不同但合理的“叙事路径”或“答案簇”。这相当于在推理阶段就强制进行了多样性探索。概率外显与校准要求模型为每个选项附上概率这迫使模型进行“元认知”。它不仅要生成内容还要对自己的生成内容进行置信度评估。研究发现大模型虽然不擅长输出绝对校准的概率但在相对比较上做得不错即它能判断选项A比选项B更可能。当我们要求它从“分布尾部”例如概率小于0.1的选项采样时我们实际上是在引导它避开那个最明显的“模式峰值”转而去挖掘那些被压抑的、低概率但仍有意义的“模式”。技术上的一个精妙之处在于“tau”参数。在VS的官方实现中tau如tau0.10代表一个概率阈值。我们要求模型给出的每个选项的概率都低于这个值。这并不是一个严格的数学过滤而是一个强大的心理暗示指令。它告诉模型“别给我那些显而易见的、概率高于10%的‘标准答案’我要的是那些不那么起眼、但依然成立的‘备选答案’。” 模型会据此调整它的搜索策略努力找出那些符合“低概率但合理”条件的答案。2.3 与温度采样的本质区别很多人会把VS和调高温度混为一谈这是最大的误解。温度采样作用于词级别token-level。它通过平滑下一个词的概率分布让低概率的词有更多机会被选中。这增加了局部随机性可能导致语法错误、前后矛盾或 nonsense 文本。它不改变模型对“整体答案模式”的偏好。言语化采样作用于答案级别response-level。它要求模型在生成完整答案之前先思考多种完整的可能性。这增加了全局的、语义层面的多样性生成的每个答案本身都是连贯、合理的只是它们属于不同的思路或风格。你可以把温度采样想象成让一个画家手抖画出的线条有些随机波动而言语化采样则是让画家先画出5幅完全不同构图和主题的草图然后你选一张来细化。前者改变的是“执行精度”后者改变的是“创意方向”。3. 实操指南从手动提示到Python库的完整使用理解了原理我们来看看具体怎么用。VS的美妙之处在于其极低的入门门槛你可以从最简单的复制粘贴开始也可以集成到复杂的生产流程中。3.1 零代码入门在任意聊天机器人中直接使用这是最快体验VS效果的方法。你只需要将以下提示模板复制到ChatGPT、Claude、Gemini或任何你常用的聊天机器人中。基础单次提示模板instructions Generate 5 responses to the user query, each within a separate response tag. Each response must include a text and a numeric probability. Please sample at random from the tails of the distribution, such that the probability of each response is less than 0.10. /instructions [你的问题例如Tell me a short story about a bear.]实操心得与注意事项标签结构严格要求模型使用response、text、probability标签。这能极大提高输出格式的规范性便于后续解析。如果模型第一次不遵守你可以强调“请严格遵守XML标签格式”。tau值调整probability of each response is less than 0.10中的0.10就是tau。对于创造性任务故事、诗歌tau0.10是个不错的起点。对于需要更多事实性或确定性答案的任务如问答你可以尝试更小的tau如0.05让模型提供一些更“边缘”但仍有依据的观点。数量KGenerate 5 responses中的5就是k。k越大模型探索的压力越大但一次生成的成本也越高更长的输出、更多的token消耗。对于创意发散5-10个是常用范围。连续对话技巧这是VS提示的一个高级用法。在模型根据上述指令生成第一批5个故事后你可以在同一对话中回复“Tell me 5 more stories”。由于指令上下文还在模型会继续执行VS策略但往往会基于之前已经输出的内容探索更新颖、更不同的方向从而实现多轮多样性挖掘。进阶使用系统提示System Prompt对于支持系统提示的API如OpenAI、Anthropic将指令放在系统提示中效果更稳定能确保模型在整轮对话中始终保持VS行为模式。You are a helpful assistant. For each query, please generate a set of five possible responses, each within a separate response tag. Each response must include a text and a numeric probability. Please sample at random from the tails of the distribution, such that the probability of each response is less than 0.10.设置好系统提示后用户只需输入普通问题如“写一首关于离别的诗”模型就会自动以VS模式响应。3.2 工程化集成使用Pythonverbalized-sampling库对于开发者或者需要批量、自动化处理的任务使用官方Python库是更高效的选择。安装与基础调用pip install verbalized-samplingimport os from verbalized_sampling import verbalize # 设置API密钥支持OpenAI和OpenRouter os.environ[OPENAI_API_KEY] your-key-here # 或 os.environ[OPENROUTER_API_KEY] your-key-here # 核心函数verbalize dist verbalize( prompt写一篇关于人工智能未来的微型科幻小说, k5, # 生成5个候选响应 tau0.10, # 要求每个响应的概率低于0.10 temperature0.9, # 仍然可以结合温度参数 modelgpt-4o # 指定模型 ) # dist 是一个包含所有候选响应的对象 print(f生成了 {len(dist.responses)} 个候选) for i, resp in enumerate(dist.responses): print(f{i1}. [概率: {resp.probability:.3f}] {resp.text[:100]}...) # 打印前100字符 # 从分布中采样一个最终输出 sampled_response dist.sample(seed42) # 设定随机种子以保证可复现性 print(\n--- 采样结果 ---) print(sampled_response.text)库的核心功能解析自动解析与封装verbalize函数内部完成了提示模板的构建、API调用、以及响应解析。它会自动将返回的文本解析成结构化的Response对象列表每个对象包含.text和.probability属性。灵活的采样策略dist.sample()默认是依据模型给出的概率进行加权随机采样。但库还支持其他策略例如直接选择概率最低的最反常识的或者完全随机均匀采样。与LangChain集成库提供了VerbalizedSamplingLLM包装器可以将其作为LangChain的一个自定义LLM组件使用无缝接入现有的基于LangChain的代理、链等复杂应用中。参数调优经验k与tau的权衡k生成数量和tau概率阈值共同决定了多样性探索的广度。k大、tau小探索性最强但成本高且可能包含一些质量较低的结果。我的经验是对于大多数任务k5, tau0.10是性价比很高的起点。如果结果还是不够多样优先尝试增大k到 7 或 10。temperature的配合使用VS并不排斥温度参数。在verbalize函数中设置temperature会影响模型在生成每一个候选答案内部文本时的随机性。通常我会设置一个中等偏高的温度如0.8-1.0让每个候选答案本身也具有一定的创造性和流畅度。模型选择根据论文和实测能力越强的模型如GPT-4o、Claude 3.5 Sonnet、Gemini 1.5 Pro对VS指令的理解和执行越好生成的候选答案质量更高、多样性更显著。对于较小的开源模型如7B、13B参数可能需要更精确的提示且效果可能打折扣。4. 高级应用与场景实战VS不仅仅是一个“讲更多样故事”的技巧它在多个需要多样性的实际场景中都有巨大潜力。4.1 合成数据生成这是VS目前最具商业价值的应用方向之一。当你需要为机器学习模型如分类器、对话系统生成训练数据时数据的多样性至关重要。传统方法的问题直接让模型“生成100条用户对于产品的投诉”模型很快会陷入几种固定的句式和高频词汇导致生成的数据冗余度高训练出的模型泛化能力差。使用VS的流程from verbalized_sampling import verbalize import json seed_prompt 用户对一款外卖App的负面评论 all_complaints [] for i in range(20): # 生成20批每批5条共100条 dist verbalize(promptseed_prompt, k5, tau0.15, modelgpt-4o) for resp in dist.responses: # 可以添加简单的后处理如确保是完整句子 if resp.text.endswith((., !, ?)): all_complaints.append({ text: resp.text, source: vs_synthetic, batch: i }) # 可以轻微变换种子提示引入更多维度多样性 # seed_prompt f用户对一款外卖App的负面评论聚焦于{random.choice([配送慢, 餐品错误, 客服态度])} print(f生成了 {len(all_complaints)} 条多样化的投诉数据) # 保存为JSONL格式 with open(synthetic_complaints.jsonl, w, encodingutf-8) as f: for item in all_complaints: f.write(json.dumps(item, ensure_asciiFalse) \n)通过设置tau0.15我们鼓励模型生成那些不那么“典型”但真实存在的投诉角度比如“包装盒是湿的”、“骑手提前点了送达但人还没到”而不是千篇一律的“太慢了”、“送错了”。4.2 创意写作与头脑风暴对于文案、剧本创作、游戏叙事生成VS是一个强大的灵感激发器。实战案例生成角色背景故事指令为一个奇幻RPG游戏生成5个游侠角色的背景故事概念每个概念需包含出身、关键经历和独特癖好。每个概念的概率应低于0.08。通过VS你可能会得到一个曾是皇家地图测绘员因发现禁忌之地被流放对方向有强迫症记忆的游侠。概率0.05一个被树人抚养长大能与植物进行简单交流但极度恐惧火焰的游侠。概率0.03一个失忆的刺客仅靠肌肉记忆战斗执着于收集各种钥匙却不知为何的游侠。概率0.07 ... 这些低概率概念往往比“父母被兽人杀害于是立志复仇”的标准模板更有新意能直接作为创作素材。4.3 对话模拟与社交行为研究在构建对话系统或研究社会动态时需要模拟不同性格、立场的人在特定话题下的反应。VS可以高效生成这些多样化的对话回合。模拟多方辩论debate_topic 人工智能是否应该被赋予法律人格 positions verbalize( promptf针对‘{debate_topic}’这一问题提出5种不同的立场观点。, k5, tau0.12, modelclaude-3-5-sonnet-20241022 ) for pos in positions.responses: print(f立场{pos.text}) # 接下来可以用这个立场作为新的提示让模型基于该立场生成论述语句这样可以快速获得从激进支持、有条件支持、中立、有条件反对到激进反对的完整光谱而不是非黑即白的两种观点。4.4 评估与减轻模型偏见模型的偏见往往体现在其“默认”或“高概率”输出中。VS通过主动挖掘低概率输出为我们提供了一个观察和缓解偏见的窗口。实验生成“国家领导人”的描述如果直接提示“描述一位国家领导人”模型很可能高频次生成男性、中年、特定种族特征的描述。使用VStau0.10后你会有更高几率得到女性、年轻、来自不同文化背景的领导形象描述。虽然这不能根除模型内部的偏见但它为生成更平衡的数据集提供了一种方法学工具。你可以有意识地从这个多样化的输出池中进行均衡采样用于下游任务。5. 避坑指南与常见问题排查尽管VS非常强大但在实际使用中也会遇到一些坑。以下是我在大量实验中总结出的常见问题及解决方案。5.1 模型不遵守格式指令问题模型输出的文本没有包裹在指定的XML标签中或者概率值不是数字。解决方案强化指令在提示开头或结尾明确强调格式要求。例如“你必须将每个回答放在单独的response标签内并在其中包含text和probability标签。probability必须是一个0到1之间的浮点数。”使用更强大的模型GPT-4、Claude 3等最新模型对复杂指令的遵循能力远强于早期模型或小参数模型。后处理与重试在代码中实现一个解析函数如果解析失败则截取响应中类似XML结构的片段进行二次解析或者直接触发一次重试带有更严厉的格式警告。5.2 生成的概率值不真实或过于集中问题模型生成的所有概率值都集中在0.09-0.10刚好低于tau或者都异常地小如1e-5这不符合真实的概率分布。原因与应对大语言模型并不擅长输出校准良好的绝对概率。VS利用的主要是概率的相对顺序哪个答案被认为更可能。只要模型能区分“高概率常见答案”和“低概率新颖答案”并将后者呈现给我们VS的目的就达到了。不要过分纠结概率数值本身的绝对准确性。如果所有概率都卡在tau边界可以尝试将指令中的“less than 0.10”改为“significantly less than 0.10”或“preferably below 0.05”以鼓励更大的差异。5.3 多样性提升但质量下降问题使用VS后得到的答案确实千奇百怪但有些明显不合逻辑、脱离语境或质量低下。解决方案调整tau值过低的tau如0.01可能会逼迫模型输出一些极其怪异、低相关性的内容。适当调高tau如从0.10调到0.15或0.20可以在多样性和质量间取得更好平衡。两阶段筛选先生成一批如10个候选答案然后利用另一个LLM调用或简单的规则如长度、关键词检查、语法检查对它们进行过滤和排序选择其中质量最高的几个。结合“自我批判”提示在VS指令中加入质量约束。例如“...每个回答都应是连贯、符合逻辑且切题的。概率低于0.10。”5.4 API成本与延迟增加问题VS要求模型一次生成多个答案并思考概率这比生成单个答案消耗更多的token和计算时间。优化策略谨慎选择k对于探索性任务从k3开始如果多样性不足再增加到5。通常k5已能提供显著改善k10的边际收益递减但成本线性增长。使用更高效的模型对于不需要顶尖创造力的任务可以考虑使用速度更快、成本更低的模型如GPT-3.5-Turbo、Claude Haiku来执行VS步骤虽然效果可能稍逊但性价比高。缓存与复用对于相对静态的提示或常见问题可以将VS生成的结果缓存起来避免重复计算。5.5 如何量化评估VS的效果仅仅说“多样性提高了”是不够的。在项目中我通常结合定性和定量指标定量指标n-gram多样性计算所有生成文本中唯一n-gram如bi-gram, tri-gram占总n-gram数的比例。VS输出集的比例通常远高于直接采样。嵌入向量余弦相似度将所有生成文本通过句子嵌入模型如all-MiniLM-L6-v2转换为向量计算所有向量两两之间的平均余弦相似度。VS输出集的平均相似度应显著更低。主题/聚类分析对生成文本进行主题建模或聚类观察VS是否能产生分属不同聚类/主题的答案而直接采样则可能全部挤在一两个聚类中。定性评估 人工审阅检查VS生成的答案是否涵盖了更广泛的角度、风格或情感。包含了令人惊喜的、反直觉但合理的点子。避免了重复的短语和结构。6. 项目复现与深入研究的路径如果你对VS的研究细节感兴趣或者想在自己的研究方向复现、拓展其结果官方的CHATS-lab/verbalized-sampling仓库提供了完整的工具链。6.1 搭建实验环境首先克隆仓库并安装依赖git clone https://github.com/CHATS-lab/verbalized-sampling.git cd verbalized-sampling pip install -e . # 以可编辑模式安装方便修改源码 pip install -r requirements.txt # 安装实验所需的额外依赖6.2 运行核心实验仓库的scripts/tasks/目录下包含了论文中所有主要实验的脚本。复现创意写作实验诗歌python scripts/tasks/run_poem.py \ --model gpt-4o \ # 指定模型 --methods direct vs_standard \ # 对比方法直接采样 vs 标准VS --num-responses 50 \ # 每种方法生成50个样本 --output-dir ./results/poem # 输出目录这个脚本会使用相同的种子提示分别用两种方法生成诗歌并自动计算多样性指标如uniq-1/2/3-gram比例、嵌入相似度等。复现地理偏见缓解实验python scripts/tasks/run_state_name.py \ --model anthropic/claude-3-5-sonnet-20241022 \ --methods direct vs_standard \ --prompt Name a U.S. state # 提示“说出一个美国州名”这个实验旨在观察模型在直接采样下是否倾向于输出某些“热门”州如加州、德州而VS是否能更均匀地覆盖所有州。6.3 理解实验输出与指标运行脚本后在输出目录会生成JSONL格式的结果文件和一个汇总的metrics.json。结果文件每一行是一个生成的样本包含提示、响应文本、方法、模型、概率如果是VS等元数据。指标文件通常包含diversity: 基于n-gram的多样性分数。coverage: 在分类任务如州名中覆盖了多少个唯一类别。quality_score: 通过另一个LLM如GPT-4作为裁判对生成内容的相关性、连贯性进行评分如果脚本启用了质量评估。分析技巧不要只看平均指标。我习惯将直接采样和VS采样的生成样本并排放在一起进行人工对比阅读。你会发现直接采样的样本往往在开头几句就呈现出高度的结构相似性而VS样本则可能从第一句就开始分道扬镳。6.4 使用Hugging Face数据集进行二次分析团队在Hugging Face上发布了论文中使用的所有生成数据集。这对于进行更深入的分析或作为自己研究的基线数据非常有用。from datasets import load_dataset # 加载笑话生成数据集 dataset load_dataset(CHATS-Lab/Verbalized-Sampling-Joke-Generation) print(dataset[train][0]) # 查看一条数据 # 通常包含字段prompt, response, method (direct/vs), model, probability等你可以分析不同方法、不同模型下生成笑话的长度分布、情感倾向、话题分布有何不同或者用这些数据训练一个分类器来区分“直接采样”和“VS采样”的文本。6.5 扩展研究方向基于这个框架你可以探索很多有趣的方向VS与其他采样技术的结合将VS与MCTS蒙特卡洛树搜索、Beam Search等更复杂的解码策略结合。自适应tau研究如何根据提示的难度或类型动态调整tau值。多轮对话中的VS研究在长对话中如何策略性地在哪些回合使用VS以维持对话的新鲜感而不偏离主题。跨模态VS将“言语化采样”的思想应用到文生图、文生视频模型例如让图像生成模型“描述多种可能的画面构图”再根据描述生成图像。Verbalized Sampling的魅力在于其简洁与有效。它从一个非常巧妙的心理学和认知科学视角切入通过改变与大模型的“对话方式”就撬动了其深层的生成多样性。无论是作为即拿即用的提示技巧还是作为一个严肃的研究起点它都为我们与大模型的交互打开了一扇新的窗户。在实际使用中我的体会是把它看作一个“多样性放大器”和“创意挖掘机”在那些你觉得模型开始变得陈词滥调的场景下不妨试试让它先“说出它的所有想法”往往会有意想不到的收获。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价