这篇文章将用通俗易懂的语言带你走进模型微调的世界,揭示它是如何将一个广泛学习的预训练模型,通过精细调整,使其在特定领域达到更高的专业水平。
模型微调其实就是让一个非常博学的通才,着重再学习某一个领域的知识,进而变成专才的这么一个过程。
非常博学的通才,就是指的预训练模型,也叫通用大模型或基座模型,比如最出名的GPT,还有谷歌的BERT,百度的ERNIE,其实都是预训练大模型。
这些预训练模型经过了全量的训练,学习了世间非常多的知识信息,几乎就是一本百科全书。
而且预训练模型也已经掌握了很多通用的知识模式,比如语言结构,语义特征等,拥有了识别用户意图,生成文本或图片、视频等能力。
你可以理解预训练模型已经是一个本科生的水平了,你需要通过微调,让预训练模型学习更多特定专业领域的知识,让它在某个领域里达到研究生甚至是博士生的水平,满足在不同特定领域里的实际应用需求。
之所以叫模型微调,重点就是在一个“微”字上,相较于预训练大模型在训练时的海量数据学习,模型微调用到的数据,简直就是九牛一毛。
相应的模型微调所需要的时间和算力资源也会少很多,可以比较高效、且低成本的训练出满足业务需求的模型进行后续的评估部署及应用。
比如要通过微调进行影评的情感分类,首先需要选择合适的预训练模型,是文本类的,还是视频类的,像影评的话,就可以选择一个文本类的预训练模型,例如BERT。
然后要在保证数据质量的前提下,收集准备尽可能多的影评数据,并将收集到的数据集按照8:1:1或7:2:1的比例,划分为训练集、验证集、测试集。
训练集可以用来进行模型训练,验证集可以在训练过程中,根据验证集结果和模型性能,调整模型的一些参数,最终达到模型可用状态,测试集用来最终评估模型的效果。
验证集和测试集虽然都是用来看模型效果的,但还是有区别的,因为验证集在模型训练过程中,起到了验证结果,调整参数的作用,所以说单纯的看验证集结果,模型实际的效果可信但又不完全可信,所以还是不能少了测试集。
数据集搞定后,接下来就是准备进行模型训练了,训练前需要选用合适的微调策略,比如是全量微调,还是部分微调,是采用LoRA微调还是SFT微调,具体的技术细节就不做探讨了,只需要知道模型微调策略的本质,其实就是调整预训练模型的参数,通过训练获得一版符合业务要求的模型。
模型微调时,模型一般会进行多轮训练,训练过程中需要根据验证集的损失、准确率等指标调整模型超参数(包括学习率、迭代次数、批量大小、正则化参数、优化器选择等)。
模型训练后,就可以用测试集来验证模型的实际效果,评估模型的最终性能。
以上就是模型微调的一个大概步骤,具体的技术细节没有做详细阐述,感兴趣的同学可以自行学习一下。
本文由 @向上的小霍 原创发布于人人都是产品经理,未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。