听说很多人想微调,或者完成了微调。调完发现,模型能用,效果却一般。那哪些点,是作为新手需要知道的呢?
下面是团队小伙伴“艾大叔”的投稿,他的特点:把新手给讲的明明白白。
一:什么是fine tune?
中文译为微调,指的是通过自己的数据在已经训练好的网络结构上进行微调参数,从而使得模型在自定义的任务上能够表现更好。fine tune是一种迁移学习的范式,将gpt作为语言模型学到的大量语言知识迁移到具体任务上,能够低成本快速的训练一个高质量的模型。低成本是因为免去了训练大语言模型的时间和算力成本,快速是因为有了大语言模型的加持,可以通过少量样本,简单训练就能完成一个复杂任务的模型。为什么要fine tune chatgpt。已经能够准确的理解语义了,为什么还要fine tune模型呢?
1. 更准确。通过特定任务的专项学习,能够让模型效果更准确。
2. 定制化。通过fine tune,将定制化的信息让模型理解,比如我问chatgpt:我老婆喜欢吃什么?他不可能知道,但是我fine tune的时候告诉他我老婆喜欢吃火锅,他就能回答这个定制化的问题。
又比如翻译中更想加入:人艰不拆、喜大普奔类网络新词,那么需要语料中针对的加类似通过网络新词翻译的语料,才可以得到更偏向使用网络新词翻译的模型。
3. 输出格式统一。比如我想让他判断一段话的情绪,我只想要简练的情绪判断,而不是一大段话,通过fine tune的答案设置,也可以让他学会特定格式的输出。
4. 更强的泛化能力。特定场景的理解,只需要少量数据(几百到几千都有可能)让模型理解,之后获取同样的理解能力,同个模型可以一直用。
二:哪些任务适合fine tune?
1. 文本分类,比如情绪识别,意图识别等
2. 语义抽取,如抽取文中提到的人物、地点等
3. 摘要,总结一篇文章、新闻。
4. 翻译等等
……
还有很多任务,并不适合或者不需要finetune。在数据量超大、预算无限时,是不存在这个限制的。
三:fine tune模型前需要那些准备工作?
1. 读懂自己的数据。认识、理解自己的数据永远是自然语言处理任务的第一步,也是最重要的一步,以tweet内容的情绪分类为例:正向情绪,反向情绪占比多少,哪些内容比较容易区分情绪,哪些内容虽然有情绪但是需要一定的分析才能知道结果,有哪些Corner case容易被误解等等,理解了数据才能设计任务,和设计训练数据。
2. 明确定义自己的任务。任务的定义是跟自己的需求绑定在一起的,比如我想知道用户对某件商品的评价,那么:物流慢、贵等都可以认为是负向的。如果我想统计tweeter用户的戾气指数,那么客观的评价一个商品好与不好都可认为是中性的情绪,而谩骂、诋毁的内容才会被认为是负向的。
另外设计任务要记得给不想要的类别设一个other类别,模型需要处理所有的文本,把任务定义以外的类别设置为other能够让模型更明确各种类别数据的边界。
四:准备fine tune的数据
准备数据需要遵循以下原则:
(1)定制化程度越高、任务越难需要用于训练的数据越多
(2)hard example特别重要,重点加数据
(3)fine tune设计prompt也管用,比如下面的例子:
input:Decide whether a Tweet’s sentiment is positive, neutral, or negative. Tweet: I loved the new Batman movie!
output:Sentiment: positive
input中说明这是一个tweet内容,任务是判断positive, neutral, or negative的情绪,Tweet: 指明tweet内容是哪部分,这些内容都有利于模型理解语义完成任务,包括output中开头是Sentiment:也有利于模型根据这个提示进一步输出答案。
(4)不要泄露或者影射答案,比如上面的例子我加上:tweet中提到了loved,他的情绪可能是?
这样的提示几乎告诉模型了答案,会让模型依赖你的提示内容。当没有这类提示时,模型的能力会大大降低。
fine tune模型的质量特别依赖任务定义是否清晰,训练语料是否典型、充足。
所以这部分准备工作特别重要。
fine tune的过程,可参考:ChatGPT微调全过程,只需2刀(10分钟)
官方文档可参考:https://platform.openai.com/docs/guides/fine-tuning
五:如何评估fine tune的结果?
不同的业务场景,评估指标很不相同,不可一概而论。
比如分类模型评估指标,常用召回率和精确率来衡量。召回率是以实际样本为判断依据,实际为正例的样本中,被预测正确的正例占总实际正例样本的比例。精确率是以预测结果为判断依据,预测为正例的样本中预测正确的比例。为了平衡二者结果,一般用F1。召回和精确两个都好才是真的好(感觉像是广告词)。
那什么任务,什么数据,应该达到什么水准,这个才是衡量你微调结果好坏的标准。而不是,把模型步骤走下来,就大功告成了。
评估指标和数据集,永远是你在开始微调or训练模型前,就要考虑清楚的。
当然,如果只想根据自己的数据,做个自己的数字人,可以不用考虑。
过往文章:
1. chatgpt:送头像啦 【包满意】
2. ChatGPT:【万能话术模板】+99个提示词【请收藏】
3. 您使用的ChatGPT错了!以下是如何领先于 99% 的 ChatGPT 用户
4.私域知识库的问答:chatgpt :全流程,根据自有知识库,检索生成式问答
5. midjourney ,助你画出美图系列(一)
6. midjourney, 助你画美图 不熬夜(二)
7. midjourney ,新手画图 不熬夜(三)
本网站文章皆为作者授权。发布者:虹七,转载请注明出处:https://ruofanseo.com/fine-tune-train/