59

入行AI做数据是怎么一回事?

 6 years ago
source link: http://mp.weixin.qq.com/s/WwZl0suQRq9DfWyadXh9mA
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

入行AI做数据是怎么一回事?

Original 赵亚帆 智汇AI 2017-12-26 01:23 Posted on

之前的文章《入行 AI,如何选个脚踏实地的岗位》中,我们谈到AI行业内的技术类岗位大致分为三类:做算法,做工程和做数据。本文主要讲一讲,做数据的岗位,日常工作和职业体验是怎样的。

本文是@赵亚帆在2017年12月19日众智汇微信群中分享的记录。感谢@王西玲同学的记录整理。


我是来自小米公司的赵亚帆,所在团队负责用户反馈的处理。

处理用户反馈的核心就是数据标注,及以标注为基础的数据处理等工作。

今天在此和大家分享一下我在数据标注工作方面的经验。


什么是数据标注

数据标注这个岗位,要做的事情包括:借助计算机等工具,对各种类型的数据(文本、图片、语音、视频等)进行归类、整理、编辑、纠错和标注等的工作。

其中最核心的一步就是数据标注:为数据打上说明其某种属性的标签

例如:一张小动物照片,标注上面有两只猫;一段演讲录音,针对时间轴标注音频所对应的文字和语气;一段文字,标注它的主题、情感、指向实体等。

下面是几个操作工具进行标注的例子:

<文本标注>

Image

<语音标注>

Image

<图像标注>

Image

什么是大数据?

按照我个人理解:大数据就是四个节点形成的一个链:数据采集 -> 数据处理 -> 数据分析 -> 形成价值。

Image

数据标注和处理的作用

在这条链上,我们(数据标注和处理)就处在第二个节点。

我们重点是处理什么呢?很简单,就是将采集回来的源数据,整理为客观、清晰、有条理、可以直接分析的数据。所以我认为源数据很大程度上不能跳过数据处理这个节点而直接进行数据分析。

人们在谈到大数据的时候,往往会想到、要学习什么AI算法;或者想学什么数据挖掘、机器学习之类高深的内容。然而,我认为这些全部是建立在高质量的数据之上,才能够真正发挥成效的。

在实际应用当中,一般源数据分布杂乱,包含的属性也没有清晰的罗列出来。因此也就无法让做算法的人直接拿去使用。数据处理在数据链中很重要的一环!

举个例子,来解释下数据处理这件事情。比如:爸爸是买毛线的人,我们是整理毛线的人,妈妈是用我们整理好的毛线去织毛衣的人。织好了毛衣才能给亲戚朋友穿,这就形成了价值。

如果妈妈拿到的是一大堆乱七八糟缠绕在一起的毛线,她就需要去理顺一根根线头,找到对应的颜色等等,浪费大量时间在织毛衣这件事之外。

如果在人工智能相关的开发领域,工作中没有数据标注和处理人员的工作,那么做工程甚至做算法的人就得自己动手去整理数据并因此花费掉大量的时间。我们就是整理数据的人,需要把各种杂乱的raw data整理成有条理和清晰的processed data。

请大家一定要把数据处理和数据分析分清楚。我们不做分析,而是承上启下。一方面给做数据分析的人提供清晰的数据,另一方面,收集前端的零散的数据。

数据标注必须人工干预

我们再来讲数据标注。一讲到这里,很多人立马想到人工智能、算法、让机器做标注工作等等。

那么我们先将数据分分类。从大的维度说,我们有音频、视频、图片、文字等类数据。每个大类之下,还有带有指标性质的数据的细分,比如图片可能还有像人脸、汽车牌照等等。

曾经有一位大神告诉我说:什么是人工智能?有多少人工就有多少智能

现阶段用机器或者一个特别牛的算法来100%代替人工,把数据清晰的分类整理出来,还是不可能的。当前阶段数据类工作中,人工不可或缺。原因在于:

  1. AI模型再如何厉害,也是数据训练出来的结果。这些训练的素材数据谁来提供呢?就需要人为的标注一些准确的素材。

  2. 机器不可能是自动处理所有的数据。总会有有一部分程序无法处理的数据存在。这部分也需要人工来处理。至少需要人工的干预。

  3. 机器处理的数据你完全相信吗?不做任何校验就是会用吗?显然不是。数据校验的工作也需要人工介入。

与上游数据收集节点的合作

虽然我们处于整个数据链条的第二个节点,但是我们要清楚数据收集节点在做什么,是如何工作的。这样才能对提供给你的数据的质量有所判断。另外清楚上游如何工作,我们后端处理数据的方法也才好做出适应调整。

