大型语言模型的工作原理
大型语言模型是将文本映射到文本的函数。给定一个输入文本字符串,大型语言模型会预测接下来应该出现的文本。
大型语言模型的魔力在于,通过训练在大量文本上最小化这种预测误差,模型最终学会了有助于这些预测的有用概念。例如,它们学会了:
- 如何拼写
- 语法如何运作
- 如何进行转述
- 如何回答问题
- 如何进行对话
- 如何用多种语言书写
- 如何编写代码
- 等等。
它们通过“阅读”大量现有文本来实现这一点,学习单词如何倾向于与其他单词在上下文中出现,并利用所学知识预测用户请求后最可能出现的下一个单词,以及之后的每一个后续单词。
GPT-3和GPT-4驱动着众多软件产品,包括生产力应用、教育应用、游戏等。
如何控制大型语言模型
在所有输入大型语言模型的因素中,文本提示的影响力无疑是最大的。
大型语言模型可以通过以下几种方式被提示生成输出:
- 指令: 告诉模型你想要什么
- Completion: 引导模型完成您想要的开头部分
- 场景: 为模型设定一个情境来演绎
- Demonstration: Show the model what you want, with either:
- 提示中包含几个示例
- 微调训练数据集中包含数百或数千个示例
每个示例如下所示。
指令提示
在提示的顶部(或底部,或两者)写下您的指令,模型将尽力遵循指令然后停止。指令可以很详细,所以不要害怕写一段文字明确描述您想要的输出,只需注意模型能处理的tokens数量。
示例指令提示:
Extract the name of the author from the quotation below.
“Some humans theorize that intelligent species go extinct before they can expand into outer space. If they're correct, then the hush of the night sky is the silence of the graveyard.”
― Ted Chiang, Exhalation输出:
Ted ChiangCompletion prompt example
补全式提示利用了大型语言模型试图生成最可能接续文本的特性。要引导模型,可以尝试开启一个模式或句子,让模型按照您期望看到的内容来完成。相对于直接指令,这种引导大型语言模型的方式需要更多细心和实验。此外,模型不一定知道在哪里停止,因此您通常需要设置停止序列或进行后处理,以截断超出预期输出的生成文本。
示例完成提示:
“Some humans theorize that intelligent species go extinct before they can expand into outer space. If they're correct, then the hush of the night sky is the silence of the graveyard.”
― Ted Chiang, Exhalation
The author of this quote is输出:
Ted Chiang场景提示示例
为模型提供一个需要遵循的场景或扮演的角色,有助于处理复杂查询或寻求富有想象力的回答。在使用假设性提示时,您可以设定一个情境、问题或故事,然后要求模型以该场景中的角色或该主题专家的身份进行回应。
示例场景提示:
Your role is to extract the name of the author from any given text
“Some humans theorize that intelligent species go extinct before they can expand into outer space. If they're correct, then the hush of the night sky is the silence of the graveyard.”
― Ted Chiang, Exhalation输出:
Ted Chiang演示提示示例(小样本学习)
与补全式提示类似,演示可以向模型展示您希望它执行的操作。这种方法有时被称为小样本学习,因为模型会从提示中提供的少量示例中进行学习。
示例演示提示:
Quote:
“When the reasoning mind is forced to confront the impossible again and again, it has no choice but to adapt.”
― N.K. Jemisin, The Fifth Season
Author: N.K. Jemisin
Quote:
“Some humans theorize that intelligent species go extinct before they can expand into outer space. If they're correct, then the hush of the night sky is the silence of the graveyard.”
― Ted Chiang, Exhalation
Author:输出:
Ted Chiang微调提示示例
通过提供足够的训练样本,您可以微调自定义模型。在这种情况下,指令变得不必要,因为模型可以从提供的训练数据中学习任务。然而,包含分隔符序列(例如->或###或任何不常出现在输入中的字符串)有助于告知模型提示何时结束以及输出应何时开始。如果没有分隔符序列,模型可能会继续详细阐述输入文本,而不是开始生成您希望看到的答案。
微调提示示例(适用于在类似提示-完成对上经过自定义训练的模型):
“Some humans theorize that intelligent species go extinct before they can expand into outer space. If they're correct, then the hush of the night sky is the silence of the graveyard.”
― Ted Chiang, Exhalation
###
输出:
Ted Chiang代码能力
大型语言模型不仅擅长处理文本,在代码方面也表现出色。OpenAI的GPT-4模型就是一个典型例子。
GPT-4驱动着众多创新产品,包括:
- GitHub Copilot (在Visual Studio和其他IDE中自动补全代码)
- Replit (可以完成、解释、编辑和生成代码)
- Cursor (在专为与AI结对编程设计的编辑器中更快构建软件)
GPT-4比之前的模型如gpt-3.5-turbo-instruct更先进。但是,为了在编码任务中充分发挥GPT-4的优势,提供清晰具体的指令仍然很重要。因此,设计好的提示词需要更加细心。
更多提示建议
如需更多提示示例,请访问OpenAI Examples。
通常,输入提示是优化模型输出的最佳手段。您可以尝试以下技巧:
- 更具体一些 例如,如果你希望输出是一个逗号分隔的列表,就要求它返回一个逗号分隔的列表。如果你希望它在不知道答案时说"我不知道",就告诉它'如果你不知道答案就说"我不知道"'。你的指令越具体,模型就能给出更好的回应。
- 提供上下文: 帮助模型理解您请求的全局背景。这可以是背景信息、您期望的示例/演示,或是解释您任务的目的。
- 要求模型以专家身份回答。 明确要求模型生成高质量输出或模仿专家撰写的回答,可以促使模型提供它认为专家会写出的更优质答案。使用诸如"详细解释"或"逐步描述"等短语会非常有效。
- 提示模型写下解释其推理的一系列步骤。 如果理解答案背后的"原因"很重要,可以提示模型包含其推理过程。只需在每个答案前添加类似"Let's think step by step"这样的行即可实现。