数据量足够,但质量较差,可以微调吗
对于微调而言,数据质量非常重要。一份数据量少但质量高的数据,对于模型效果的提升要远大于一份数据量多但质量低的数据。若微调数据的质量较差,那么可能会导致模型学习到一些错误或者不完整的信息,从而影响模型的准确性和可靠性。因此,不建议您直接使用低质量数据进行微调。
一份高质量的数据应具备以下几类特征:
- 数据与目标任务一致:微调数据应该与微调任务的目标和分布保持一致,反映出任务的实际要求。比如,现在需要微调一个情感分类的模型,模型只需要回复“消极”或者“积极”:
- 情感分类场景-典型低质量数据:数据中存在与目标任务不一致的样本。
{"context": ["请分析以下内容的情感,只回复积极或者消极\n内容:xxx], "target": "积极"} {"context": ["请分析以下内容的情感,只回复积极或者消极\n内容:xxx], "target": "消极"} {"context": ["请分析以下内容的情感,只回复积极或者消极\n内容:xxx], "target": "这段内容xxx"} {"context": ["请分析以下内容的情感,回复你的看法\n内容:xxx], "target": "这段内容xxx"} ……
- 情感分类场景-较高质量数据:数据指向性明确。
{"context": ["请分析以下内容的情感,回复积极或者消极\n内容:xxx], "target": "积极"} {"context": ["请分析以下内容的情感,回复积极或者消极\n内容:xxx], "target": "消极"} ……
- 情感分类场景-典型低质量数据:数据中存在与目标任务不一致的样本。
- 数据中无异常样本:微调数据需要清洗和校验,滤除其中的噪声,尽可能保证回答中不存在异常数据。如空数据、重复、水印和异常字符等。
- 数据多样性:微调数据需要具有一定的多样性,多样性能增加任务的复杂度和难度,让模型能够处理不同的情况和问题,提升模型泛化性。例如,现在需要微调一个文案创作的模型,模型需要生成各个城市的宣传文案:
- 文案创作场景-典型低质量数据:数据多样性差。
{"context": ["请帮我写一份宣传文案"], "target": "北京,xxx"} {"context": ["请帮我写一份宣传文案"], "target": "上海,xxx "} {"context": ["请帮我写一份宣传文案"], "target": "广州,xxx "} {"context": ["请帮我写一份宣传文案"], "target": "深圳,xxx "} ……
- 文案创作场景-较高质量数据:数据有一定多样性。
{"context": ["请帮我写一份宣传文案介绍北京"], "target": "北京,xxx"} {"context": ["现在需要你写一份文案来宣传上海"], "target": "上海,xxx "} {"context": ["广州市需要一份推广文案,请开始创作"], "target": "广州,xxx "} {"context": ["你是一名导游,现在请向我介绍下深圳这座城市"], "target": "深圳,xxx "} ……
- 文案创作场景-典型低质量数据:数据多样性差。
![](https://support.huaweicloud.com/pangulm_faq/public_sys-resources/note_3.0-zh-cn.png)
若目标任务是相对明确的,则在微调数据中,每个任务的Prompt可以保持固定。注意,这里Prompt保持固定和保证数据多样性,二者并不冲突。
当然,如果您的数据质量较差,也可以采取一些方法来提升数据质量,比如:
- 数据清洗:您可以通过一些简单基础的规则逻辑来过滤异常数据,比如,去空、去重、字符串过滤等。同时,您也可以采用PPL(困惑度),或训练一个二分类模型等方式过滤脏数据。
- 数据增强:您可以通过一些规则来提升数据的多样性,比如:同义词替换、语法结构修改、标点符号替换等,保证数据的多样性。
- 基于大模型的数据泛化:您可以通过调用大模型(比如盘古提供的任意一个规格的基础功能模型)来获取目标场景的数据,以此提升数据质量。一个比较常见的方法是,将微调数据以及数据评估标准输入给模型,让模型来评估数据的优劣。
- 人工标注:如果以上两种方案均无法满足您的要求,您也可以使用“数据标注”功能,采用人工标注方式来清洗数据。