以收集用户反馈为例:用户反馈是什么?服务提供商通过某种平台性入口(门户网站、社交网站、论坛、移动App等),让产品或者服务的使用者表达反馈自己的建议或遇到的问题。这些意见、建议等信息,就是用户反馈。

用户反馈的数据收集入口种类繁多。通过入口获取的数据又分为主观表达和客观提取两个大类。

客观提取的用户数据相对客观有条理,但限制较多,类型有限。

主观数据内容丰富不受限制,但又走向了另一个极端,繁杂无序——用户群的分层,以及每个人的表达能力不同,用户对自己问题的和产品的理解不同、对产品的吐槽能力等等不同。就意味着接收到的数据将会是非常的多样化。

如果这么多样化的数据,没有加以任何的引导和部分限制,让用户没有任何门槛的把数据给到我们,恐怕就不是一个很好的设计方案。

以App或PC产品用户反馈界面的UI设计为例。当用户进行反馈时,带负面情绪的情况会比较多。这么冗长的反馈操作,也必然会增加用户负面情绪的积累。简洁方便的前端UI设计,有可能缓解用户负面情绪的进一步堆积。

但也不是最简单的就是最好的。比如我们看当前大多数的UI设计,不管是App还是网页,或者一些PC版软件,看它们的反馈入口,大部分是三段式:第一段文字描述反馈意见;第二段填写联系方式;第三段就是提交按钮。看起来够简单了?但并不认为这是最好的方式。

我建议取舍有度的UI设计——要让用户承担一部分数据处理的成本。比如,我们前端可以提供一些分类,能让用户能够迅速而明确的告知供应商,产品的哪个部分出了问题。这样数据收集回来,就不用再做一次问题域划分。

用户和我们分别承担一部分成本,会让用户反馈更加有效、合理。但是这个度一定要保证把握好。否则,让用户承担的过多,用户觉得给你提供信息非常困难,就不和你玩了,信息采集量就会受到影响。

这是一个在用户和数据处理团队之间平衡工作量的问题,关键在于度!既不能让用户反感,又能够有效分担数据处理环节的成本。看似简单的UI设计,背后都深藏着玄机。

数据标注经验分享

良好的前端的设计,仅仅是一个开始。数据收集到后端,沉淀到我们服务器上之后,怎么处理?

我认为比较好的模式是人工介入与计算机程序自动化处理相结合。其中自动化处理部分,是需要长期研究的。

数据处理围绕两个点:

  1. 下游节点对数据模型的需求;

  2. 如何客观清晰地标注数据属性。

其中数据标注工作又有两个根本的指导思想:i). 最大程度,尽量接近百分百的保证处理标注数据的客观性;和 ii). 保证标注操作方法的科学性。

否则,带有主观情绪或者不科学的操作方法沉淀数据,最后得出的结果也不可能提供客观公正的信息。继而影响下游数据分析的结果。

在数据标注时保持数据的客观性和科学性,就我个人经验而言,要做到至少三点:

  1. 采用多层级的标签体系;

  2. 统一管理标签;

  3. 建立交叉审核体系进行数据审核。

Image

多层级的标签体系

多层级的标签体系就是:一条数据,不是被打上一个单一的标签,而是被打上互相之间具备层级关系的多个标签。当然,这种标签之间的关系是某一个特定维度内的层级关系。

可能很多人不是很清楚什么是标签。例如:喜欢看电视的人也会看到电影下面有一些类似分类的文字描述——国产、剧情、情感、悬疑剧,或者恩怨、枪战、战争等等。这些就是数据的标签。

标签和分类的区别是:同一个级别的分类之间是互斥的,某一个实例只能属于分类之一;同一层级的标签和实例却可以多对多组合。

比如在图书分类体系中,物理和文学是两个大类,一本书如果已经属于了物理,就不能再属于文学。但是一个电影可以既属于国产又属于剧情。

标签之间也可以像大类下分小类那样,具备层级关系。父标签定一个大致的方向,子标签是父标签之下的细分。

举个例子:用户吐槽我们相册照片不好用。那么首先,我们知道问题反馈的产品是【相册】。第二,他吐槽照片不好找,是对【功能体验】的吐槽。第三,我们分析用户具体的问题,他说需要按日期找相片不方便,也就是,【时间索引没有清晰的引导用户。

上例中“相册”、“功能体验”、“时间索引”就是分属于三个层级的标签。这样我们就从这三个维度给数据分析师提供数据。

另外,还要统计整个图库的用户吐槽占整个“相册”产品业务功能的比例是多少,而对“功能体验”的吐槽又占总吐槽量的多少,进而“时间索引”功能点的吐槽占比是多少。

