Skip to content

数据集及标注

前面提到过模型要从数据中学习经验,来提示自身效果

把很多数据放在一起,以一种便于读取的形式表示,称为数据集,它是训练模型时不可缺少的一部分[1],数据集极大地影响着最终模型的效果

数量

越大的网络需要越多的数据量,否则不能完全发挥网络结构的潜力

在大语言模型时代,因为网络的参数不断在数量级上提升,对训练数据的需求量也大大增加,例如Llama3.1使用了超过了15万亿个词[2]的文本

说明

插个题外话,以大模型现在的发展趋势,人类这几千年历史上写下的所有文本都不够作为训练语料的,接下来纯靠提升参数量来提升效果的方式很快就要行不通了

根据经验,以我们识别装甲板用的目标检测模型为例,通常需要几千张图作为样本才能达到较好效果,若再添加则提升较缓慢(想象y=x的函数图像),也有队伍将数据集扩充至四万多张

多样性

模型会从数据中学习到特征,但并非仅仅只是你想要它学到的,而是所有的特征,包括偏见等情况,如大语言模型、AI绘画模型等对白人对男性的倾向性都是因数据在统计学上的差异造成的

曾经听说过一个例子,要训练识别野生动物种类的模型,在野外拍了好多照片训练完成之后,再用新的照片测试发现效果不错,但在动物园里却发现识别率极低。研究原因,最后发现模型学习到的并非动物的种类,而是每种动物都生活在特定环境下,模型实际是识别不同的环境,所以在动物园中相同的环境下就失效了

数据集应尽量囊括所有可能的干扰因素下的数据,以较少此带来的影响

质量

Garbage in, garbage out

数据集的质量直接决定模型训练的效果,精度、错误率等数据会产生极大的影响

数据集污染是极严重的情况,需要引起重视,否则消耗算力训练出来的模型将毫无用处

数据标注

又称“打标”,即给数据添加标注信息,如目标框、类别、标签等

说明

机器学习方法有监督学习、无监督学习、强化学习等,其中监督学习的数据集是需要标注的

因为数据量大,这一步通常非常繁重,需要消耗大量的时间

也有一些方式可以使这一步骤变得更轻松,比如用现有的ai模型进行初步标注,然后人工进行校对和优化

一些需要大量数据的大公司会雇佣大量廉价劳动力来完成这个工作,即数据标注员

数据清洗

针对数据集本身存在的问题,如无效数据、重复数据、错误数据等,为了满足上面提到的要求,避免对模型造成负面影响,需要通过数据清洗这个步骤,也可能同时统一以下数据格式等

清洗可能是删除有问题的数据、修改有问题的标注,也可能是用代码批量完成某个操作,如统一转换为同样的格式、调整图像大小比例等

标注工具

推荐一些工具,不同工具各有特点优劣,请按需灵活运用,详细使用方法请自行查阅资料

Make Sense

Labelme

Label Studio

划分测试集

训练一个模型时,我们通常会将数据集划分两部分

其中,量较多的部分被称之为训练集,用于模型训练,从训练集中找到最佳参数

另外较小的部分被称为测试集。对于测试集而言,首先我们知道它对应的真实目标值,然后可以给学习完成的模型输入测试集中的特征,得到预测目标值。最后,通过对比预测的目标值与真实目标值之间的差异,评估模型的预测性能

测试集看似没有参与模型训练,但它实际上是必须且重要的,可以防止模型过拟合

任务

完成任务11


  1. 这是对联结主义人工智能而言,现在绝大多数模型都属于这一范畴 ↩︎

  2. 此处应实为token,此处为了便于理解而写为词 ↩︎