AI产品经理必须知道的技术 之 【微调】

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

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

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

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

所以我想写这个专栏,和大家一起,从一个不懂技术的产品经理的角度,去理解和学习AI技术。

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、模型能力增强

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

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

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

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值