Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

解决训练数据覆盖不足的问题

方法介绍

训练数据覆盖不足会导致模型在对应的测试数据上表现不好。数据扩充是提升模型效果直接的方法,然而数据标注是一个费时费力的工作,如何标注更少的数据带来更大的效果提升是大多数NLP开发者面临的难题。

TrustAI提供了“目标数据识别->有效数据选择->训练数据丰富”流程,用尽量少的标注数据有效提升模型效果。首先,基于可信分析中的实例级证据分析方法,从测试数据中识别因训练数据覆盖不足而导致的预测效果差的测试样本,称作目标集。然后,在大量的未标注数据中,选择可以支持目标集中数据预测的证据进行标注。最后,将新标注的数据加入到训练数据中重训模型。

注:开发者可访问 AI Studio示例 快速体验本案例。

实验步骤

由于标注数据成本高昂,本方案基于相似度计算任务开源数据集LCQMC进行模拟实验,在LCQMC的测试集和DuQM鲁棒性数据集上评估效果。实验基于ERNIE-3.0-base-zh微调,评估指标为准确率。

首先,从LCQMC的训练数据中随机抽取5000条作为训练集,剩余数据作为未标注数据集。基于抽取的训练集train_5000.tsv训练一个基线模型,用于在后续步骤中做可信分析。运行命令如下所示:

# 下载数据
wget --no-check-certificate https://trustai.bj.bcebos.com/application_data/sparse_data.tar && tar xf sparse_data.tar && rm sparse_data.tar
# 训练基线模型
python -u train.py --dataset_dir ./data --train_file train_5000.tsv --dev_file dev.tsv --test_files test.tsv DuQM --num_classes 2 --save_dir ./checkpoint

基于训练的基线模型checkpoint从验证集中选择目标数据,即为目标集

目标集选择方法为:使用TrustAI提供的实例级可信分析FeatureSimilarityModel方法,计算验证集中样本的正影响证据的平均分数。分数较低的样本表明其训练证据不足,训练数据对此类数据覆盖度较低,模型在这些样本上表现也相对较差。

# 选取目标数据
python -u find_sparse_data.py --dataset_dir ./data --train_file train_5000.tsv --dev_file dev.tsv --num_classes 2  --init_from_ckpt ./checkpoint/model_state.pdparams --sparse_num 50 --sparse_path ./data/sparse_data.tsv
# sparse_num表示选择的目标数据的数量
# sparse_path表示目标集存储的路径

在目标数据选择好后,只需要再次利用FeatureSimilarityModel方法从未标注的数据集rest_train.tsv中选择支持目标集的有效数据进行人工标注即可。

注:此处为模拟实验,rest_train.tsv的数据已被标注

# 选取有效数据
python -u find_valid_data.py --dataset_dir ./data --unlabeled_file rest_train.tsv --target_file sparse_data.tsv --num_classes 2  --init_from_ckpt ./checkpoint/model_state.pdparams --valid_threshold 0.7 --valid_num 1000 --valid_path ./data/valid_data.tsv
# valid_threshold表示目标集证据的分数阈值,开发者可根据自己数据自主调整,默认为0.7
# valid_num表示抽取有效数据的数量
# valid_path表示有效数据的存储路径

在完成有效数据的标注后,将其与原始数据拼接后训练模型,即可提升模型效果。

# 将标注过的有效集和原始训练集拼接
cat ./data/train_5000.tsv ./data/valid_data.tsv > ./data/merge_valid.tsv
# 基于增强后的数据训练模型
python -u train.py --dataset_dir ./data --train_file merge_valid.tsv --dev_file dev.tsv --test_files test.tsv DuQM sparse_data.tsv --num_classes 2 --save_dir ./valid_checkpoint

同时,开发者也可以随机选择相同数量的随机数据进行对比实验。实验结果如下表所示:

数据集 数据量 LCQMCdev LCQMCtest DuQM 目标集
基线 5000 86.31% 84.49% 69.17% 55.20%
基线 + 随机1000条 6000 86.76% 85.05% 69.23% 55.20%
基线 + 策略1000条 6000 87.04% 85.58% 70.20% 69.60%

注:以上结果均为10次实验的平均值。