AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


AI产品经理必须知道的技术 之 【微调】
发布日期:2024-05-01 06:45:54 浏览次数: 1900


对于AI产品经理,或者想要入行AI产品经理的朋友,可能很多人都会有这样的困惑:我不懂技术,现在AI各种技术文章、专业名词,我都看不懂,我也不是人工智能专业,我到底能不能从事AI产品经理?

我想说,AI技术确实有很高的门槛,懂AI技术会成为产品经理的优势,但技术一定不会是AI产品经理的门槛。

腾哥也非专业科班出身,从事产品经理十多年,C端、B端、数据产品都做过,对技术的理解洞察是我的优势。我的心得就是,要从底层原理去总结抽象技术,或者说,要能用自己的语言、用最通俗的例子,去理解技术。对于技术细节,则交给你专业的技术伙伴。过去这确实是一件比较难的事,但现在互联网上信息非常丰富,再加上GPT的帮助,它的难度大大降低了。

现在AI技术刚刚兴起,现在的AI产品更多侧重在底层模型能力的构建上,因此更多需要技术背景的产品经理驱动,产品经理往往由技术专家、科学家担任。但我我判断不超过3年,AI产品经理的门槛也会极大地降低,那个时候,每个产品经理,都需要理解AI。总得来说,现在岗位少,门槛高是必然的。未来AI产品普遍化、基础设施完善,那么门槛也必然会降低。

所以我想写这个专栏,和大家一起,从一个不懂技术的产品经理的角度,去理解和学习AI技术。在上一篇文章,我写了关于RAG的技术。今天我继续分享关于微调的技术。

点击上方卡片关注【腾哥聊产品



01

什么是微调

微调即fine-turning,是大模型在预训练完成后,需要做的一项必要工作。简单地说,大模型在预训练时,会喂给它大量的语料,让它从中学习基本的知识、推理能力,从而得到一个基础模型。然后,为了让这个模型能更好地适用不同的任务,可以在这个基础模型上进行微调。

例如,我们ChatGPT-4,是在GPT-4基础模型上微调,得到的更适合对话场景的模型。GPT-4-32K长上下文的模型、还有每次gpt的小版本模型更新,都是在基础模型上进行微调得到的。


为什么要微调呢?

因为从头训练一个模型,要花费的算力、时间、人力非常巨大。一般至少需要几个月。而微调,只需要花费非常小的代价,就可以在原来的基础模型上,进行更新迭代。可能只需要几个小时,就能完成一次微调。有很多开源的大模型,都公开了它的基础模型,可以在基础模型上进行微调。


那微调能实现什么效果呢?

微调可以让模型更适合偏向某一类任务、或某一领域知识的内容生成。微调不会改变模型本身的推理能力(这一般是由模型的参数大小、算法、结构等决定的)

但是微调可以给模型补充新的知识,让模型可以按照特定的风格进行回答。具体的原理,我在下文中介绍。


02


微调的基本原理


要了解微调的基本原理,首先我们要大致了解一下大模型的整体架构。


如图就是一个LLM的基本架构,输入嵌入层,会将用户输入的内容表示为向量序列(Embedding),解码器则是LLM的核心,预测要输出的向量预列。最后由输出层将输出向量转化为文本序列。

微调,则是通过改变这些层的输入或权重矩阵,来影响改变最终的输出结果。


使用GPT的用户都知道,写好Prompt的重要性,一个问题,通过更好的Prompt表达,能够让模型给出更高质量的回答。

我们写好的Prompt,就是输入层的输入内容,如果通过微调,对输入嵌入层进行干预,那么就有可能,让用户输入一个简单的prompt也能得到好的结果。


比如很多教程都告诉我们,prompt可以这么写,效果就能快速得到提升:请你扮演一个XX角色,做一件什么事。它的原理就是XX角色这几个关键词,通过输入嵌入层的转化,让它的向量序列发生了改变,同时,解码器中的自注力机制,也会让模型更多关注这些重要的词,最终使模型能够更倾向预测生成这个领域相关的内


当然,微调并不是简单的修改prompt,而是通过改变模型的权重,让输入嵌入层转化的向量序列有所倾向。但是它的思路原理是这样的。


