上下文学习
背景:零样本学习¶
零样本学习是大型语言模型提供的一种能力,使其能够泛化到从未明确训练过的任务或领域。这种方法利用了模型在预训练阶段编码的内在知识和语言理解能力。
零样本学习涉及向模型提供任务描述或提示,以及一些上下文,并期望它生成相关的响应或输出。核心思想是,即使对于从未明确微调过的任务,模型也能够理解并生成连贯的内容。
具体而言,零样本学习是指用户向未明确训练以执行提示所描述任务的 LLM 提供提示时所采取的操作。例如,如果用户提供提示 translate from English to French:
,后跟一些英文文本,LLM 将生成法文文本,该文本是英文文本的翻译。LLM 可能不一定经过此任务的训练,但它能够执行此操作,因为它已经过训练以理解语言结构。
你可以在此处找到零样本学习的示例。
少样本学习¶
少样本学习是零样本学习的一种变体,它涉及向模型提供一组静态的标记示例,以帮助其执行任务。例如,如果用户提供提示 translate from English to French:
,后跟几个英法翻译对,再后跟要翻译的英文文本,LLM 将生成法文文本,该文本是英文文本的翻译。
这通常会带来比零样本学习更好的性能,但需要少量标记数据。所需数据量差异很大,从单个示例到几百个不等。所需数据的确切数量取决于任务、LLM 的最大上下文长度以及模型的相对能力。
要在 Ludwig 中实现这一点,你可以使用零样本学习示例并在配置的 prompt.task
字段中提供少量标记示例。
检索增强型 ICL¶
检索增强型上下文学习是上下文学习的一种变体,它涉及使用信息检索过程将附加上下文插入到提示中。这通常通过使用文本嵌入模型对文本对数据库(通常是输入文本及其相应的所需响应文本)进行编码,然后使用编码提示的最近邻来将附加上下文插入到提示中来完成。
这与少样本学习有关,因为我们将标记数据注入到提示中。不同之处在于,提示中包含的“样本”是动态的,而不是静态的。我们拥有的示例可能比能放入提示中的多得多,我们使用检索过程来选择最相关的示例包含在提示中。
举个例子,假设用户有一个包含数百个英法文本对的数据集。如果用户有一个输入是一个英文文本,并且提示是 translate from English to French:
,用户可以使用检索过程来选择最相关的英法文本对包含在提示中。这将有助于 LLM 执行翻译任务。
这种方法可能比少样本学习表现更好,因为检索过程可以动态选择最相关的示例包含在提示中。但是,它需要更多的标记数据,并且检索过程可能很慢。
你可以在此处找到检索增强型 ICL 的示例。
要了解更多关于如何在 Ludwig 中为 LLM 指定提示和检索策略的信息,请查阅LLM 配置文档中的提示部分。