Press "Enter" to skip to content

训练LLM的不同方式

为什么提示不属于这些机制之一

在大型语言模型(LLMs)领域中,存在着各种具有不同手段、要求和目标的训练机制。由于它们有不同的用途,因此重要的是不要混淆它们,并了解它们适用于不同的场景。

在本文中,我想概述一些最重要的训练机制,包括预训练、微调、强化学习从人类反馈中学习(RLHF)和适配器。此外,我还将讨论提示的作用,它本身并不被认为是一种学习机制,并对提示调整的概念进行一些阐述,它在提示和实际训练之间建立了一座桥梁。

预训练

“Train”. Like in “Training”. I’m sorry…Photo by Brian Suman on Unsplash

预训练是最基本的训练方式,与您可能在其他机器学习领域中了解的训练方式相同。在这里,您从一个未经训练的模型开始(即具有随机初始化权重的模型),并训练它根据先前标记序列预测下一个标记。为此,从各种来源收集了大量的句子语料,并以小块的形式提供给模型。

这里使用的训练模式称为自监督。从被训练模型的角度来看,我们可以说这是一种监督学习方法,因为模型在进行预测后总是得到正确答案。例如,给定序列“我喜欢冰淇淋”,模型可能会预测“锥形”作为下一个单词,然后被告知答案是错误的,因为实际的下一个单词是“奶油”。最终,可以计算出损失,并调整模型权重以便下一次能够更好地预测。之所以称其为自监督(而不仅仅是监督),是因为无需事先进行昂贵的标记收集过程,而这些标记已经包含在数据中。给定句子“我喜欢冰淇淋”,我们可以自动将其拆分为输入“我喜欢冰”和标签“奶油”,这不需要人为努力。虽然不是模型本身做到这一点,但这仍然是由机器自动执行的,因此在学习过程中AI自我监督的想法。

最终,在大量文本上进行训练后,模型学会了对语言的结构进行编码(例如,它学会了“我喜欢”后面可以跟名词或分词的规律),以及在看到的文本中包含的知识。例如,它学会了“乔·拜登是……”这样的句子通常后面跟的是美国总统,因此它对这一知识片段有一个表示。

这种预训练已经被其他人完成,并且您可以直接使用GPT等模型。然而,为什么您还需要训练一个类似的模型呢?如果您使用的数据具有类似于语言的特性,但又不是通用语言本身,那么从头开始训练一个模型可能是必要的。音乐符号可能是一个例子,它在某种程度上类似于语言结构。有关哪些乐谱可以跟随其他乐谱的某些规则和模式,但是经过自然语言训练的LLM无法处理这种类型的数据,因此您需要训练一个新模型。然而,由于音乐符号和自然语言之间存在许多相似之处,LLM的架构可能是合适的。

微调

Those knobs are used to finetune a string instrument. Photo by Tony Woodhead on Unsplash

尽管经过预训练的LLM由于其编码的知识,可以执行各种任务,但它存在两个主要缺点,即其输出结构和未在初始数据中编码的知识的缺失。

如您所知,LLM始终根据之前的标记序列预测下一个标记。对于继续给定故事可能是可以的,但在其他场景下可能不是您想要的。如果您需要不同的输出结构,有两种主要方法可以实现这一点。您可以通过编写适合模型的提示来解决模型预测下一个标记的任务(称为提示工程),或者您可以更改最后一层的输出,使其反映您的任务,就像在任何其他机器学习模型中一样。考虑一个包含N个类别的分类任务。通过提示工程,您可以指示模型在给定输入后始终输出分类标签。通过微调,您可以将最后一层改为具有N个输出神经元,并从具有最高激活的神经元中得出预测的类别。

LLM的另一个局限性在于其训练数据。由于数据源非常丰富,最知名的LLM可以编码各种常见知识。因此,它们可以告诉您关于美国总统、贝多芬的主要作品、量子物理的基础知识以及西格蒙德·弗洛伊德的主要理论等内容。然而,模型不了解的领域也存在,如果您需要处理这些领域,微调可能对您有用。

