大型语言模型 (LLM) 入门与训练实战指南
引言
踏上人工智能的演变之旅和自然语言处理 (NLP) 领域取得的惊人进步。一眨眼的功夫,人工智能已经崛起,塑造了我们的世界。训练大型语言模型的巨大影响彻底改变了 NLP,彻底改变了我们的技术交互。时间回到 2017 年,这是一个以'注意力就是你所需要的'为标志的关键时刻,开创性的'Transformer'架构诞生了。该架构现在构成了 NLP 的基石,是每个大型语言模型配方中不可替代的成分 - 包括著名的 ChatGPT。
想象一下轻松生成连贯、上下文丰富的文本 - 这就是 GPT-3 等模型的魔力。作为聊天机器人、翻译和内容生成的强大力量,它们的辉煌源于架构以及预训练和训练的复杂舞蹈。我们将深入揭示利用大型语言模型执行任务背后的艺术性,利用预训练和训练的动态二重奏来达到出色的效果。
学习目标
- 了解构建 LLM 应用的不同方法。
- 学习特征提取、层训练和适配器方法等技术。
- 使用 Huggingface Transformers 库在下游任务上训练 LLM。
什么是大型语言模型 (LLM)
LLM 代表大型语言模型。LLM 是深度学习模型,旨在理解类人文本的含义并执行各种任务,例如情感分析、语言建模(下一个词预测)、文本生成、文本摘要等等。它们接受了大量文本数据的训练。
我们每天都在使用基于这些 LLM 的应用程序,甚至没有意识到这一点。Google 将 BERT(Transformers 双向编码器表示)用于各种应用,例如查询完成、理解查询上下文、输出更相关和更准确的搜索结果、语言翻译等。
这些模型建立在深度学习技术、深度神经网络和自注意力等先进技术的基础上。它们接受大量文本数据的训练,以学习语言的模式、结构和语义。
由于这些模型是在广泛的数据集上进行训练的,因此需要大量的时间和资源来训练它们,并且从头开始训练它们通常是不现实的。我们可以通过一些技术直接使用这些模型来完成特定任务。
构建 LLM 应用的不同方法概述
以下是构建 LLM 应用的 3 种主要方法:
- 从头开始训练大语言模型
- 微调大型语言模型
- 提示工程 (Prompting)
1. 从头开始训练大语言模型
人们经常对这两个术语感到困惑:训练和微调 LLM。这两种技术的工作方式相似,即改变模型参数,但训练目标不同。
从头开始培训 LLM 也称为预训练。预训练是一种在大量未标记文本上训练大型语言模型的技术。但问题是,'我们如何在未标记的数据上训练模型,然后期望模型准确地预测数据?'。这就是'自我监督学习'的概念。在自监督学习中,模型会掩盖一个单词,并尝试借助前面的单词来预测下一个单词。
例如,假设我们有一句话:'我是一名数据科学家'。该模型可以根据这句话创建自己的标记数据,例如将句子变为'我是一名 [MASK] 科学家'。这被称为下一个词预测,由 MLM(掩码语言模型)完成。BERT,一种掩码语言模型,使用这种技术来预测屏蔽词。我们可以将掩码视为'填空'概念,其中模型预测哪些单词可以填入空白。BERT 可以查看前面和后面的单词来理解句子的上下文并预测屏蔽词。
因此,作为预训练的高级概述,它只是模型学习预测文本中下一个单词或填补空缺的技术。
2. 微调大型语言模型
微调是调整模型的参数,使其适合执行特定任务。模型经过预训练后,会进行微调,或者简单地说,训练它来执行特定任务,例如情感分析、文本生成、查找文档相似性等。我们不必在特定的环境上再次训练整个模型的大文本;相反,我们使用经过预训练的模型来执行我们想要执行的任务。
3. 提示工程 (Prompting)
提示是所有 3 种技术中最简单的,但也有点棘手。它涉及为模型提供一个上下文(提示),模型根据该上下文执行任务。可以将其视为详细教孩子书中的一章,对解释非常谨慎,然后要求他们解决与该章相关的问题。
就 LLM 而言,以 ChatGPT 为例;我们设置一个上下文并要求模型按照说明来解决给定的问题。
示例:我是一名拥有两年经验的数据科学家,目前正在某某公司准备面试。我喜欢解决问题,目前正在使用最先进的 NLP 模型。我了解最新的趋势和技术。问我关于 Transformer 模型的非常棘手的问题,这个公司的面试官可以根据公司以前的经验来问。问我十个问题并给出问题的答案。
您提示的越详细和具体,结果就越好。最有趣的部分是您可以从模型本身生成提示,然后添加个人风格或所需的信息。
了解不同的训练技术
传统上训练模型的方法有多种,不同的方法取决于您想要解决的具体问题。让我们讨论训练模型的技术。
1. 特征提取
人们使用这种技术从给定文本中提取特征,但是为什么我们要从给定文本中提取嵌入呢?答案很简单。由于计算机无法理解文本,因此需要有一种文本的表示形式,以便我们可以用来执行各种任务。一旦我们提取嵌入,它们就能够执行情感分析、识别文档相似性等任务。在特征提取中,我们锁定模型的主干层,这意味着我们不会更新这些层的参数;仅更新分类器层的参数。分类器层涉及全连接层。


