5.3.1 人类计算案例
下面,我们就来看几个典型的人类计算案例。
1. reCAPTCHA
路易斯·冯·安是卡耐基梅隆大学的一位计算机科学家。早在 2000 年的时候,他与曼纽尔·布卢姆(Manuel Blum)就合伙开发了一款名为CAPTCHA 的程序,用于在用户登录网站的时候识别他是人还是爬虫程序 ¹⁶。
到了 2007 年的时候,Google 正在做一个大项目:将美国各大图书馆中的藏书全部电子化。在这个过程中,有一个关键步骤就是将扫描的图书图片自动识别成计算机可以处理的字符,这就是工业界所说的OCR(Optical Character Recognition,光学字符识别)问题。在当时,OCR 的识别准确率非常低,充其量仅仅能达到 83.5% 的水平。在这种水平下,文章读起来会感觉错字连篇。为了提升那剩下的 16.5% 的准确率,Google 需要花费大量的资金雇用工人劳力来对未识别字符进行修改,这既没有效率,又浪费了大量成本。
于是,正在 Google 实习的路易斯·冯·安想到,为什么不将以前的CAPTCHA 项目和这个 OCR 问题联系起来呢?我们知道,当人们使用电子邮件或者其他网络应用的时候,会经常被要求输入验证码,以证明用户是一个真正的人而不是一段电脑程序。CAPTCHA 程序就是根据特定的算法将已知的单词故意扭曲让用户识别的。于是,每一分钟都有成千上万的人将他(她)的占意花在了这个刻意的字符识别任务之中。可是,这样大量的人力事实上都被浪费了啊!冯·安想,我们为什么不让用户直接识别那些 OCR 软件识别不出来的字符呢?这就是reCAPTCHA 程序的由来。
在 reCAPTCHA 中,网站给用户的信息将包括两张图(如图 5-9 所示),一张图是 CAPTCHA 程序生成的扭曲的字符(图中的overlooks),以辨别用户是人而不是程序;另一张图则展示了 OCR 无法识别的书籍中的字符(图中的 morning)。
用户需要同时输入这两个词才能通过网站的测试。第一个单词(overlooks)验证他(她)是人而不是程序,第二个单词(morning)
则要求用户给出单词识别的输入。为了避免恶意破坏和不准确的输入,reCAPTCHA 采用了一种交叉验证的方法。也就是,只有当 3 个以上用户识别的答案完全一致的时候,系统才接纳答案。
最后,由于 Google 拥有庞大的占意资源,当它采用了 reCAPTCHA 程序后,Google 就可以以平均每天 160 本的速度完成图书自动校对的工作,其准确率从原来的 83.5% 上升到了后来的 99.1%。更关键的是,在整个校对过程中,Google 没有花一分钱。后来,冯·安将这一项目总结为一篇论文发表在《科学》杂志上。在文章结尾处,他感叹道:“‘浪费的人力’是可以被我们利用起来以解决那些计算机很难求解的问题的。”¹⁷
目前,reCAPTCHA 程序又有了新的形式。如图 5-10 所示,系统要求用户从 9 张较为模糊的照片中选出特定类型的照片出来,比如有路标或有门牌的照片。我们猜想,reCAPTCHA 很有可能正在背后用这些照片以及用户输入的大量数据训练一个神经网络,用以帮助 Google 解决汽车自动驾驶技术中的图片识别问题。
冯·安将这一让人辅助计算机进行问题求解的方法概括称为人类计算(human computation)。除了 reCAPTCHA 这个比较有名的人类计算实例外,冯·安还设计、开发了各种人类计算系统,它们大多是通过让用户玩一个游戏,从而使得玩家可以在贡献自己占意的同时,不知不觉地帮助系统解决实际的问题。冯·安将这种用游戏作为激励手段的人类计算叫作“有目的的游戏”(game with purpose)¹⁸ 。下面,让我们来看几个例子。
2. Verbosity
Verbosity 就是一个利用游戏的方式解决语义网络构建问题的人类计算系统,它可以帮助计算机更好地理解世界 ¹⁹。比如,我要建立一个笔记本电脑(laptop)这个概念的知识,会让两个玩家一起玩这个游戏,他们在不知不觉中就会完成知识的输入。具体玩法是,计算机在玩家 A的屏幕上打出 laptop 这个词(如图 5-11 所示),并要求 A 用一些标准的语句描述 laptop,比如 A 会说它包含一个键盘、或者拥有一块屏幕等。与此同时,在玩家 B 的电脑上,B 不能看到 laptop 这个原始词,但却可以看到 A 输入的那些描述 laptop 的词。于是 B 开始尽自己的最大努力猜玩家 A 看到的原始词是什么。最后,直到 B 猜出来那是 laptop,这一轮游戏结束,系统会根据时间的长短给两个玩家增加分数。而在 A和 B 共同娱乐的同时,系统已经收集了大量关于 laptop 的语义知识,至少系统已经知道笔记本电脑包含键盘和屏幕了。
3. Matchin
Matchin 也是利用玩家玩游戏来给图像的美丽程度打分 ²⁰。游戏一开始,玩家 A 和 B 的屏幕上都会同时出现两张不同的图(如图 5-12 所示),系统要求每个玩家都选出一张对手觉得更美的图出来。为什么选对手觉得更美的图,而不是你认为更美的图?这是因为这样可以迫使玩家放弃自身的审美而尽量采用大众审美来判断以达到一定的客观性。于是,当两个人在尽量短的时间内投票出了一致的结果后(在两张照片中选出了同一张照片),游戏给双方加分并进入下一轮。就这样,系统随机地从图片库中抽取两两的图片对让玩家做比较,从而给所有的图片打分排序。结果,通过这种方法,系统真的能找出非常美丽的图片,如图5-13 所示。也就是说,Matchin 系统通过游戏的方式把人类内心对美的感受揭示了出来。
4. ESP
ESP²¹ 也是一个两个人玩的游戏。如图 5-14 所示,两个玩家在看到同样一张图片后,他们一起输入一些单词来描述这张图片,直到两个人输入的单词一模一样了为止,两个人各自加分。最后,玩家得到了娱乐,系统得到了一堆图片的标签。这些图片标签会对日后图片检索、分类、理解有着巨大的帮助作用。
总之,人类计算强调的是利用人的特殊优势来完成一些计算机无法很好完成的任务。说白了,也就是把人当作机器来使用。但是,人毕竟是人,没有人愿意白白付出劳动力。于是我们必须为人提供激励的手段,而游戏所带来的趣味性是最有效的激励。因此,游戏化(gamification)
在这类人类计算系统中是一种常用的方法。
运用游戏化手段调动人类的占意资源是一种有效的方法,它不仅局限在计算机科学领域,还可以解决生物学中的难题。下面,就让我们来看一些生物学上的例子。
5. Foldit
Foldit 是一个游戏化的人类计算项目,玩家通过玩一个三维游戏来帮助科学家求解生物学的艰深问题:蛋白质折叠。
众所周知,蛋白质分子是生命活动的主要承担者。它可以被看作一个由氨基酸构成的链状结构,可以在三维空间中进行各种扭曲、折叠,最终形成蛋白质的空间结构。在真实生物体中,这些结构都是以一种能量最小的形式存在的。对于工程技术人员来说,要找到这种最小能量状态非常困难,但是却很有意义,因为它与生物制药、疾病治疗等问题有密切关系。我们把如何找到能量最小折叠状态的问题称作“蛋白质折叠”问题。
目前,生物学家已经积累了有关氨基酸序列的大量数据,但蛋白质结构的测定仍然是一个费钱、费时、费力的问题。从“序列”直接预测蛋白质的“结构”是结构生物学问题中的“圣杯”。在生物体内,一个蛋白质的折叠大概只需要花费微秒量级的时间,但相应问题的计算机求解却非常困难。显然蛋白质的折叠不可能通过枚举来决定,因为整条链可能的结构也是随着链长的增加而指数上升的。这在生物学上称为“利文索尔佯谬”(Levinthal's paradox)。
为了求解蛋白质折叠问题,科学家们开发出了大量具有启发意义的人工智能算法,但是由于计算机不具备丰富的空间想象能力,因此给出的解始终存在一定的缺陷。于是,有人就想到为何不让人来帮助计算机求解呢?因为人具有丰富的空间思维能力。
这就是蛋白质折叠游戏 Foldit(https://fold.it/portal/)诞生的历史背景²²。这个游戏是由华盛顿大学计算机系游戏科学中心和生物化学系共同开发的,项目的领导人是蛋白质领域著名的领军人物戴维· 贝克(David Baker)。与传统的方案不同,Foldit 并非利用计算机资源,而是希望搜集和利用用户的“占意资源”。通过这个游戏,他们就可以将以计算机为主体的计算转换成为以人为主体的“分布式思考”。
图 5-15 是 Foldit 游戏的一个截图画面,画面正中显示的即为一个蛋白质分子的结构。其中:
(1) 画面的左上角显示的是目前正在对蛋白质结构模型进行的操作;(2) 中上部显示的是游戏玩家的得分和排名;(3) 右上角显示的是与此同时在玩游戏的其他玩家的用户名和得分情况;(4) 在一些简单的例子中,左侧中部还提供了基本教程;
(5) 左侧下方提供了一些工具,玩家通过这些工具不断调整蛋白质的结构,包括主链结构、侧链结构、增加或者去掉一些约束等;(6) 游戏画面的右下角还有玩家之间互动的聊天工具。
通过加入大量的游戏化元素,例如友善的界面、流畅的用户体验、趣味性的闯关积分过程以及社会化分享元素,Foldit 成功地吸引了大量的互联网用户,其中当然不乏擅长蛋白质折叠问题的专家以及空间思维能力的高手。在 Foldit 游戏中,发生“撞击”(clash)实际上对应物理学上的排斥相互作用;而存在“空腔”(voids)则说明这一蛋白质结构还没有被最紧密地堆积,能量仍然有继续下降的余地;而“摇一摇”(wiggle)操作则对应随机化操作;“拧一拧”(tweak)则对应于调整蛋白质特定的二级结构中的氢键连接情况,而蛋白质的能量极小化(和相应的“评分函数”)则用玩家在游戏中的“得分”来展示。游戏中的“撞击”“空腔”“摇一摇”和“拧一拧”等操作都可以帮助用户形成有效的直觉,而“得分”的变化又能让玩家产生即时的反馈,并产生与其他玩家竞争的想法。²³
Foldit 通过大众的智慧有效地解决了一些具体的蛋白质结构预测的问题。例如,2011 年,《自然》杂志的《结构和分子生物学》子刊就发表了一个 Foldit 玩家所解决的困难问题,他们仅用了 10 天时间就成功破解了一种猴类艾滋病毒的猴子逆转录酶(M-PMV)结构,而该问题却已经长期困扰分子生物学家多年。另一方面,在优秀玩家游戏的同时,他们的所有行为数据也被系统记录了下来,这些数据将可以进一步来帮助计算机科学家优化算法,从而提升机器智能。²⁴
事实上,想到人类计算这样的想法并不困难,而收集用户的大数据更是现在任何互联网产品都会做的事情,真正困难的问题在于:(1) 要让用户对解决相应的问题产生足够的兴趣,甚至“沉浸”其中;
(2) 要让问题能与玩家的直觉建立起联系。如果让用户只是抽象地去实现氨基酸接触对的组合优化问题,显然不能让缺乏生物化学知识的玩家产生兴趣。因此,在把科学问题“游戏化”的过程中,很重要的一点就是要把复杂的科学概念和方法尽可能转换为玩家仅凭直觉和视觉交互就能理解的简单操作。
6. Phylo
在生命科学领域,还有大量类似 Foldit 的游戏。例如,Phylo 是一个DNA 序列比对的游戏。序列比对是生物信息学和基因组学中的基本问题,因为它可以定量揭示生物之间的进化先后顺序,同时,随着基因组测序的价格变得越来越低,人们越来越关心生物在进化或遗传中的关键突变,而正是这些突变导致了一些重要的蛋白质结构和功能的巨大差异,有的很可能与我们的疾病有关。如图 5-16 所示,在 Phylo 游戏的官网²⁵ 首页上,人们列出了序列比对可能起到重要帮助的几类重大疾病类型:心脏和肌肉疾病、癌症、代谢相关疾病、消化和呼吸系统疾病、血液和免疫系统疾病、大脑和神经系统疾病、传染性疾病和其他疾病。
在序列比对方面,虽然有着大量成熟的算法,但这些算法并不能真正完美地解决多序列比对的问题。在解决这类问题时,人类的直觉可能更加有效。在游戏中,4 个不同的色块代表了 4 种构成 DNA 的核苷酸,通过调整这些色块的排列,玩家就可以很轻松愉悦地按照自己心中的标准来匹配多条同源的序列。
7. Cell Slider
Cell Slider²⁶ 是一款让玩家过一把医生瘾的游戏。由于人类对图像的敏感和准确的模式识别能力,因此只要眼力足够好,我们每个人都可以成为病理学分析的专家。Cell Slider 的所有数据均来自英国癌症研究中心,玩家需要在大量活检的数字影像中准确地区分血细胞、正常组织细胞和癌细胞,在此基础上,可以对大量的乳腺癌样本进行分类。这个游戏项目的负责人汉纳·凯尔兰德(Hannah Kearland)曾经在采访中提到:“这款游戏的成功说明普通大众对病理学数据分析的准确性不亚于研究人员——事实上,他们的速度要比专家还快出 6 倍。”²⁷
8. EyeWire
EyeWire 则是一款让每个人都能成为神经科学专家的游戏 ²⁸。一个玩家进入游戏后就会在一个立方空间中通过拉伸神经元来重构神经元的分支。图 5-17 是 EyeWire 游戏的一个截图,可以看到,右侧有一个神经元截面的黑白图像。用户将学着沿着一个灰色的神经元分支的轮廓染色,这些分支通畅贯穿整个立方空间。用户的工作可以重构整个神经元,一个分支一个分支地进行。
实际上,这些工作的意义是为了弥补人工智能程序的不足,从而追踪神经元的分支。在交互界面中,三维视图会显示这个神经元在整个体内的延展轨迹,玩家可以通过滚动二维的界面来跟随这个路径。玩家也可以点击切片区域,将它们加上跟踪区域。程序会自动识别出用户点击区域所对应的部分神经元。用户一旦觉得任务完成,就会接下一个任务。这个游戏的目的是为了识别出已知的各种视网膜细胞中的特定细胞类型,从而帮助我们了解视觉的工作原理。
本书评论