这样多维度多层次的分析,对数据分析师或者具体的业务组拿到数据分析的结果去改善产品,都是有利的。

统一的标签管理

我们在处理数据的时候往往不是一个人去做数据标注处理,而是一个团队。怎么能保证团队内的每个人对一个数据的认定以及标签的命名是统一的呢?这就需要建立一套比较完备的标签管理方式。

我们采用的是一多一的管理方式:

Step 1. 一个人发起对一条数据的个人提议。他建议这条数据应该被打上几个标签,这些标签分别应该叫什么名字。提出来之后,大家进行讨论。讨论方式不限,可以使用信息交流群,也可以在标注平台上进行。大家看到后发表自己的意见,讨论结束后定性,最后由一个人负责把它提交到线上平台 —— (个人)-> 多(个人)-> 一(个人)。

Step 2. 在这个基础上,我们平台要做一些限制,一个人提交上去以后,剩下的人在对数据标注时只能选择现有标签,而不能随意编辑,生成新的标签。

Step 3. 如果有人发现标签缺失,希望添加一个新的标签。那么就再发起一轮一多一,提出来让大家讨论,然后再由这个人最终确认上线。

以上几步往复迭代,尽量保证多人对一条数据认真的统一性。

交叉审核

数据经过标注沉淀上线,正式交给下游节点前,还需要保证它的准确率和它的有效性。为此,我们会采用交叉审核。

交叉审核就是:在标注团队内部构成一个审核链——A做的工作由B抽样检查,B做的工作由C抽样检查,C做的工作可能再由A做抽样检查。

这样做,除了保证数据质量外,还可以促进团队成员之间的交流——在审核的过程中,能够发现A是那么想的,B对数据是那么理解的……可以加强每个成员对数据的理解,并及时发现某个人对数据的认知的偏差,从而进行辅导和纠正。

但是交叉审核也也存在一个风险:在管理/行政层面一旦引导不当,就很可能让团队成员陷入彼此猜疑甚至相互掣肘。

一定要先解决思想问题,让大家都明白互相检查是为了沟通、交流,为了让大家对数据的理解站在同一条线上。这是非常有必要注意的。

数据处理的自动化部分

机器能不能介入我们的工作呢?答案是肯定的。比如文本数据的NLP介入。

它介入的方式和程度,是怎么样的?我认为目前的情况是:以提高工作效率为目的,部分替代人工劳动。

我们人工标注的数据越来越多,让工程师们拿着我们提供的素材去训练他们的模型。当他们的模型有一个输出结果的时候,就拿来对数据标注进行半介入。

也就说用那些质量还不是很高的模型先对源数据做一遍预测,打一些标签,这些打完标签的数据当然不能直接上线,而是要进行人工审核,审核后再上线。

普遍而言,人工审核自动标注数据的工作量,相对于纯人工从头开始标注要小。这样就节约了一定量的人工劳动成本,同时也提高了工作效率。

另外,假如有些数据本身来源就比较客观、清晰,没有扩展延伸,或者歧义,那么对它们进行自动标注后,可以不用逐条人工审核,而是做人工抽测、校验,这样就进一步节省了人力。

人工+自动化才能良性的把数据处理滚动起来。

数据标注工作的远期目标是让人和机器之间的天平尽量向机器一方靠近,逐步替代人力,争取最终的完全自动化。不过这个过程是相当漫长的,目前离开人工还是不行。

入行数据标注

下面说说我自己入行数据标注的经历和体会。

我在刚刚大学毕业的时候,并不清楚自己能做什么,我的专业也不是互联网相关的。

我喜欢小米这家公司,想进入这家公司工作。因此非常留意公司的招聘信息。看来看去,感觉自己会做的,也就是这个岗位。当时觉得,能进小米就好,于是就入职了数据标注的岗位。到现在已经有四年半的时间了。

个人体会:数据标注是一个坑,一个大坑!

进入很容易,因为几乎没有什么门槛——我总开玩笑的说只要你上过小学,认识字,写过小学作文,就可以做这一行。

但是一旦进入这一行,尤其是做了一年半以上,有了一定工作经验之后,再想往上发展就很艰难

抬头想想,工作这么久了,好像自己并没有在职场和个人成长上积累到什么。再仔细琢磨,这件看似简单的工作里面,其实还是有很多道理的。可是,要自己把这些道理总结出来,又总觉得抓不住重点。

