AI产品经理的必踩坑:模型微调
对于许多想要从事AI产品经理工作的人来说,常常会陷入这样的困惑:
我没有技术背景,面对AI领域那些复杂的技术文章和专业术语,我感到无从下手,我到底能不能胜任AI产品经理这个岗位呢?
AI技术固然存在较高的门槛,但技术并不是AI产品经理的必备门槛。掌握AI技术固然会让产品经理更具优势,但不懂技术同样可以成为一名优秀的AI产品经理。
就像腾哥,他并非专业科班出身,却已经从事产品经理工作十多年,无论是C端、B端还是数据产品,他都游刃有余。在他看来,对技术的理解和洞察才是关键。
他总结出的心得是:要从底层原理出发,对技术进行总结和抽象,用通俗易懂的语言和例子去理解技术,而将那些复杂的技术细节交给专业的技术伙伴去处理。
过去,这确实是一件比较困难的事情,但如今,互联网上信息丰富,再加上GPT等工具的助力,难度已经大大降低了。
目前,AI技术正处于起步阶段,AI产品更多地侧重于底层模型能力的构建,因此需要具备技术背景的产品经理来推动。通常情况下,产品经理的岗位由技术专家或科学家担任。但我认为,这种情况不会持续太久,不出3年,AI产品经理的门槛将会大幅降低。到那时,每个产品经理都需要对AI有所了解。总的来说,现在AI产品经理岗位少、门槛高是必然的,但随着未来AI产品的普及和基础设施的完善,门槛必然会降低。
1.微调是什么
微调(fine-tuning)是大模型在预训练完成后必须进行的一项工作。简单来说,在预训练阶段,大模型会通过大量的语料学习基本知识和推理能力,从而形成一个基础模型。为了使这个基础模型能够更好地适应不同的任务,就需要在其基础上进行微调。
例如,我们所熟知的ChatGPT-4,就是在GPT-4基础模型上经过微调后得到的,更适合对话场景的模型。同样,GPT-4-32K长上下文的模型以及每次GPT的小版本模型更新,也都是通过在基础模型上进行微调实现的。
为什么要进行微调呢?
因为从头开始训练一个模型,需要耗费巨大的算力、时间和人力,通常至少需要几个月的时间。而微调只需要付出很小的代价,就可以在原有的基础模型上进行更新和迭代,可能几个小时就能完成一次微调。而且,许多开源的大模型都公开了它们的基础模型,供人们在其基础上进行微调。
微调能够实现什么效果呢?
微调可以让模型更适合某一类任务或某一领域的知识内容生成。需要注意的是,微调并不会改变模型本身的推理能力,因为推理能力是由模型的参数大小、算法和结构等因素决定的。但微调可以为模型补充新的知识,使其能够按照特定的风格进行回答。具体的原理将在下文中介绍。
2.大模型微调的基本原理
要理解微调的基本原理,我们首先要对大模型的整体架构有一个大致的了解。
如图所示,这是一个LLM(大型语言模型)的基本架构。输入嵌入层会将用户输入的内容表示为向量序列(Embedding),解码器是LLM的核心部分,负责预测要输出的向量序列。最后,输出层将输出向量转化为文本序列。