除了改变输入嵌入层的权重矩阵,也可以改变解码器、输出层的权重矩阵,得到的效果会不一样。后面我也会介绍不同类型的微调的区别。


03


微调的分类


微调有很多类型、路线。可以按不同的方式进行划分。


一、按参数规模划分

从参数规模划分,微调可以分为:

全参数微调FFT(Full Fine Tunning)

部分参数微调PEFT(Parameter-Efficient Fine Tuning)


参数大小是大模型的一个关键性能指标。例如开源的ChatGLM3有6B、13B两个版本(60亿参数,130亿参数),马斯克刚刚开源的Gork-1有314B(3140亿参数),ChatGPT3.5 有175B(1750亿参数)。参数的大小直接决定了模型的推理能力。


这些模型训练完,就会保存一个包含所有参数权重的模型文件(例如.bin后缀的文件)

全参数微调,故名思义就是,通过微调,对模型的所有参数权重都进行调整。那么这个微调成本是比较大的,而且风险也会更高,改变了所有参数权重后,那么原来的模型的效果就不能保证了。虽然没有从头训练一个模型那么复杂,但需要的算力、时间都会比较大。


部分参数微调PEFT,就是只调整模型的一部份权重。这样微调的成本就小很多了,而且可以保留基础模型的大部份能力,只对特定领域进行更新。

例如,最简单的套壳大模型只改名字,通过微调,只在你问大模型你是谁时,它回答它是XX(预训者给它的名字),而其它回答都是基础模型原来的能力。


、按训练方式划分

从训练方式划分,微调可以分为:

监督式微调SFT(Supervised Fine Tuning)

基于人类反馈的强化学习微调RLHF(Reinforcement Learning with Human Feedback)

基于AI反馈的强化学习微调RLAIF(Reinforcement Learning with AI Feedback)


监督式微调SFT

这个方案主要是用人工标注的数据,用传统机器学习中监督学习的方法,对大模型进行微调。一种很普遍的训练方法。

例如,要解一个函数y=f(x),通过人工标注一系列{x,y}数据集,来训练模型,在预测时,你给出x,模型就能预测出y。

实践中呢,如果你有一些行业的知识数据,构建成数据集,通过微调训练,就可以训练出一个行业大模型。它既补充了基础模型,对行业知识的缺乏,又让模型在回答问题时,更偏向于回复此领域的知识。(因为微调改变了模型的权重)


基于人类反馈的强化学习微调RLHF

RLHF这也是ChatGPT背后使用的技术,它和监督式微调的区别是什么呢?

监督式微调相当于让大模型背大量的题,把问题和答案都告诉它,做得多了,它就学会怎么回答这一类问题。

RLHF,是让大模型先做题,做对了,就给它奖励。通过这样的训练,大模型自己学会理解什么是对的。这里面人类反馈,就是人类对不同生成答案的评分排名。


具体而言呢,RLHF分为二个步骤。

第一步是先训练一个奖励模型,让这个奖励模型学习人类的偏好,让这个模型的回答,遵循"HHH"原则(helpful, honest, harmless)。

训练这个奖励模型是需要人工标注据集的。例如下这面这个数据集,其中question是问题,response_chosen 代表是好的回答, response_rejected代表的是不好的回答。


由此训练出来的奖励模型,可以判断哪些内容,更符合人类的偏好。


第二步,是使用训练好的奖励模型,让大模型进行强化学习。具体就是用奖励模型对大模型的生成结果进行评分。让大模型知道哪些回答更符合人类的偏好。用这个方式,进行不断地迭代,从而提升模型的整体效果。


由此我们可以想像到,这和人类、动物的学习方式都是一样的:在不断的试错中,找到规律。


基于AI反馈的强化学习微调RLAIF

这和上面的RLHF方法类似,只是由AI反馈替代人类反馈。这个方法最早2022年Google提出的,使用 AI 偏好来训练用于强化学习微调的奖励模型

事实上,许多国内做大模型的团队,也在使用这种方法,用GPT生成的内容来训练自己的AI。


