大模型导论
上QQ阅读APP看书,第一时间看更新

1.1.2 关键技术 

大模型(如GPT-4、LLaMA2等)的优异性能离不开多种技术的支持。本节将介绍大模型的常用技术,这些技术在大模型的研究过程中提供了重要的理论支撑。

1.迁移学习

迁移学习(Transfer Learning)最早于2005年由加拿大工程院和皇家科学院院士杨强教授提出[14]。作为机器学习的重要分支,迁移学习是指利用在源领域中训练好的模型,将其知识和能力迁移到新的目标领域,以解决该领域的问题。通常,我们会首先在数据量大的领域训练模型,然后将其应用于数据量较小的领域。

换言之,迁移学习通过将模型已学习的知识迁移到新的任务上,以提高模型在新任务上的性能。在大模型的开发过程中,开发者常常将在大型文本数据集上训练好的模型作为基座,通过微调等手段让模型适应新的下游任务。这一应用的核心是运用已有的基础知识来学习更专业的知识。

2.零样本学习

2009年,Lampert等人发布Animals with Attributes数据集(该数据集已在由Lampert领导的奥地利科技学院机器学习与计算机视觉小组网站开源),并提出一种基于属性的类间迁移学习机制。该机制对于零样本学习(Zero-shot Learning)的发展起到重要的奠基作用[15]。零样本学习的核心在于使模型能够识别那些从未在训练集中出现过的数据类别,从而扩展模型的应用范围并增强其泛化能力。

在大模型研究中,模型的零样本学习能力已成为评估模型性能的重要指标之一。与此同时,提示词(Prompt)作为大模型的一种关键输入形式,经常与零样本学习协同使用,以优化模型的性能。提示词可以被视作用户向大模型发送的指令。通过精心设计提示词,用户可以引导大模型生成符合期望的内容。例如下面的示例。

模型输入:你现在需要从这句话中抽取出城市名称和目的地信息。我想去上海的外滩,那里有壮观的夜景。

模型输出:上海,外滩

零样本学习存在使用限制,只有当用户的目标任务与模型已具备的能力相匹配时才能获得最优的零样本学习效果。

用户在实际使用大模型时,通常会根据任务的复杂性选择不同的提示词策略。提示词策略主要包含3种:零样本提示(Zero-shot Prompting)适用于简单任务,无须向大模型提供任何示例,直接下达指令即可;在面对较为复杂的任务时,小样本提示(Few-shot Prompting)更为有效,它通过提供少量示例来帮助大模型更好地理解并执行任务;当面临复杂的推理任务(如算术推理、常识推理和符号推理等)时,思维链提示(Chain-of-Thought Prompting)则成为首选,它通过向大模型提供带有中间推理步骤的示例来引导大模型逐步完成推理。

3.小样本学习

小样本学习(Few-shot Learning)是指大模型通过使用很少的样本来进行学习。与零样本学习相似,小样本学习也经常与提示词配合使用。如果大模型无法理解用户提出的问题,或者用户需要大模型按照特定的格式进行输出时,用户可以使用小样本学习方法,在提示词中加入引导信息并给出一定的样例,指导大模型生成满足业务要求的输出结果。

接下来对比小样本学习和零样本学习在构造提示词时的异同。在下面的示例中,我们使用零样本学习方法构造提示词,要求模型对句子进行分词。从下面的示例可以看到,模型的输出结果并不正确。

模型输入:请对这句话进行分词。我一把把车把把住了

模型输出:我/一把把/车把/把/住/了

如果在提示词中给出部分示例,模型将可以生成更好的输出结果。在下面的示例中,我们使用小样本学习来构造提示词。

模型输入:请参照下面的示例,对给定语句进行分词,示例数据如下:

我想过过儿过过的生活

对上述示例进行解析,“我”是主语,“想过”是指想要尝试,“过儿”指的是《神雕侠侣》中的杨过,“过过的生活”指的是曾经生活过的生活。因此,最终的分词结果应该是:我/想过/过儿/过过的/生活。

向模型输入由小样本学习构造的提示词后,对于相同的分词任务,模型可以生成更好的结果。

模型输入:我一把把车把把住了

模型输出:我/一把/把/车把/把住了

4.持续学习

在一般情况下,当开发者的需求或所在的应用场景发生变化时,往往需要重新训练模型。作为一种增量学习,持续学习(Continual Learning)的核心思想是在一系列任务上训练模型,模型保留在旧任务上学习的知识并继续在新任务上进行训练。该方法在深度神经网络时代被赋予了更大的实用价值[16]。以百度公司在2019年7月推出的ERNIE 2.0模型[17]为例,研究者使用持续学习方法来训练模型,引入了大量的预训练任务。ERNIE 2.0模型在学习新任务的同时保留对旧任务的记忆,渐进式地学习词语、句法和语义表征知识。在多项自然语言处理任务上,它都取得了超过BERT模型与XLNet模型的表现。

5.多任务学习

传统的机器学习主要基于单任务的模式进行学习。对于复杂的任务,首先将其分解为多个独立的单任务并进行处理,然后对学习的结果进行组合。多任务学习(Multi-Task Learning)是一种联合学习方法[18]。在这种方法中,模型通过对多个任务进行并行学习,共享表征信息,可以取得比训练单任务更好的表现。此时模型具有更好的泛化能力。