微调的思想是采用已经预训练的模型,并使用不同的数据继续训练,只在训练期间改变最后几层的权重。这仅需要初始训练所需资源的一小部分,因此可以快速执行。另一方面,模型在预训练期间学习的结构仍然编码在第一层中,可以利用。假设您想教您的模型了解您喜欢的但不为人知的奇幻小说,这些小说并不是训练数据的一部分。通过微调,您可以利用模型对自然语言的一般知识,使其理解新的奇幻小说领域。

RLHF微调

RLHF微调是关于最大化奖励的。Photo by Alexander Grey on Unsplash

微调模型的一个特殊情况是通过人类反馈进行强化学习(RLHF),这是GPT模型与Chat-GPT等聊天机器人的主要区别之一。通过这种微调,模型被训练以产生人类在与模型对话中最有用的输出。

主要思想如下:给定任意提示,为该提示生成模型的多个输出。人类根据他们认为的有用或适当程度对这些输出进行排名。给定样本A、B、C和D,人类可能决定C是最佳输出,B稍差但与D相等,而A是该提示的最差输出。这将导致顺序C > B = D > A。接下来,使用这些数据来训练奖励模型。这是一个全新的模型,通过给予LLM的输出反映人类喜好的奖励来学习对LLM的输出进行评分。一旦训练完奖励模型,它就可以替代人类进行评估。现在模型的输出由奖励模型评估,并将该奖励作为反馈提供给LLM,然后适应以最大化奖励;这个思想与GAN非常相似。

正如您所看到的,这种训练需要人工标注的数据,需要相当大的努力。然而,所需的数据量是有限的,因为奖励模型的思想是从该数据中进行概括,以便它可以自己评估LLM。RLHF经常用于使LLM的输出更具对话性,或避免不良行为,如模型的刻薄、侵入性或侮辱性。

适配器

两种可以插入到已有网络中的适配器。图片来自https://arxiv.org/pdf/2304.01933.pdf。

在上述微调中,我们在最后几层中调整模型的一些参数,而前面几层的其他参数保持不变。然而,还有一种替代方法可以通过较少的参数训练来提高效率,这被称为适配器。

使用适配器意味着向已经训练的模型添加额外的层。在微调过程中,只有这些适配器被训练,而模型的其余参数完全不变。然而,这些适配器的层数要比模型自带的层数小得多,这使得调整它们更容易。此外,它们可以插入到模型的不同位置,不仅仅是在最后。在上面的图片中,您可以看到两个例子;一个是将适配器作为一个串行层添加,另一个是将适配器并行添加到已有的层中。

提示

提示更多地是告诉模型要做什么,而不是如何做。照片由Ian Taylor提供,来自Unsplash

你可能想知道提示是否算作训练模型的另一种方式。提示意味着构建在实际模型输入之前的指令,并且特别是如果你使用了少样本提示,你会在提示中向LLM提供示例,这非常类似于训练,训练也包括向模型展示的示例。然而,提示与训练模型是不同的,有一些原因。首先,从简单的定义来说,只有在更新权重时我们才称之为训练,而在提示过程中并没有进行权重更新。创建提示时,你不会改变任何模型,不会改变任何权重,不会产生新的模型,也不会改变模型中编码的知识或表征。提示应该被视为一种向LLM提供指导和告诉它你想要什么的方式。考虑以下提示作为例子:

"""对给定的文本进行情感分类。文本:我喜欢冰淇淋。情感:负面文本:我真的讨厌新的AirPods。情感:积极文本:唐纳德是地球上最大的混蛋。我非常讨厌他!情感:中性文本:{user_input}情感:"""