来自AI生成
微调的过程就是通过改变这些层的输入或权重矩阵,来影响并改变最终的输出结果。
使用过GPT的用户都知道,编写高质量的Prompt(提示)非常重要。一个好的Prompt能够让模型给出更高质量的回答。我们编写的Prompt就是输入层的输入内容。如果通过微调对输入嵌入层进行干预,那么即使用户输入一个简单的Prompt,也有可能得到好的结果。
例如,很多教程都建议将Prompt写成“请你扮演一个XX角色,做一件什么事”的形式,这样可以快速提升效果。
其原理是“XX角色”这几个关键词通过输入嵌入层的转化,改变了向量序列,同时解码器中的自注意力机制会让模型更多地关注这些重要的词,从而使模型更倾向于预测生成与该领域相关的内容。
当然,微调并不是简单地修改Prompt,而是通过改变模型的权重,让输入嵌入层转化的向量序列产生倾向。
不过,其思路原理与上述方式是类似的。除了改变输入嵌入层的权重矩阵,还可以改变解码器、输出层的权重矩阵,从而得到不同的效果。接下来,我将介绍不同类型的微调的区别。
3.模型微调的分类
微调有多种类型和路线,可以根据不同的方式进行划分。
按参数规模划分
从参数规模来看,微调可以分为以下两类:
1. 全参数微调FFT(Full Fine Tuning)
2. 部分参数微调PEFT(Parameter-Efficient Fine Tuning)
参数大小是大模型的一个关键性能指标。例如,开源的ChatGLM3有6B(60亿参数)和13B(130亿参数)两个版本,马斯克刚刚开源的Gork-1有314B(3140亿参数),而ChatGPT3.5则有175B(1750亿参数)。
参数的大小直接决定了模型的推理能力。这些模型训练完成后,会保存一个包含所有参数权重的模型文件(例如以.bin为后缀的文件)。
全参数微调,顾名思义,就是通过微调对模型的所有参数权重进行调整。这种微调方式的成本较大,风险也较高。一旦改变了所有参数权重,原来模型的效果就无法保证了。虽然它没有从头训练一个模型那么复杂,但仍然需要较大的算力和时间。
部分参数微调PEFT则是只调整模型的一部分权重。这种方式的微调成本要小得多,并且可以保留基础模型的大部分能力,仅对特定领域进行更新。例如,最简单的套壳大模型只改名字的情况,通过微调,只在你问大模型“你是谁”时,它回答“我是XX”(预训练者给它的名字),而其他回答则保持基础模型原来的能力。
按训练方式划分
从训练方式来看,微调可以分为以下三类:
监督式微调SFT
基于人类反馈的强化学习微调RLHF
基于AI反馈的强化学习微调RLAIF
监督式微调:这种方案主要是利用人工标注的数据,采用传统机器学习中监督学习的方法对大模型进行微调,这是一种非常普遍的训练方法。
例如,要解一个函数y=f(x),可以通过人工标注一系列{x,y}数据集来训练模型。在预测时,你给出x,模型就能预测出y。在实践中,如果你有一些行业的知识数据,并将其构建成数据集,通过微调训练,就可以得到一个行业大模型。
它既补充了基础模型对行业知识的不足,又让模型在回答问题时更倾向于回复该领域的知识,因为微调改变了模型的权重。
基于人类反馈的强化学习微调:
RLHF是ChatGPT背后使用的技术,它与监督式微调的区别在于:监督式微调相当于让大模型背大量的题,把问题和答案都告诉它,做得多了,它就学会怎么回答这一类问题。而RLHF则是让大模型先做题,做对了就给它奖励,通过这种方式让大模型自己学会理解什么是对的。其中,人类反馈是指人类对不同生成答案的评分排名。
具体来说,RLHF分为两个步骤。第一步是训练一个奖励模型,让这个奖励模型学习人类的偏好,使模型的回答遵循“HHH”原则(helpful, honest, harmless)。
训练这个奖励模型需要人工标注的数据集。例如,数据集中包含问题(question)、好的回答(response_chosen)和不好的回答(response_rejected)。通过这样的数据集训练出来的奖励模型,可以判断哪些内容更符合人类的偏好。
第二步是使用训练好的奖励模型,让大模型进行强化学习。具体做法是用奖励模型对大模型的生成结果进行评分,让大模型知道哪些回答更符合人类的偏好。通过这种方式不断迭代,从而提升模型的整体效果。这与人类和动物的学习方式类似,都是在不断的试错中找到规律。
基于AI反馈的强化学习微调RLAIF:
这种方法与RLHF类似,只是用AI反馈替代了人类反馈。它最早是由Google在2022年提出的,利用AI偏好来训练用于强化学习微调的奖励模型。事实上,许多国内从事大模型开发的团队也在使用这种方法,用GPT生成的内容来训练自己的AI。RLHF和RLAIF也可以被称为对齐微调。因为大语言模型在生成内容时,有时可能会出现意外的结果,例如虚假信息、有害的、误导性的或带有偏见的表达。大模型的本质是对下一个token进行预测,它本身没有价值观。
以下介绍几种常见的微调方法
1. Prompt Tuning、P-Tuning、Prefix Tuning
这三种方法的核心在于对输入嵌入层进行调整,通过改变输入或输入嵌入的方式来影响模型的输出。
Prompt Tuning
Prompt Tuning 是通过设计特定的提示(Prompt),让大模型能够针对特定任务生成所需的输出。它的本质是改变任务的输入格式,而不是直接修改模型的架构或参数。例如,我们可以训练模型对文本进行情感分析、摘要生成或翻译。通过提供一系列标注好的训练数据,模型可以学习到如何根据提示生成符合任务要求的输出。这种方法的优点是简单易用,不需要对模型进行复杂的调整。
Prefix Tuning
Prefix Tuning 是在输入文本中添加特定的前缀,或者在输入文本的嵌入(Embedding)之后添加前缀。这些前缀会在 Transformer 模型的每一层中发挥作用,帮助模型更好地理解任务的上下文。这种方法类似于给模型提供额外的背景信息,使其能够更准确地生成与任务相关的输出。
P-Tuning
P-Tuning 则是通过一个额外的模型动态生成虚拟标记嵌入(Embedding)。与 Prompt Tuning 不同,P-Tuning 不需要为每个任务设计固定的提示模板,而是通过动态调整嵌入向量来适应不同的任务。这种方法更加灵活,能够根据任务的具体需求动态调整模型的输入嵌入。此外,P-Tuning v2 在此基础上引入了 Prefix Tuning 的方法,进一步增强了模型对任务的理解能力。
这三种方法的共同点是它们都不改变模型的权重,而是通过调整输入或输入嵌入的方式来影响模型的输出。这种方法的优点是计算成本低,且不会破坏模型原有的性能。
2. LORA、Adapter Tuning
这两种方法的核心在于在不改变基础模型原始参数的前提下,通过添加额外的模块或调整权重来优化模型的性能。
LORA
LORA(Low-Rank Adaptation)是在基础模型之外添加一个小的模型,这个小模型的训练成本和算力需求都非常低。通过将小模型的权重与基础模型的权重合并,得到一个新的权重矩阵,从而实现对模型的优化。LORA 的应用非常广泛,尤其是在图像生成领域。例如,Stable Diffusion 提供了丰富的 LORA 模型库,只需几十张图片,就可以训练出特定风格的 LORA 模型,生成符合特定风格的图片。LORA 的原理是通过改变最终的模型权重来影响生成结果,主要作用于解码层。
Adapter Tuning
Adapter Tuning 是通过在模型的每一层或某些特定层之间插入适配器(Adapter)来实现的。这些适配器是小型的神经网络模块,参数较少,可以进行训练,而基础模型的原始参数则保持不变。这种方法的优点是可以在不改变基础模型架构的情况下,快速适应新的任务或领域。通过训练适配器,模型可以更好地理解和处理特定任务的数据,从而提高性能。
3. Freeze
Freeze 方法是一种参数冻结技术,通过对原始模型的部分参数进行冻结,只训练部分参数,从而在少量算力的情况下完成对大模型的训练。在语言模型的微调中,Freeze 方法通常只微调 Transformer 的后几层全连接层参数,而冻结其他所有参数。这种方法适用于不需要对原始模型进行大规模修改的场景,尤其是当训练数据较少时,可以快速调整模型以适应新的任务。