https://arxiv.org/abs/2310.15916
一篇新论文提供了关于LLMs中In-Context Learning如何工作的一些见解。该研究提出并证明了在上下文学习过程中存在一个优雅的结构。这些模型似乎创建了一个"任务向量",它将示例中的核心逻辑以一种与任何特定query无关的方式封装起来。这个向量作为任务的压缩表示。然后,一个独立的组件将这个任务向量和一个新的查询作为输入,生成输出,而不直接引用原始示例。
它分为两个主要步骤:模型的“Learn”部分查看示例并创建任务向量。这是一组数字,捕捉示例的核心思想。重要的是,这个向量不依赖于模型以后将被询问的任何特定新示例。然后,“Apply”部分将这个任务向量和一个新query一起使用。它们用于生成输出。这部分不直接参考原始示例。可以表示成:Output = Apply(query, Learn(examples)),其中"Learn"从训练示例中推导出任务向量,"Apply"利用任务向量和请求query生成输出。研究人员通过在翻译和算法推理等多样化任务上测试主要的公共模型来验证这个假设。
研究人员进行了大量的实验,使用了18个不同的任务。他们测试了包括GPT-J、Pythia和LLaMA在内的主要公共AI模型。这些模型的参数规模从28亿到300亿以上不等。
关于上下文学习工作原理提出的观点:
- 他们可以将模型中的“Learn”和“Apply”部分隔离开来,同时保持与正常上下文学习相比80-90%的准确率。这表明这种分离很好地捕捉到了本质。
- 提取的任务向量在任务之间是一致的,但在不同任务之间是不同的。可视化结果显示了按任务进行的明显聚类。这意味着这些向量对于每个任务都编码了有意义的信息。
- 将一个任务向量注入到另一个任务中会使模型忽略不同任务的示例,并跟随注入的向量。这明显表明向量引导了模型的行为。
- 任务向量为任务生成了相关的单词,即使这些单词不在示例中也是如此。例如,法语到英语翻译的向量对于“翻译”和“英语”等单词给出了较高的概率。这表明这些向量代表了关于任务的语义信息。
总的来说,这些发现为上下文学习通过将示例提炼成任务向量提供了有力证据。这个向量捕捉了关于任务的重要信息。然后,模型使用这个向量来正确处理新的示例。这些结果是解密大型语言模型中上下文学习如何运作的重要一步。ICL一直是不透明的,在其少量训练能力中似乎几乎是神奇的。这项研究开始揭示模型实际上学会了什么。