这个岗位的性质大概是这样的:

  1. 重复性很强;

  2. 枯燥性很强;

  3. 个人成长偏弱;

  4. 职位存在感偏弱,特别是在不重视数据的公司。

大致总结一下,当下企业中对于数据标注的需求大概有这样两种解决方式:

第一种,公司自有型,公司拥有属于自己的数据标注团队。小米就是这样的。

要建立团队,就要考虑人员成本问题。不是所有公司都能够支付这样的成本,因此也就会考虑另一种方式:外包型,把标注数据的任务外包给其他专门提供此类服务的公司。

购买外包服务,从单次任务经济成本的角度肯定比自建团队小得多。但数据质量往往很难得到保障。目前我接触的几个外包公司,数据质量确实都不太靠谱。

就目前的现阶段而言,对于一家对大量高质量数据有持续需要的企业,数据标注岗位/团队是不可或缺的。

现在已经有越来越多的企业意识到了这一点,因此,至少在短期内,这个职位还是有所发展的。毕竟,我在这个岗位做了四年多,做出来的成绩也得到了大家的认可。

心路历程,一波三折

在这个岗位上,我也是经历了一波三折的心里路程。

在刚开始做这件事的时候,觉得还是挺有意思的,因为每天可以看到不同的人对产品的看法。从中确实能够感受到一些乐趣。

工作了一年以后,业务熟悉了,工作上没什么问题和难点了,也开始慢慢感觉倦怠和枯燥,感觉没有进一步的成长。

这个时候,我就强迫自己,不断的去提炼每天的日常工作,将整个的流程梳理出来。由此发现,还是有些事情可做的。

根据自己这几年的经历,我感觉:这个岗位哦坚持做下来是会有回报的

毕竟,如今大数据、人工智能那么火,需要大量的标注数据训练各种各样的模型。就现在而言,数据标注不可或缺,且必须人工介入。我相信,这个岗位近期会迎来一波高潮

提问交流

Q1:除了您提到的几个从事标注工作个人要克服的东西,一个好的数据标记从业者应该具备哪些方面的能力,才能更好的做这份工作?比如一些知识储备之类的?

A1:我是一个“兼容性”比较强的人,我们团队的人,除非TA非常不适合这个岗位,我都可以教会他。

从业者比较重要的素质,我认为包括:i)理解这个岗位在整个链条中的位置;ii)认可数据处理节点的重要性;iii)抗枯燥能力强;iv)善于总结。

在专业知识上,我并不认为有什么特别硬的指标来评判一个人是否适合做这个。不像写代码,必须掌握编程语言和工具。


Q2:怎么去衡量一个数据标注者的水平?或者说从业人员如何考核?

A2:什么样子的标注师是一个好的标注师呢?有几点:

1. 头脑要灵活。

这里并不是说为人处事头脑灵活,而是TA对数据能够从多维度进行判定、推断,有一个全面的认识。一般人看不到的东西,TA能看到;别人不能定性的时候,TA可以定性。

2. 善于总结。

我建议面试数据标注员时问这样一个问题:你最熟悉的产品是什么?请你讲讲对它最满意的三个方面和最不满意的三个方面。讲完,再让TA用最简洁的语言总结一遍。一次判断TA对某项事物的总结能力。

3. 主动提升。

我带过的人中,大致分为两类:一种总是会给你惊喜,比如过一段时间就会提出建议,指出某项工作如何改进比较好之类的;另一种人则是给什么任务,按部就班的完成就好了,不主动去想该多做点什么。

大家肯定更喜欢前者。不仅是主动性本身,TA能提出建议,一定是已经掌握和了解了业务,而这些建议如果是合理可行的,对工作效率的提升也不小。


Q3:对标注员工作的要求,应该如何平衡质量和数量呢,或者说如何来取舍?

A3:很好的问题,质量和数量如何取舍。

首先,我们团队是要求质量永远第一。哪怕是因此对数量构成影响,也要求的质量不能放松。

其次,数量要通过不同的方式去提升,而不仅仅是压榨人力。

不能说,今天没有做完这个事情,就不能下班。或者今天无论如何必须在什么时间节点把这些数据处理完。一定不能这样。

我们通过使用自动化工具、规定操作流程、培训人员提升熟练度等办法,来提升效率,以保证提升最终的标注数量。


Q4:如何减少数据标注人员工作的枯燥性?

A4:这需要多方面共同努力:

  1. 让大家尽量参与到标签体系建立当中去; 

  2. 让所有人都有机会提出提升标注效率的建议和想法;

  3. 适当培训下一些工具的使用,比如 Python的基本用法等。

欢迎扫描下列二维码,关注“悦思悦读”公众号

Image

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK