生成模型(二):In-Context Learning 简介

2,947 阅读3分钟

背景

在之前的介绍 GPT3 的时候,我们曾介绍过,目前生成模型正在从 MLM 方向转变为 ICL 方向。目前几乎在搞的大规模预训练模型都是朝着 ICL 方向优化的了,其实从 GPT 开始提出,open ai 的大规模预训练模型就一直是基于 icl的了,因此在这里了解下 ICL是如何实现的。

方法介绍

ICL(in-cntext learning)上下文学习方法,简单来说就是区别于 finetuning,不对模型做任何的微调,直接将下游任务的输入输出拼接起来作为一个 prompt,引导模型根据输入的测试集样本demo,给出任务的预测结果。这种方法的效果比无监督学习的要好,并且不需要根据特定的任务重新 finetuning 更新模型参数,避免不同任务要训练不同模型的烦恼。

应用

in-context learning 做情感分析

截屏2023-02-16 下午8.28.11.png 如上图所示,我们已经有了一个预训练好的大规模语言模型,希望这个模型可以直接做情感分析,按照以往的方式,往往会对这个大模型做 finetuning,然而在测试集上看效果,但如上图case,现在只需要直接输入一些 句子+label 的 pair对,然后最后输入我们的目标句子,模型就能输出目标 sentence 对应的情感类型。

in-context learning 做机器翻译

例如,我们希望gpt3模型,能直接帮我们将一个英文单词 cheese 翻译成对应的法语,那么用in-context learning的方法,可以有以下三种实现方式:

  • zero-shot 方式 截屏2023-02-16 下午8.09.11.png 输入 task description + prompt,模型就会给出cheese对应的法语;

  • One-shot 方式 截屏2023-02-16 下午8.12.30.png 输入: task description + example + prompt 输出: cheese的法语单词 在这里,相比较于 zero-shot的方式,one-shot除了 task description,还给出了这个description的一个 example,就好像是以前做题的时候,除了给出问题描述,还会给出一个case,示例我们期望的输入输出。

  • Few-shot 方式 截屏2023-02-16 下午8.13.47.png 输入: task description + examples + prompt 跟one-shot 不同的是,在这里输入的 example 不只是一个,不过都是不同英语单词对应的法语。

总结

根据上面的介绍,相信大家对icl 已经有了一个比较直观的感受,这种不进行参数更新的情况下,仅加入几个示例来让模型学习的新范式。感觉这种模式,其实更符合人类学习的习惯。pretraining or finetuning,给人的感觉都更加像是从大规模的预料中检索,而人类在学习新任务的时候,往往都是看一些case,然后很快就能将以往的知识结合case进行迁移应用,所以 in-context learning 的优势如下:

  • 基于大规模预料pretrain的模型(拥有大量的阅读量)+ 类别学习;
  • 输入形式是自然语言,交互上更友好,更重要的是,能方便我们将自己的一些经验输入给模型,实际上,这允许我们充当teacher的角色;
  • 不需要学习,不需更新模型参数。

下一篇文章中,将介绍目前大家基于 icl 优化的一些工作。

Reference

[1] arxiv.org/pdf/2005.14…

开启掘金成长之旅!这是我参与 「掘金日新计划 · 2 月更文挑战」的第 16 天,点击查看活动详情