论文浅尝 | 逐步蒸馏!使用少量训练数据和较小模型超越大语言模型

806e61e5543e97ca9e26e0ee508c793b.png

笔记整理:康婧淇,东南大学硕士生,研究方向为自然语言处理、信息抽取

链接:https://arxiv.org/abs/2305.02301

1. 动机

本文的动机是将大型语言模型(LLMs)的任务特定知识提炼到更小的专业模型中。作者改变了对LLMs的视角,将其视为可以进行推理的代理,能够生成自然语言的理由来解释其预测的标签。这些理由可以包含与任务相关的知识,例如“面积=长度×宽度”,这些知识原本需要大量数据才能让小型任务特定模型学习。作者利用提取的理由作为额外的、更丰富的信息来训练小型模型,通过多任务训练设置,同时进行标签预测和理由预测任务。通过逐步蒸馏,我们可以学习到性能优于LLMs的任务特定小型模型,使用的模型参数比LLMs少500倍以上,并且相比传统的微调或提炼方法,所需的训练样本数量要少得多。这些小型模型在4个自然语言处理基准测试中取得了令人期待的实证结果,相比微调和提炼,我们的模型在平均数据集上使用的训练样本数量减少了50%以上,并且在性能上超过了LLMs,同时模型尺寸也大大减小(最多减小了2000倍),从而大大降低了模型部署所需的计算成本。此外,本文的方法还能够在只有无标签数据的情况下,性能与LLMs相当甚至更好。本文通过一个11B T5模型超越了540B参数的PaLM模型的性能。本文进一步展示了当一个小型模型的性能不如LLMs时,逐步提炼方法相比标准提炼方法能够更有效地利用额外的无标签数据来匹配LLMs的性能。

2. 贡献

本文的主要贡献包括:

(1)提出了一种逐步蒸馏的方法,从大型语言模型(LLMs)中提取rationales,并将其作为训练小型任务特定模型的信息监督。通过使用rationales,这种方法可以减少训练小型模型所需的训练数据集,并降低实现甚至超过原始LLMs性能所需的模型大小。

(2)实验结果表明,相比于微调和蒸馏,所提出模型在平均数据集上使用50%以下的训练样本数量时,性能更好(最高可减少85%)。此外,该模型在比LLMs小得多的模型尺寸下表现出色(最高可减少2000倍),从而大大降低了模型部署所需的计算成本。

(3)本文的方法可以更高效地利用额外的无标记数据,以提高小型模型的性能,相比标准的蒸馏方法,逐步蒸馏方法可以更有效地匹配LLMs的性能。

3. 方法

本文提出了逐步蒸馏新范式,利用 LLM 对其预测的推理能力,以数据高效率的方式训练更小的模型。整体框架如图 1所示。该范式有两个简单的步骤:首先,给定一个 LLM 和一个无标签的数据集,提示 LLM 生成输出标签以及证明该标签成立的理由。理由用自然语言解释,为模型预测的标签提供支持。理由是当前自监督 LLM 的一个涌现的行为属性。

20ffba3180ef1d23903c601809706f09.png

图1:逐步蒸馏方法框架图

4. 实验

作者在实验中验证了逐步蒸馏的有效性。首先,与标准的微调和任务蒸馏方法相比,逐步蒸馏有助于实现更好的性能,训练实例的数量少得多,大幅提高了学习小型特定任务模型的数据效率。

eb5489d957d36ebe14392e6713f49208.png

其次,研究表明,逐步蒸馏方法以更小的模型大小超越了 LLM 的性能,与大型语言模型相比,大大降低了部署成本。

86be3eaef6f3c0fa9f7392068f1f70ec.png

最后,本文研究了逐步蒸馏方法在超过 LLM 的性能方面所需的最低资源,包括训练示例数量和模型大小。论文展示了逐步蒸馏方法通过使用更少的数据和更小的模型,同时提高了数据效率和部署效率。

a518bcb092a4141aeaaf2833170cd4f7.png

5. 总结

本文介绍了一种名为逐步蒸馏的新机制,用于训练较小的模型并减少训练数据的需求。该方法通过在多任务框架中利用大型语言模型(LLMs)的理由作为额外的监督来训练小模型。研究发现,与微调和蒸馏相比,这种机制在使用更少的标记/未标记训练样本的情况下实现了更好的性能。此外,与少样本提示的LLMs相比,使用更小的模型尺寸也能实现更好的性能。通过这种方法,研究人员成功地减小了模型尺寸和所需数据量,使得微调的770M T5模型在使用仅80%的可用数据时就能胜过少样本提示的540B PaLM模型,而标准微调相同的T5模型即使使用100%的数据集也难以达到相同的效果。这项研究对于解决大型语言模型在实际应用中的内存和计算资源需求问题具有重要意义。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

e718ec95dd092905b731c3080d971b92.png

点击阅读原文,进入 OpenKG 网站。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-24 08:24:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-24 08:24:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-24 08:24:02       82 阅读
  4. Python语言-面向对象

    2023-12-24 08:24:02       91 阅读

热门阅读

  1. Install DPDK 21.11 for Ubuntu 18.04

    2023-12-24 08:24:02       53 阅读
  2. 在深度学习中,端到端的含义

    2023-12-24 08:24:02       52 阅读
  3. 完整的 Meteor NPM 集成

    2023-12-24 08:24:02       62 阅读
  4. k8s 定义 gRPC 存活探针

    2023-12-24 08:24:02       64 阅读
  5. Kafka怎么保证消息发送不丢失

    2023-12-24 08:24:02       46 阅读
  6. 【docker笔记】docker常用命令

    2023-12-24 08:24:02       54 阅读
  7. Python知识(3/20):Python运算符全解

    2023-12-24 08:24:02       61 阅读
  8. mobx-react快速入门使用

    2023-12-24 08:24:02       66 阅读
  9. 详解Keras3.0 KerasNLP Models: GPT2 GPT2Tokenizer

    2023-12-24 08:24:02       49 阅读