微信扫码
与创始人交个朋友
我要投稿
对于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
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
因此,这种方法,适合在不需要对原始模型进行大范围修改的情况下,仅对少量数据样本进行训练的情况。
05
—
微调的应用场景
大模型的微调可以有哪些应用场景呢?
其实前面的案也提到一些,我们再来做个总结。
1、通过微调,给大模型补充行业知识。
例如 医疗大模型、法律大模型、代码生成大模型……
2、通过微调,使大模型用于一些特定的任务。
如文本分类、情感判定、翻译、摘要生成……
3、模型能力增强
通过微调,可以使模型能够更好地适应新的数据和任务。
鲁棒性:通过微调,可以提高模型对噪声和干扰的抵抗能力。
可解释性:通过微调,可以使模型的决策过程更加可解释。
关于微调的分享就到儿,如果不对不处,欢迎指正。
点击下方卡片关注【腾哥聊产品】
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-05-14
2024-04-26
2024-03-30
2024-04-12
2024-05-10
2024-07-18
2024-05-28
2024-05-22
2024-04-25
2024-04-26
2024-11-22
2024-11-22
2024-11-21
2024-11-20
2024-11-19
2024-11-18
2024-11-18
2024-11-16