哪些网站是python做的,班级优化大师官网下载,桂林两江四湖船票官网,三只松鼠网站建设工作期间会将阅读的论文、一些个人的理解整理到个人的文档中#xff0c;久而久之就积累了不少“个人”能够看懂的脉络和提纲#xff0c;于是近几日准备将这部分略显杂乱的内容重新进行梳理。论文部分以我个人的理解对其做了一些分类#xff0c;并附上一些简短的理解#xf… 工作期间会将阅读的论文、一些个人的理解整理到个人的文档中久而久之就积累了不少“个人”能够看懂的脉络和提纲于是近几日准备将这部分略显杂乱的内容重新进行梳理。论文部分以我个人的理解对其做了一些分类并附上一些简短的理解若读者对其感兴趣可通过论文名称进行搜索。后续有时间会持续更新和补充。 提示工程Prompt Engineering关注提示词开发和优化帮助用户将大语言模型Large Language ModelLLM用于各场景和研究领域。
prompt 为人类与通用模型如 LLM的交互和使用提供了一个自然和直观的界面。由于其灵活性prompt 已被广泛用作 NLP 任务的通用方法。然而LLMs 需要细致的 prompt 工程无论是手动还是自动因为模型似乎不能像人类那样理解 prompt。尽管许多成功的 prompt 调整方法使用基于梯度的方法在连续空间上进行优化但随着规模的扩大这变得不太实际因为计算梯度变得越来越昂贵对模型的访问转向可能不提供梯度访问的 API。
论证研究
研究prompt 顺序、格式的影响
Calibrate Before UseImproving Few-Shot Performance of Language Modelsfew-shot 学习可能是不稳定的prompt 格式的选择、训练示例、甚至训练示例的顺序都会导致准确性从随机猜测到接近最先进的水平。不稳定性来自于语言模型对预测某些答案的偏向多数标签偏差、回顾性偏差和常见 token 偏差。并提出上下文校准一种调整模型输出概率的简单程序。Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity论证了 prompt 的顺序对推断的结果有影响。Rethinking the Role of DemonstrationsWhat Makes In-Context Learning Work?研究 demonstration 对于 ICL 成功所起到的作用。demonstration 中的 ground truth 输入-标签映射所起到的作用比想象的要小得多——用随机标签替换 gold 标签只稍微降低了性能。收益主要来自于输入空间和标签空间的独立规范independent specification使用正确的格式模型可以通过只使用输入或只使用标签集来保持高达 95% 的性能收益带有语境学习目标的元训练会放大这些趋势。
研究context 位置研究
Lost in the Middle: How Language Models Use Long Contexts模型更善于使用出现在上下文开头首要偏差和结尾回顾偏差的相关信息而当被迫使用输入上下文中间的信息时性能就会下降。并且用实验证明在使用输入上下文方面扩展上下文模型并不一定比非扩展上下文模型更好。
具体实现
prompt 优化
prompt 优化分为调整 context或者在 context 中添加更多的信息例如错误的信息、或者从错误信息中抽取到的思考、原则等辅助信息也可以是通过检索得到的世界性知识或者专属知识。
方式调整 context
添加更多的信息
往 contextprompt中添加 few-shot 示例、错误的信息或者从错误信息中抽取得到的思考、原则等辅助信息。这部分更多与 RAG 结合使用。
2021-01What Makes Good In-Context Examples for GPT-3提出 KATE 方法根据测试样本与训练集相似度挑选最佳邻居作为上下文示例。2021-10Generated Knowledge Prompting for Commonsense Reasoning提出生成知识提示包括从语言模型中生成知识然后在回答问题时将知识作为额外输入。 理解改进将生成知识单独拆分出来作为填充知识库内容会更好因为我们无法保证语言模型中生成的知识是否有幻觉需要通过一系列的方式进行过滤和处理。在回答问题时通过 RAG 的方式检索高质量的知识作为额外输入可有效减少幻觉和冗余信息的影响。 2022-12Structured PromptingScaling In-Context Learning to 1,000 Examples探索了如何利用更多的示例来进行语境学习并提出了结构化 prompt以在有限的计算复杂度下扩大示例的数量。对每组演示进行独立编码并通过 rescaled attention 对语言模型的表征进行 prompt。 2023-11Chain-of-NoteEnhancing Robustness in Retrieval-Augmented Language Models介绍了一种新颖的方法 CHAIN-OF-NOTINGCoN框架核心理念是为每个检索到的文档生成连续的阅读笔记以深入评估文档与所提问题的相关性并整合这些信息来形成最终答案。2024-02In-Context Principle Learning from Mistakes引入了学习原则LEAP。首先有意诱导模型在这几个示例上犯错误然后模型本身会对这些错误进行反思并从中学习明确的特定任务“原则”这些原则有助于解决类似问题并避免常见错误最后提示模型使用原始的 few-shot 示例和这些学到的一般原则来回答未见过的测试问题。
过滤冗余或错误信息
2023-05Deliberate then Generate: Enhanced Prompting Framework for Text Generation提出 DTG 提示方法通过让模型在可能包含错误的合成文本上检测错误类型鼓励 LLM 在生成最终结果之前进行深思熟虑。2023-11System 2 Attention (Is Something You Might Need Too)通过诱导 LLM 重新生成输入上下文使其只包含相关部分然后再关注重新生成的上下文以诱导出最终良好的响应。
方式prompt 压缩
prompt 压缩可以缩短原始 prompt同时尽可能保留最重要的信息。这可以减少模型推理阶段的 prefill 时间并过滤掉 context 中冗余、错误的信息帮助生成更为准确的回复。本质上也是调整 context但还是将其另成一派。
可行性结论
语言中常常包含不必要的重复且无意义的内容例如在传统 NLP 中我们时常会去停用词因为这些停用词没有太多的语义或者对模型输出结果几乎没有影响。《Prediction and entropy of printed English》表明英语在段落或章节长度的文本中有很多冗余大约占 75%。这意味着大部分单词可以从它们前面的单词中预测出来。
疑问
prompt 被压缩后后面位置的 token 其位置编码会相应变化例如第 500 位置的 token 压缩后到了 200 位置虽然它在 500 位置处的信息量或者 logits 对结果没有影响但到了 200 位置是否就变得重要了呢RLHF 对齐越好的模型是否对 prompt 压缩越敏感压缩后的 prompt 几乎人类不可读与人类喜好对齐强的模型是否也不容易理解在一篇讲述 Pinecone 搜索方案的博客中将压缩后的 prompt 送入 gpt-4-1106-preview它会返回文章的格式和用词写法错误但在 gpt-3.5-turbo 中就不会出现。
相关方法
2023-04Unlocking Context Constrainits of LLMsEnhancing Context Efficiency of LLMs with Self-Information-Based Content Filtering引入了“选择性上下文”Selective Context 技术通过过滤掉信息量较少的内容为 LLM 提供了一种更紧凑、更高效的上下文表示法同时又不影响它们在各种任务中的性能。2023-10LLMLinguaCompressing Prompts for Accelerated Inference of Large Language Models提出了一种从粗到细的提示压缩方法 LLMLingua包括一种在高压缩率下保持语义完整性的预算控制器、一种能更好地模拟压缩内容间相互依存关系的 token 级迭代压缩算法以及一种基于指令调整的语言模型间分布对齐方法。
方式优化指令
以人的行为习惯、思维方式写下的 prompt 往往能达到及格分经验丰富老道的提示工程师或许可以在第一步就写出达到 80 分的 prompt。但无论如何人写下的 prompt 很难跳出人类的思维方式我们会尽可能将话语和文字组织得通顺连贯、行文结构合理偶尔捎带些许有趣性但这并不一定是最符合模型的思考习惯。例如模型的对齐能力是否会有影响对齐能力强的模型更能理解人的语言即使低质量的 prompt 也能执行得好例如 GPT4我们可以不强求非得以人的视角写出符合人类习惯的 prompt让模型自己去生成自己能更好理解的 prompt似乎是一个更好的方向。
2022-03An Information-theoretic Approach to Prompt Engineering Without Ground Truth Labels介绍了一种选择 prompt 的方法在一组候选 prompt 中选择使输入和模型输出之间的互信息最大化的 prompt。2022-11Large Language Models Are Human-Level Prompt Engineers提出了 APE自动 prompt 工程师框架根据问题和回答让 LLM 自动生成指令然后再用 LLM 去评估生成指令的质量从中挑选效果最好的指令。此外可以根据蒙特卡洛法去检索更好的指令集并减少迭代的计算成本。2023-02Active Prompting with Chain-of-Thought for Large Language Models将主动学习的过程应用到 prompt 工程上主要是流程和工程上面的改进制定不确定性标准例如分歧、熵、方差和置信度来评估 prompt 在特定任务上的效果。选择这些效果不佳的 prompt交给人工去标注最后进行推断。不断重复上述过程与主动学习的过程相同。
方式定向刺激
2023-02Guidling Large Language Models via Directional Stimulus Prompting提出了一个名为“定向刺激 prompt”Directional Stimulus Prompting的新型 prompt 框架先训练一个经过微调、强化学习后的小型模型然后使用该小型模型根据用户的查询来生成对应的刺激文本将其添加到 prompt 中来引导黑盒大语言模型朝着所需的输出方向前进。2023-07EmotionPromptLeveraging Psychology for Language Models Enhancement via Emotional Stimulus作者从心理学中汲取灵感提出 EmotionPrompt情感提示来探索情商以提高 LLM 的性能。具体来说作者为 LLMs 设计了 11 句情感刺激句子只需将其添加到原始 prompt 中即可。缺陷在于情绪刺激可能并不适用于其他任务并且对不同 LLM 的效果无法保证。
连续推理
将中间的推理步骤一步步思考完整或者将一整个问题逐步分解成子问题来解决。核心在于需要执行多次或多跳来完成任务。
方式CoT 与类 CoT 大家族
CoT 一系列研究给我的感觉像是将数据结构中的链表、树和图依次应用到 CoT 中。 2022-02Chain-of-Thought Prompting Elicits Reasoning in Large Language Models提出了思维链CoT的方法。 2022-03Self-Consistency Improves Chain of Thought Reasoning in Language Models提出了自我一致性方法先使用思维链 prompt然后通过采样等手段获取多条输入汇总答案根据投票以及加权等方式并选择最一致的答案。该方法受限于固定的答案集并且计算成本较高多条输出、推理路径。但在算术和常识推理任务上能够提高准确性。 理解改进核心在于如何选择最一致的答案在开放式闲聊场景中使用奖励模型来评分是一个不错的方式例如生成多条回复让奖励模型打分挑选分数最高的回复。 2023-05Tree of ThoughtsDeliberate Problem Solving with Large Language Models还未细看。 2023-08Better Zero-Shot Reasoning with Role-Play Prompting提出了一种由两阶段框架组成的新型 zero-shot role-play 提示方法旨在增强 LLM 的推理能力。实验结果凸显了 role-play 提示作为一种隐性和有效的 CoT 触发器的潜力从而提高了推理结果。
方式问题拆分
2022-10Measuring and Narrowing the Compositionality Gap in Language Models提出了 self-ask 的方式不断将复杂、多跳问题拆分为子问题然后依次解决子问题最后回答完整问题。在解决子问题的过程中可借助搜索引擎来获取事实性知识。2022-10ReAct: Synergizing Reasoning and Acting in Language Models提出了 ReAct 框架。2023-06Let’s Verify Step by Step在数学推理领域过程监督可以用来训练比结果监督更可靠的奖励模型。主动学习可以用来降低人类数据收集的成本。
风险和误用
真实性幻觉
LLM 模型有时会生成看起来连贯且令人信服的回答但这回答是 LLM 模型虚构的答案也就是说 LLM 模型在一本正经的胡说八道。改进 prompt 可以帮助提高模型生成更准确/真实的回答并降低生成不一致和虚构回答的可能性。
偏见
LLMs 可能会产生问题的生成结果这些结果可能会对模型在下游任务上的性能产生负面影响并显示可能会恶化模型性能的偏见。其中一些可以通过有效的 prompt 策略来缓解但可能需要更高级的解决方案如调节和过滤。
在 Calibrate Before UseImproving Few-Shot Performance of Language Models 论文中提到“方差在更多的数据和更大的模型中持续存在”而造成高方差的原因是 LLMs 中存在的各种偏差偏见例如
在 prompt 中经常出现的答案多数标签偏差。在 prompt 的最后回顾性偏差。在预训练数据中常见的答案常见 token 偏差。
多数标签偏差
当一个类别更常见时GPT-3 会严重偏向预测该类别本质是多数标签严重影响模型预测分布从而对准确性造成很大影响。 理解1-shot 时模型预测很大程度上受到这一个训练示例标签的影响从而输出该训练示例的标签而非期望得到的标签。 回顾性偏差
模型的多数标签偏差因其回顾性偏差而加剧重复出现在 prompt 结束时的答案的倾向。例如当两个负例出现在最后模型将严重倾向于负面的类别。
回顾性偏差也会影响到生成任务。对于 4-shot 的 LAMA更接近 prompt 结束的训练答案更有可能被模型重复。总的来说回顾性偏差与多数标签偏差一样都会影响模型预测的分布。 例如joyland 模型重复问题很大程度上由于 context 中存在大量重复的回复尤其是最近几轮相近或相同的回复加上对话的 prompt 组织格式形似 ICL这进一步加重回顾性偏差从而导致当前轮模型回复继续重复。详细研究请参考 Rethinking Historical Messages。 常见 token 偏差
模型倾向于输出预训练分布中常见的 token而这可能对下游任务的答案分布来说是次优的。在 LAMA 事实检索数据集上模型常常预测常见的实体而 ground truth 的答案却是罕见的实体。在文本分类中也出现了更细微的常见token偏差问题因为某些标签名称在预训练数据中出现的频率较高所以模型会对预测某些类别有固有偏见。总的来说常见 token 偏差解释了标签名称的选择对于模型预测的重要性以及为什么模型在处理罕见答案时会遇到困难。
相关工具
名称链接awesome-chatgpt-prompts-zhhttps://github.com/PlexPt/awesome-chatgpt-prompts-zhsnackprompthttps://snackprompt.com/flowgpthttps://flowgpt.com/promptherohttps://prompthero.com/publicprompts.arthttps://publicprompts.art/guidancehttps://github.com/guidance-ai/guidanceSynapse_CoRhttps://github.com/ProfSynapse/Synapse_CoRPromptInjecthttps://github.com/agencyenterprise/PromptInject
参考资料
工程指南https://www.promptingguide.ai/zhprompt 学习https://learningprompt.wiki/