这是AI数据标注猿的第50篇原创
一个用数据视角看AI世界的标注猿
标注小课堂会陆续推出系列文章主要是深入讲解面向ML的数据标注原理、系统的项目管理、数据预处理等。
主要适用人群是目前数据标注行业内的小伙伴、AI公司负责数据标注相关项目的小伙伴、即将从事AI应用场景数据相关的项目经理产品经理运营经理标注员等。欢迎小伙伴持续关注。
另外征集数据标注平台方或者可以提供AI场景解决方案的商务合作伙伴,最好有自动辅助标注功能或者可以提供算法服务的平台方。
主要联合输出面向AI公司场景化的数据解决方案或面向传统企业的AI产品解决方案。目前公众号主要关注人群有政府人员、AI厂商人员、传统厂商人员、投资人、媒体、学校人员、数据标注行业相关人员等,可以给合作伙伴提供良好的品牌价值输出。
言归正传:
目前行业不缺标注人员,缺的是人工智能训练师。
有没有小伙伴思考过,为什么在行业内大家都叫数据标注师,而在人社部确定新职业的时候却没有采用数据标注师的命名,而是命名为人工智能训练师。
标注是一个处理环节,训练是一个处理过程。
所以本文从两部分给小伙伴们讲解面向ML的数据标注原理-MATTER标注开发过程。
-
机器学习的基本原理及相关术语
-
MATTER标注开发过程
一.机器学习的基本原理及相关术语
机器学习(Machine Learning)致力于研究如何通过计算的手段,利用经验来改善系统自身的性能,在计算机系统中,“经验”通常以“数据”形式存在,因此,机器学习所研究的主要内容,是关于在计算机上从数据中产生“模型”的算法,即“学习算法”,有了学习算法,我们可以把经验数据提供给它,它就能基于这些数据产生模型;在面对新的情况时,模型会给我们提供相应的判断。
更形式化的定义:假设用P来评估计算机程序在某任务类T上的性能,若一个程序通过利用经验E在T中任务上获得了性能改善,则我们就说关于T和P,该程序对E进行了学习。
要进行机器学习,就要先有数据,上面是一条关于一张图片中人穿着的数据,黄色部分是对应项的“取值”。右边图片中每个文件里面存放着一个json文件。这一组组数据的合称为“数据集”。
-
其中每个文件记录是关于一个事件或者对象的描述,称为“示例”或者“样本”。
-
反应事件或者对象在某方面的表现或者性质的事项,称为“属性”或者“特征”。
-
属性上的取值,称为“属性值”。
-
属性张成的空间,称为“属性空间”、“样本空间”、“输入空间”。
从数据中学得模型的过程称为“学习(learning)”或者“训练(trainning)”,这个过程通过执行某个学习算法来完成,训练过程中使用的数据称为“训练数据(training data)”。
其中每个样本称为一个“训练样本(training sample)”,训练样本组成的集合称为“训练集(training set)”。
在这个过程中我们还可以对数据进行“聚类(clustering)”,即将训练数据分成若干组,每组称为一个“簇(cluster)”,这些自动形成的簇可能对应一些潜在的概念划分。这样有助于我们了解数据内在的规律,能为更深入地分析数据建立基础。
学得模型后,使用其进行预测的过程称为“测试(testing)”,被预测的样本称为“测试样本(testing sample)”。
而机器学习算法通常有3种类型:
-
监督学习:监督学习是指任何通过生产一个函数将输入映射到一个预先设定的标签集合(想要的输出)的技术。标签通常是元数据标签,由人通过标注的方式提供,其目的是用于机器学习中的训练过程。分类和回归是其代表。
-
无监督学习:无监督学习是指任何尝试从未标注数据输入集合中发现结构的技术。聚类是其代表。
-
半监督学习:半监督学习是指任何通过生成一个函数从已标注数据和未标注数据的输入进行映射的技术,是监督学习和无监督学习的结合。
需注意的是,机器学习的目标是使学得的模型能很好地适用于“新样本”,而不是仅仅在训练样本上工作的很好,即便对聚类这样的无监督学习算法,学得模型适用于新样本的能力,称为“泛化(generalization)”能力,具有强泛化能力的模型能很好的适用于整个样本空间。
于是,尽管训练集通常只是样本空间的一个很小的采样,我们仍希望它能很好的反映出样本空间的特性,否则就很难期望在训练集上学得的模型能在整个样本空间上都能工作的很好。
通常假设样本空间中全体样本服从一个未知“分布(distribution)”,我们获得的每个样本都是独立的从这个分布上采样获得的,即“独立同分布”。一般而言,训练样本越多,我们得到的关于“未知分布”的信息越多,这样就越有可能通过学习获得具有强泛化能力的模型。
二.MATTER标注开发过程
从上面对机器学习的相关介绍就可以了解到,标注过程一定并不是线性的,因此需要多次迭代来定义任务、标注和评价,以便得到最佳结果。
这一个过程可以概括为MATTER标注开发过程:建模(Model)、标注(Annotate)、训练(Train)、测试(Test)、评价(Evaluate)、修改(Revise)。
-
建模:结构化描述提供了有理论依据的属性,这些属性来自对数据的经验观察值。
-
标注:标注方案采用对输入数据的具体结构描述和性质进行编码的特征集合。
-
训练:使用经过目标特征集标注的数据集对算法进行训练。
-
测试:在剩余数据上测试算法。
-
评价:对结构进行标准化的评价。
-
修改:修改模型和标注规格说明,使标注在算法中使用时具有更好的鲁棒性和可靠性。
-
现象建模
在MATTEER开发循环中,第一步是“现象建模(model the phenomenon)”。但是,建模过程所包含的步骤变化范围很大,取决于你自己任务的特性。
与创建模型相关联的参数有许多种,很那让不同群体的人就什么是模型达成一致。
一个模型是对某些特定现象的抽象描述,它比所要建模的领域中的元素更抽象。
为了方便讨论,可以定义一个包含术语词汇表T、术语之间关系R及其解释I的模型。一个模型M可以视为一个三元组,即M=<T,R,I>。
在实际操作过程中,我们会发现实际上可能有多个模型适合描述同一个现象,每个模型都为我们提供了不同的视角,我们称之为现象的多模型标注(multimodel annotation)。
多模型标注的一个常见情形涉及拥有领域专家知识(如生物医学知识)的标注。要求这些标注根据他们的知识和对某个具体领域的理解,识别其具体的事件、属性或者事实。
基于这种标注,可以让非专业人员标注这些现象的结构化信息,从而获得领域专家知识而又不必强迫领域专家学习相关理论。
一旦你有了对正在尝试解决问题或与任务相关现象的初始模型,事实上你就拥有了第一个可用于标注工作的标签规格说明(tag specification),根据规格说明,就可以对模型所定义的特征进行标注制定详细计划。
-
按照规格说明进行标注
当对场景现场的建模已转化为规格说明文档,接下来就需要训练标注人员,采用对你有价值的标签对数据进行标注。而实际工作中经常需要对建模和标注做多次迭代,如图所示,这个过程称为MAMA(建模-标注-建模-标注)循环,标注说明文档有助于引导标注人员识别元素,然后当元素识别后将它们与适当的特征相关联。
在建立标注数据集时有一个重要的因素是确保标注人员在使用不同标签进行标注时标注方式应保持一致。一个看起来微不足道的问题在对比标注结果时就会显现出来。
有可能对标注人员而言,某几种标注好像都是对的,但事实对上对于标注指南中只有一个是正确的。
为了评价对一个标注任务的定义,可以使用标注人员间标注一致性(Inter-Annotator Agreement,IAA)得分来显示标注人员之间的标注差异。若IAA得分较高,说明任务定义得比较好,而且其他标注人员可以继续进行类似的标注工作。
通常使用称为Kappa统计(Kappa Statistic)的统计度量方法来定义这种标注差异。若在两个标注人员之间进行比较,则通常使用Cohen Kappa,当在多个标注人员间进行比较时,则一般使用Fleiss Kappa。
但要注意的是,IAA得分高并不意味着标注结果是正确的,只能简单的表明标注人员以相同的方式解释了你的命令。即使IAA得分很高,标注任务仍然可能需要修改。
一旦至少两个人对你的数据集进行了标注,就可以得到黄金标准数据集,黄金标注是标注数据的最终版本,它使用你在标注过程中创建的最新规格说明,根据最新说明争取的完成每一题,并且通过了审核环节的处理。
-
训练和测试算法
完成了对数据集的标注和审核后,就可以进行机器学习。最常见的做法是把数据分为两部分:开发数据集和测试数据集。在开发数据集又进一步分为两部分:训练集和开发-测试集。
训练集用于训练任务中使用的算法,开发-测试集用于错误分析。一旦算法训练结束,它就可以在开发-测试集上运行。如果算法没有正确的对数据进行标注,就会产生一系列错误。发现错误后,可以调整并重新训练算法,然后再在开发-测试集上测试,重复上述过程直到获得满意结果。
训练完成后,算法将在预留的测试数据集上运行,通过使用预留的数据,我们可以知道算法在新数据上的表现,这也是我们对在其他人创建的数据上运行我们算法的期望。
-
对结果进行评价
最常用的性能评价方法是计算数据集上标签标注结果的准确率,可以使用一个标准的“相关性判断”计算来计算标注正确的数据相对于所有标注数据的比例。名称为:准确率(precision)和召回率(recall)度量。
准确率:可以计算算法标注为相关的子集中的正确样本的比例。
召回率:可以计算为在实际相关的子集中正确标注的样本的比例。
P和R的值经常被合并成一个单一标注,称为F-measure,是P和R两者的调和平均。
F=2*(P*R)/(P+R)
F值在假定准确率和召回率同等重要的前提下给出了一个整体评估结果,但实际取决于数据和算法的目标。
-
修改模型和算法
在数据上对算法的训练和测试结果进行评价,你还需要对测试结果进行错误分析,判断算法在哪些地方效果良好、在哪些地方表现不佳。
这些工作可以帮助你回溯模型设计阶段,目的是建立更好的标签和特征以便改善之后的黄金标准数据,进而改善数据算法的性能。
伴随“建模-标注”和“训练-测试”循环,一旦在模型上进行了这些增加和修改,MATTER循环将从头开始重来一遍,这种修正通常会带来性能上的提升。
本文是面向ML的数据标注原理的开篇文章,这一系列文章会围绕着MATTER标注开发过程进行深入讲解,有助于小伙伴们深入了解数据标注的开发流程及逻辑,后续文章会深入对每个一个环节进行分析讲解,结合数据原理及业务梳理进行完整的AI数据模型建立思路的输出。欢迎小伙们持续关注。
-----------------------完---------------------
公众号:AI数据标注猿
知乎:AI数据标注猿
优快云:AI数据标注猿
-----------------------完---------------------
感谢你的阅读,关注公众号回复“抽奖”两个字,即可参与现金抽奖。