我指示模型进行情感分类,并且你可能已经注意到,我给模型的示例都是错误的!如果一个模型使用这样的数据进行训练,它会混淆正面、负面和中性标签。现在,如果我要求模型对我的例句“我喜欢冰淇淋”进行分类,会发生什么呢?有趣的是,它将其分类为积极,这与提示相反,但从语义上来说是正确的。这是因为提示没有训练模型,也没有改变模型学到的表示。提示只是简单地告诉模型我期望的结构,即我期望冒号后面跟着情感标签(可以是积极、负面或中性)。

提示调整

提示调整也称为软提示。像羊驼毛一样柔软...照片由Advocator SY提供,来自Unsplash

尽管提示本身并没有训练LLM,但有一种机制称为提示调整(也称为软提示),与提示相关,可以看作是一种训练方式。

在前面的例子中,我们将提示视为一段自然语言文本,它被给予模型以告诉它要做什么,并且在实际输入之前。也就是说,模型的输入变成了<提示><实例>,所以例如<将以下标记为积极、负面或中性:> <我喜欢冰淇淋>。当我们自己创建提示时,我们称之为硬提示。在软提示中,格式<提示><实例>将保持不变,但提示本身不是由我们自己设计的,而是通过数据进行学习。具体而言,提示由向量空间中的参数组成,这些参数可以在训练过程中进行调整,以获得更小的损失和更好的答案。也就是说,在训练后,提示将成为导致我们给定数据的最佳答案的字符序列。然而,模型参数根本没有被训练。

提示调整的一个重要优势是,你可以为不同的任务训练多个提示,但仍然使用相同的模型。就像在硬提示中,你可能为文本摘要构建一个提示,为情感分析构建一个提示,为文本分类构建一个提示,但仍然使用同一个模型,你可以为这些目的调整三个提示,仍然使用相同的模型。相反,如果你使用微调,你将得到三个仅用于各自特定任务的模型。

总结

我们刚刚看到了各种不同的训练机制,所以让我们在最后进行一个简短的总结。

  • 预训练LLM意味着以自监督的方式教它预测下一个标记。
  • 微调是调整预训练LLM的权重,通常发生在最后几层,可用于使模型适应特定的上下文。
  • RLHF旨在调整模型的行为以符合人类的期望,并需要额外的标注工作。
  • 适配器允许更高效的微调,因为它们是添加到预训练LLM的小层。
  • 提示并不被视为训练本身,因为它不会改变模型的内部表示。
  • 提示调整是一种调整产生提示的权重的技术,但不影响模型的权重本身。

当然,还有许多其他的训练机制,每天都在发明新的机制。LLMs可以做更多的事情,而教会它们这样做需要多种技能和技术,其中一些我刚刚向您介绍了。

进一步阅读

Instruct-GPT是RLHF最著名的例子之一:

  • https://openai.com/research/instruction-following
  • Ouyang, L., Wu, J., Jiang, X., Almeida, D., Wainwright, C., Mishkin, P., … & Lowe, R. (2022). Training language models to follow instructions with human feedback. Advances in Neural Information Processing Systems, 35, 27730–27744.

LLM-Adapters项目中可以找到适配器的常见形式概述:

  • https://github.com/AGI-Edgerunners/LLM-Adapters
  • Hu, Z., Lan, Y., Wang, L., Xu, W., Lim, E. P., Lee, R. K. W., … & Poria, S. (2023). LLM-Adapters: An Adapter Family for Parameter-Efficient Fine-Tuning of Large Language Models. arXiv preprint arXiv:2304.01933.

这里探索了提示调整:

  • Lester, B., Al-Rfou, R., & Constant, N. (2021). The power of scale for parameter-efficient prompt tuning. arXiv preprint arXiv:2104.08691.

这里可以找到一些关于提示调整的很好的解释:

  • https://huggingface.co/docs/peft/conceptual_guides/prompting
  • https://ai.googleblog.com/2022/02/guiding-frozen-language-models-with.html

喜欢这篇文章吗?关注我以获取我的未来文章的通知。

Leave a Reply

Your email address will not be published. Required fields are marked *