多任务学习的关键在于寻找任务之间的关系。如果多个任务之间的关系搭配恰当,那么不同任务能够提供额外的有用信息,进而可以训练出表现更好、更鲁棒的模型。例如,GPT-2模型采用多任务学习,通过在WebText数据集(40GB大规模数据集)上进行自监督预训练,在多项任务上取得SOTA(State-Of-The-Art,在指定领域最高水平的技术)结果。

6.RLHF

强化学习(Reinforcement Learning,RL)是指通过不断与环境交互、试错,最终完成特定目的或者使得整体行动收益最大化的技术。强化学习不需要标注数据集,但是需要在每一步行动后得到环境给予的反馈,基于反馈不断调整训练对象的行为。

2017 年,OpenAI公司和DeepMind公司的研究人员在论文“Deep Reinforcement Learning from Human Preference”中提出基于人类偏好的强化学习概念。研究人员通过实验证明,将非专家标注的少量数据作为反馈,可以提高模型在雅达利游戏中的性能[19]

2022年,OpenAI公司在InstructGPT模型的训练过程中引入RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)。该技术在大模型训练中发挥了巨大作用,有效减少了模型输出中的有害内容,力图实现模型与人类的价值观对齐[20]。RLHF是涉及多个模型和不同训练阶段的复杂技术,这里将其分成3个阶段进行讲解。

第一阶段,OpenAI公司将GPT-3模型作为InstructGPT模型的预训练模型,借助数十名人工标注师为训练数据集中的问题编写预期输出结果(人工编写每个问题的答案),利用标注数据对GPT-3模型进行监督训练。模型首先通过前向推理生成多个输出结果,然后通过人工对模型的输出结果进行打分和排序,并将打分和排序数据用于训练奖励模型(Reward Model)。

第二阶段,目标是训练奖励模型。奖励模型应能评判InstructGPT模型的输出结果是否符合人类偏好。如图1-5所示,奖励模型接收一系列输入并返回标量奖励,标量奖励与人类的反馈数据共同参与损失函数的计算。在模型的选择上,奖励模型可以是经过微调或根据偏好数据重新训练的语言模型。

图1-5 RLHF训练过程[20]

第三阶段,采样新的输入句子,首先利用PPO(Proximal Policy Optimization,近端策略优化)网络生成输出结果,然后奖励模型计算反馈,并将结果作用于PPO网络,以此反复,最终训练出与人类价值观对齐的模型。

PPO算法由OpenAI公司于2017年提出,它是一种基于策略的强化学习算法[21]。它将智能体(Agent)当前的状态输入神经网络,可以得到相应的下一步行动(Action)和奖励(Reward),并更新智能体的状态。OpenAI公司的John Schulman等人在一系列基准任务上对PPO算法进行测试,发现该算法比其他算法在样本复杂性、简单性和运行时间上具有更好的平衡性。

2023年,Google公司提出RLAIF(Reinforcement Learning from AI Feedback,基于AI反馈的强化学习)。该技术使用人工智能模型来取代RLHF中的人工标注师。与RLHF相比,模型经过RLAIF训练后,可以在无害内容生成、文本总结等任务上达到与RLHF相近的水平[22]

7.上下文学习

2020年6月,OpenAI公司在发布GPT-3模型的同时提出上下文学习(In Context Learning)[2]概念。基于上下文学习,模型不根据下游任务来调整参数,而是连接下游任务的输入输出,以此作为提示词引导模型根据测试集的输入生成预测结果。该方法的实际效果大幅超越无监督学习。


[2] 上下文学习又称情境学习。

8.思维链

思维链(Chain of Thought)最早由Google公司的高级研究员Json Wei等人于2022年提出。思维链是一种离散式的提示学习方法,可以提高模型在复杂任务上的性能[23]。如图1-6所示,为了指导大模型进行数学运算,研究人员给出少量人工编写的推理示例,并将步骤解释清晰,引导大模型对相似问题进行推理。此处将包含人工编写的详细推理过程的提示词称为思维链提示。思维链可以激发大模型的多步推理能力。这个过程类似于人类通过学习他人的思维方式来进行深度思考以解决复杂任务。

图1-6 以思维链方法指导模型生成正确答案

9.提示工程

在人工智能领域,尤其是大模型中,提示词对于模型的生成结果和质量具有重要影响。一个好的提示词可以帮助模型更好地理解用户的意图和需求,并生成更加准确、有针对性的回复。所以,也可以将提示工程看作一种优化和改进人工智能模型性能的方法。前面提到的零样本提示和小样本提示都属于提示工程的范畴。这类方法并不涉及对模型参数的修改或重新训练,而是通过特殊设计的提示词引导模型生成更好的结果。

在实际使用中,如果我们需要使模型快速实现特定的任务目标,或者需要以一定的格式生成内容,则可以使用提示工程方法,通过少量样例或具有一定格式的样例引导模型生成内容。与微调相比,提示工程不需要用户拥有大量的人工智能领域专业知识,只需要对特定任务有一定的了解,设计合适的提示文本即可。