微调(Fine-tuning) 是机器学习中迁移学习的一种关键技术,指在预训练模型的基础上,针对特定任务或数据集进行进一步训练调整的过程。其核心在于利用预训练模型已学习到的通用特征,通过少量数据和计算资源,使模型适应新任务的特定需求。
一、监督微调(Supervised Fine-Tuning,SFT)
1. 冻结(Freeze)监督微调
部分或全部预训练模型的权重被冻结,仅对模型的部分层或新增的附加组件进行训练。比如下面的代码所示:
# 遍历模型的所有参数和名称
for name, param in model.named_parameters():
# 指定冻结层,(layers.27, layers.26, layers.25, layers.24, layers.23)之外的所有参数
if not any(nd in name for nd in ["layers.27", "layers.26", "layers.25", "layers.24", "layers.23"]):
# 将参数的 requires_grad 属性设置为False,即冻结该参数
param.requires_grad = False
举个例子:
就像孩子已经学会了加减法,你不再让他重新学习这些基础运算(冻结基础运算知识),而是直接教他如何将应用题中的文字信息转化为数学表达式(训练新的解题技巧)。例如,孩子已经很熟练地掌握2+3=5,现在你教他如何解决“小明有2个苹果,小红给了他3个,现在小明有几个苹果?”这类问题。
2.全参数微调(Full Parameter Fine Tuning)
对模型的所有权重进行调整,适用于拥有大量与任务高度相关的高质量训练数据的情况。不依赖开源模型底座知识,基于行业数据重头学习。
3.部分参数微调(Sparse Fine Tuning / Selective Fine Tuning)
仅选择性地更新模型中的某些权重,适用于需要保留大部分预训练知识的情况。
二、参数高效微调(Parameter-Efficient Fine-Tuning,PEFT)
1.LoRA(Low-Rank Adaptation)微调
LoRA 的原理其实并不复杂,它的核心思想是在原始预训练语言模型旁边增加一个旁路,做一个降维再升维的操作,来模拟所谓的 intrinsic rank(预训练模型在各类下游任务上泛化的过程其实就是在优化各类任务的公共低维本征(low-dimensional intrinsic)子空间中非常少量的几个自由参数)。**训练的时候固定预训练语言模型的参数,只训练降维矩阵 A 与升维矩阵 B。**而模型的输入输出维度不变,输出时将 BA 与预训练语言模型的参数叠加。用随机高斯分布初始化 A,用 0 矩阵初始化 B。 这样能保证训练开始时,新增的通路BA=0从,而对模型结果没有影响。
在推理时,将左右两部分的结果加到一起即可,h=Wx+BAx=(W+BA)x, 所以,只要将训练完成的矩阵乘积BA跟原本的权重矩阵W加到一起作为新权重参数替换原始预训练语言模型的W即可,不会增加额外的计算资源。
举个例子:
想象你想教学生们怎样进行快速心算而不去完全打破他们原有的学习方法。你决定只引入一个简化版本的心算技巧,让他们在现有知识的基础上进行少量调整。这就像是把原有的学习方式轻量化处理,只增加所需的少量新知识,而不是重新教授整个数学课程。
LoRA 的最大优势是速度更快,使用的内存更少;因此,可以在消费级硬件上运行。
2.QLoRA(Quantized Low-Rank Adaptation)微调
则是 LoRA 的一个扩展版本,它结合了 LoRA 的低秩适配器和量化技术。QLoRA 进一步优化了计算效率和存储需求,特别是在极端显存受限的环境下。与 LoRA 不同的是, QLoRA 会将插入的低秩适配器层的部分权重进行量化(通常是量化为INT4或INT8),在保持性能的同时显著降低模型的存储和计算需求。
举个例子:
针对学生中一些学习资源(如时间或精力)更加有限的情况,你进一步优化教学方法,不仅简化了学习内容(类似LoRA),同时还用了一些有助于记忆的技巧(比如使用图像或口诀),从而更有效地传授知识。这样,每个学生能在有限时间内学会心算法。在技术上,QLoRA涉及量化(quantization)技术,将模型的一部分权重参数存储在较低精度的数值格式中,以此减少内存使用和计算量,同时结合LoRA的低秩调整,让适应过程更加高效。
3.Prompt Tuning微调
Prompt Tuning的出发点,是基座模型(Foundation Model)的参数不变,为每个特定任务,训练一个少量参数的小模型,在具体执行特定任务的时候按需调用。
Prompt Tuning的基本原理是在输入序列X之前,增加一些特定长度的特殊Token,以增大生成期望序列的概率。
具体来说,就是将X = [x1, x2, …, xm]变成,X = [x
1, x2, ..., x
k; x1, x2, …, xm], Y = WX`。
如果将大模型比做一个函数:Y=f(X),那么Prompt Tuning就是在保证函数本身不变的前提下,在X前面加上了一些特定的内容,而这些内容可以影响X生成期望中Y的概率。
4.P-tuning v2微调
Prefix Tuning的灵感来源是,基于Prompt Engineering的实践表明,在不改变大模型的前提下,在Prompt上下文中添加适当的条件,可以引导大模型有更加出色的表现。
Prefix Tuning的出发点,跟Prompt Tuning的是类似的,只不过它们的具体实现上有一些差异。Prompt Tuning是在Embedding环节,往输入序列X前面加特定的Token。而Prefix Tuning是在Transformer的Encoder和Decoder的网络中都加了一些特定的前缀。
具体来说,就是将Y=WX中的W,变成W = [Wp; W],Y=W
X。
举个例子:
假设你有一个已经会弹很多曲子的钢琴家,但他需要为一首新曲子调整演奏风格。他不会重新学习钢琴的基本指法(不改变模型主体权重),而是在演奏前先弹一段特定的音阶(可学习的prompt嵌入),让自己的手指更适应新曲子的节奏和感觉。
三、基于人类反馈的强化学习微调(RLHF)
将人类的反馈通过强化学习的方式引入到对大模型的微调中,使大模型生成的结果更加符合人类的期望。
举个例子:
想象你训练一只小狗学会握手。最初,狗可能不太明白握手的意思,你通过给它零食奖励来强化它正确的握手行为。每次它抬起爪子碰到你的手,你就给它一块小零食,让它知道这样做是正确的,慢慢地,狗就会越来越熟练地学会握手这个动作,而且会根据你的反馈不断调整自己的动作以获得更多的奖励。
如何系统学习掌握AI大模型?
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份
全面的AI大模型学习资源
,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享
!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 2024行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以
微信扫描下方CSDN官方认证二维码
,免费领取【保证100%免费
】