跳到主要内容

微调模型概述

"微调模型是炼金术的至高秘要”。 传奇炼金术师伊达尔.阿尔凯米在《炼金手册》开篇写到

微调模型介绍

什么是微调模型?

让我们先来考虑几种现实场景

  1. 假设现在你喜欢某个明星,你希望让模型生成这个明星的照片。这时候,你该怎么告诉模型,你要生成这个明星的照片?
  2. 假设现在你希望聊天机器人陪你玩角色扮演游戏,聊天机器人扮演魅魔/猫娘,在对话中,你喜欢上了这个猫娘,但是,在你开启一个新的对话上下文,想要复制之前的输入,再次让聊天机器人扮演这个猫娘的时候,聊天机器人的说话风格和性格和之前的明显不同了。怎么保证聊天机器人的说话风格/性格是稳定的?
  3. 你的某个朋友x去世了,你希望聊天机器人能扮演他和你聊天,为了尽可能的让聊天机器人像x,你给聊天机器人输入了复杂的背景设定,但是由于背景设定太长,往往你和他聊几句话,聊天机器人就因为对话上下文太长遗忘之前的内容了,怎么才能解决这个问题?

这三种场景面临的问题,简单的通过修改模型的输入(也叫 prompt )都没法解决,这里面存在的问题包括

  1. 通过自然语言可能没法描述想要的生成内容

    例如对于人脸来说,即使我们告诉模型,这个明星是大眼睛,高鼻梁,黑色头发…,模型仍然无法准确的知道我们希望生成的人是什么样子,我们无法用自然语言来准确描述一个人的人脸

  2. 通过自然语言简单描述,无法保证模型生成的内容是稳定的

    例如在角色扮演这种场景中,我们告知聊天机器人,她需要扮演某一个角色,即使我们通过文字描述了这个角色的说话风格或者性格,但是在多次扮演,多次对话上下文中,聊天机器人的回答仍然会和我们设定的不同。

    简单的通过文字来约束模型生成的内容,精确度通常比较低同时我们本来就没法通过简单的文字来精确的描述一个人

  3. 简单通过文字来限制模型时,限定性的文字太长,导致真正的对话太短

    通过自然语言描述来限定模型时,为了提升精度,需要更长的自然语言描述,而越长的自然语言限定性描述会占据越大的对话上下文空间,从而导致真正的对话本身太短

在通过简单调整输入没法解决这些问题的时候,就需要使用模型微调技术

模型微调是指,将某一个已有的模型在某种特定的数据上进行再次训练,让模型更适应于这种特定的场景

例如上面的几种场景面临的问题,都可以通过模型微调来解决

  1. 通过自然语言可能没法描述想要的生成内容

    既然我们没法通过语言来描述明星的人脸,那我们就用这个明星的照片来告诉模型,我们需要生成的人长这个样子。

    首先我们在网上采集10-40张该明星的清晰的人脸照片,然后我们让模型在这些图片上进行微调,然后我们就能使用微调后的模型生成这个模型的图片了

  2. 通过自然语言简单描述,无法保证模型生成的内容是稳定的

    首先我们需要采集之前喜欢的这个猫娘的对话数据,找到她的说话风格,如果之前的对话上下文数据不够,可以让聊天机器人直接生成若干模仿该风格的语言,我们再从中挑出我们觉得合适的文字。然后我们让模型在这些文字上进行微调,微调后的模型,输出的文字会偏向于我们微调训练的数据的风格

  3. 简单通过文字来限制模型时,限定性的文字太长,导致真正的对话太短

    首先,我们也需要准备一些朋友x的数据,例如他的聊天对话,他的人物背景等,接下来我们让模型在这些文字上进行微调,微调后的模型,无需进行复杂背景设定,可以直接以该人物的口吻进行对话

总的来说,模型微调的意义在于让模型生成的内容更加定制化

什么时候你不需要模型微调

例如你希望指定图像中的人物都穿白色T恤,或者你希望对话机器人充当一个工具性角色,一般来说,不需要定制化的场景,使用通用的模型即可,不需要进行定制化模型微调

微调模型需要准备什么

设备:一台拥有 Nvidia 显卡的电脑(如果你没有这样的设备的话,可以租用在线服务)

数据

  • 对于图像类,你需要准备一些图片
  • 对于文字类,你需要准备文字语料
  • 对于音频类,你需要准备一些音乐或者歌曲文件

微调模型后如何使用

请参考模型使用概述中的内容