RLHF和RLAIF,也可以称为对齐微调。

因为大语言模型在生成内容时有时可能表现出意外的结果,例如虚假信息、产生有害的、误导性的和偏见性的表达。大模型的本质,只是对下一个token进行预测,它没有自己的价值观。为了让大模型更好地被我们使用,就要避免这些意外行为,所以就有了人类对齐的概念,目的是使大语言模型行为能够符合人类的期望。



04


主流的微调方法


这里介绍几种主流的微调方法。

Prompt Tuning、P-Tuning

LORA、Adapter Tuning

Freeze 

1、Prompt Tuning、P-Tuning、Prefix Tuning

首先说这三种方法,这三种方法,都在是输入嵌入层,对输入进行改变。

Prompt Tuning

通过promot提示微调的形式,让大模型可以针对特定任务,生成特定类型的输出。Prompt Tuning的本质是改变任务格式。我们可以训练模型对文本进行情感判定、摘要、翻译。通过给定一系列的练数据,让大模型学会这种生成任务的模式

它通常不会改变模型架构,也不会改变模型的参数。只是通过设计任务相关的提示(prompt),引导模型生成所需的输出


Prefix Tuning

Prefix Tuning是对任务增加特定的前缀。这个有两种说法,一种是在输入文本添加前缀,还有一种说法是在输入文本Embedding之后添加前缀,并且它会在transformer的每一层都加入这个前缀。


P-Tuning

是通过一个额外的模型,动态生成虚拟标记嵌入(Embedding),对于Prompt Tuning,需要针对每一个任务,构建不同的模板,而且对于提示词的设计会比较敏感,不同的提示词会生成不同的结果。

而P-Tuning是对生成的Prompt  Embedding进行动态的改变。

此外,还有一种P-Tuning v2,是在P-Tuning的基础上,引入了Prefix Tuning的方法,对transformer的每一层,都会增加连续提示


这三种方法,都是不改变模型权重,仅改输入、或输入Embedding的方从,而影响生成结果的方法。



2、LORA、Adapter Tuning


LORA

LORA是在基础模型之外,添加一个小的模型,这样训练这个小的模型的算力、成本都非常低。

然后将这个模型的权重与大模型的权重合并,得到一个新的权重。


LORA模型的应用十分广泛,尤其在图像生成领域。Stable Diffusion的有非常丰富的LORA模型库,只需要几十张图片,就能训练一个特定风格的Lora模型,生成特定风格的图片。


从原理上来说,它是通过改变了最终的模型权重,而影响生成结果的。它主要作用在解码层。


Adapter Tuning

Adapter Tuning 也是为了在不改变基础模型的原始参数的前提下,使模型能够适应新的任务。

在 Adapter Tuning 中,会在模型的每个层或某些特定层之间插入适配器,这些适配器是一些小的神经网络模块,参数相对较少,为“adapters”。这些 adapters 是可以训练的,而原始模型的参数则保持不变。


3、Freeze 

Freeze 方法,即参数冻结,是对原始模型部分参数进行冻结操作,仅训练部分参数,以达到少量算力就可以对大模型进行训练的目的。

在语言模型模型微调中,Freeze 微调方法仅微调 Transformer 后几层的全连接层参数,而冻结其它所有参数。

因此,这种方法,适合在不需要对原始模型进行大范围修改的情况下,仅对少量数据样本进行训练的情况。


05


微调的应用场景


大模型的微调可以有哪些应用场景呢?

其实前面的案也提到一些,我们再来做个总结。


1、通过微调,给大模型补充行业知识。

例如 医疗大模型、法律大模型、代码生成大模型……

2、通过微调,使大模型用于一些特定的任务。

如文本分类、情感判定、翻译、摘要生成……

3、模型能力增强

  • 通过微调,可以使模型能够更好地适应新的数据和任务。

  • 鲁棒性:通过微调,可以提高模型对噪声和干扰的抵抗能力。

  • 可解释性:通过微调,可以使模型的决策过程更加可解释。



关于微调的分享就到儿,如果不对不处,欢迎指正。


点击下方卡片关注【腾哥聊产品





53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询