CrowdFlow: Integrating Machine Learning with Mechanical Turk for Speed-Cost-Quality Flexibility
Alexander J. Quinn1, Benjamin B. Bederson1,2,3, Tom Yeh3, Jimmy Lin1,2
Introduction
NLP等领域的问题,可由人或者机器来完成,各自特点为:
1) 人:准确率高,但耗时、耗钱,代价高
2) 机器:速度快,但准确率低,机器学习需要大量的training data
折中的方法:
人机协同工作
Human computation/crowd sourcing:
1) 集中大量的人力来完成一个工作,通常是通过web的方式
2) Speed:完成job的时间限制
3) Cost:付给worker(Turker)的钱
4) Quality:由user(requester)设定的一些标准
存在的一些挑战
1) 估计worker(人)的正确率,需要动态的调整task分布,比如某个worker的正确率过低,不再分配工作给他,并把他已经完成的工作重新分给其他worker
2) 提供一般的架构,方便developer使用
3) 理解并且支持人的能力(??)
4) 支持human和machine之间的交互工作
Turker承担的角色:
1) Worker:完成工作
2) Fixer:评价或者修改机器的回答 (比如评价machine translation是否准率,并做修改)
3) 二种角色由user设定,或者内部机制自动切换设置。比如当前machine已经能够提高准确率较高的结果,那么Turker就可以作为fixer,这样避免Turker从scratch开始工作。
MonoTrans:一个人与机器交互作用,翻译书。(要仔细研究一下)
Application
Text Processing
1) sentiment analysis/opinion mining
提取大众观点,比如总统选举时的民意调查
2) machine translation
翻译可以分成的粒度:document, individual message
Human detection
Eg:看某段video里,某个人最初出现的时刻
Implementation
软件开发平台:使用Pyhon语言开发,使用Amazon Mechanical Turk(AMT)
主要分为5个部分:
1) Valve:controller,分配工作给machine和human,提交需要的HIT给AMT,监管进程确保accuracy/cost/time约束得到满足
2) AMT:与AMT进行交互,包括提交HIT,qualifications(Turker的资质)
3) Machine:machine learning classifer,train(question,answer),evaluate(question), init()和terminate
4) Task: task的抽象类,可以包括url,text,image等
5) HITSpecification:HIT的具体要求,price,qualification,user interface等
1、 running job
Valve开始运行job前,要使用initial training data去train machine,并且获得machine最初的accuracy(通过Cross-validation)。如果没有trainingdata,则由user估计出machine的accuracy
2、 cheating
动态监控Turker的准确率。当过低时,先warn,后block,并把task分给其他的Turker完成