许智博
两年前,喜欢动手编程的小池诚(Makoto Koike)厌倦了汽车零件公司里越来越繁重的管理工作,辞职回到了老家静冈县湖西市,他家的农场就位于这个南临太平洋的小地方。
在职业的空窗期,这个36岁的工程师索性陪自己的父母一起在大棚里种植黄瓜。大半年下来,小池发现,从种植到收獲,整个过程里最累人的环节,居然是黄瓜摘下来之后如何进行分拣。
在日本,农业种植基本都是按照企业的合同要求进行,每家农场对黄瓜品质的划分各有不同,单是小池家农场一个品种的黄瓜,按照质量要求就要分成9个等级。什么样的黄瓜是好黄瓜?字面的标准很简单:颜色鲜艳、刺儿多、体态均匀。但每天弯着腰面对上千根黄瓜、要把它们分到9个筐里去的时候,人要逐根判断手里黄瓜的长短、粗细、颜色、纹理、是否有小刮痕、弯的还是直的、刺多不多……小池的母亲务农已经超过40年,但仍要为分拣黄瓜每天耗费8到10个小时,累到腰酸背痛。
一个人想熟练掌握标准分类要几个月的时间,到了采摘旺季,经常是农场主一家忙不过来,却又无法雇临时工来分担。与日本大多数人一样,小池认为,农民的首要职责应该是专注于种植,保证农产品的品质和味道,像分拣黄瓜这样的事情应该由机器去做。然而他跑到大型超市,却发现市售的黄瓜分拣机根本不适合于农场使用。
这时正好是AlphaGo在首尔与李世石对弈轰动世界的2016年3月,小池在电视里看到新闻,对AlphaGo后面的机器深度学习(deep learning)技术非常着迷,利用人工智能分拣黄瓜的念头便从他的脑袋里冒了出来。
很快,小池按图索骥了解到谷歌刚刚开放了一个名叫TensorFlow的开源软件库,专门用于开发各种“感知和语言理解任务”的人工智能软件。在人工智能的“机器学习”里,使用“深度学习”图像识别,可以使计算机能够从大量的“训练数据集”中学习图像的重要“特征”。利用成熟的卷积神经网络(Convolutional Neural Network,简称CNN,一种更高级的人工神经网络,对于大型图像处理有出色表现)架构,“深度学习”后的“机器”可以高度准确地对图像进行分类,在很多图像的识别准确率会超出人眼。
TensorFlow的便利之处在于,使用者不需要知道那些编写“深度学习”与卷积神经网络所需的高阶数学模型和优化算法,只要下载示例代码并阅读教程,然后按照要求输入自己的数据就可以开始用它。它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行,这让没有接触过“机器学习”的小池感到很轻松。
小池之前的工作是开发车载防碰撞预警系统,作为一个理工男,他用了一块不到40美元的树莓派(Raspberry Pi)单板机电脑(一种从单片机发展而来的简易电脑,旨在促进高校里的计算机教学普及,也经常被程序员测试简单的程序代码使用)作为控制器,将数码相机拍下的黄瓜照片上传到TensorFlow平台,先是利用一个小规模的人工神经网络来检测这是不是黄瓜的照片,然后再将这些张照片转发至服务器上一个更大的人工神经网络执行更加精细的分类。
为了训练“机器”可以更准确地分辨黄瓜,小池在3个月的时间里上传了7000张自己家农场的黄瓜照片,每一张都由小池的母亲贴上了质量分类标签。这些照片如果摆在一起,感觉非常像中国综艺节目《最强大脑》里经常使用的、用来考察参赛选手眼睛和大脑反应的照片墙。
因为硬件条件的限制,为了让机器“学习”得更快一点,小池将照片的像素降低到了80X80,很快,机器对黄瓜分类的识别率就达到了95%左右。
2016年7月,小池组装好了自己发明的黄瓜分拣机:新鲜的黄瓜被逐个放在一条窄窄的传送带上,先通过一道类似安检门的摄像区,机器迅速通过拍摄的图像判断出黄瓜的质量等级,在黄瓜随着传送带“走”到对应质量标签的塑料筐旁边的时候,一把由螺纹钢、塑料卡子和硬纸片组成的“机械手臂”便轻轻将这根黄瓜“推”到筐子里去。
尽管因为上传相片像素过低的原因,这套黄瓜分拣机在实践时分拣的准确性从“训练”时的95%降到了70%,但这个发明还是在电视媒体的报道下让很多日本人惊讶不已,甚至给小池冠上了“农业AI先驱者”的称号。
其实,小池诚黄瓜分拣机,可以说是“站立在巨人肩膀”上的产物。
“训练”这台机器所使用的TensorFlow的开源软件库,是谷歌另外一个人工智能团队Google Brain多年工作的智慧结晶之一,即便是后来被谷歌收购的DeepMind团队,也将自己使用的软件库逐渐从最初的Torch(火炬)转移到了TensorFlow。
虽然名噪世界的AlphaGo一般被认为是DeepMind的项目,但实际上,这个项目从最开始就是两个人工智能团队合作的产物。AlphaGo的主程序员大卫·西维尔在采访时曾真诚地说:“负责着Google Brain的杰夫·迪恩项目,在AlphaGo项目进行中的很多阶段都提供了巨大的帮助,尤其是开发项目分布式计算的时候,迪恩可能是世界上最适合设计这些系统的人。”
西维尔所说的杰夫·迪恩(Jeff Dean),虽然头衔看起来是很低调的“高级研究员”,但却是硅谷大多数程序员心目的“职业偶像”。他有着一个典型美国人的外貌:瘦高,金发,瘦长的脸上,五官如用刀雕刻出来一般棱角分明,笑起来嘴咧得很宽,话语热情。他在高中时编写了一个软件来分析大量的流行病数据,这个名叫Epi Info的软件比当时的专业软件快26倍,后来被美国疾病控制中心(Centers for Disease Control)采纳并翻译成13种语言。1999年加入谷歌的时候,他就已经拥有了美国顶尖年轻计算机科学家的荣誉。
在谷歌,迪恩曾是仅次于两个创始人拉里·佩奇和谢尔盖·布林之外的传奇,程序员之间流传着无数赞美他编写程序“唯快不破”和“永不出错”的冷笑话,例如:“在2000年末的时候,杰夫·迪恩写代码的速度突然增长了40倍,原因是他把自己的键盘升级到了USB 2.0。”(因为USB2.0的数据传输速度是USB1.0的40倍),而更直接的“吹法”是:“杰夫·迪恩是直接写二进制机器代码(即0和1组成的代码,所有的编程语言最后都要被编译器编译成这种代码让硬件执行)的,他写源代码,是为了给其他开发人员作参考。”
在硅谷IT企业的常识之一是,一个出色的软件开发人员在一周中的工作可能需要一支近10人的团队花几个月才能完成,这种差异是指数级别的。这一点在一直追求“速度”的迪恩身上得到了非常好的体现。5月AlphaGo与柯洁在乌镇对弈时,迪恩同样来到了中国为参会的嘉宾和媒体讲解TensorFlow和人工智能在各个领域的应用情况。与记者聊天时,他丝毫不掩饰自己对于“效率”的追求:“我本科毕业的论文主题就是关于人工神经网络的并行训练(parallel training),那个时候这个概念才刚刚兴起,只是一个小规模的应用,我就想是不是可以使用并行训练来提高计算机系统的使用效率。”
迪恩加入谷歌时,谷歌只有20人。随着谷歌变得越来越成功,它也碰到了一项巨大的技术挑战——不能足够快地部署更多的服务器来响应需求。
迪恩和他的同事们一起找到了解决方案。先是印度裔天才程序員桑杰·格玛沃尔特(Sanjay Ghemawat)团队开发了谷歌文件系统(Google File System, GFS),使得超大型的数据文件能够分布存储在众多廉价的服务器上。然后迪恩和格玛沃尔特一起开发了一个名为MapReduce的编程工具,来帮助程序员有效地使用这些服务器并行处理庞大的数据集。正像编译器帮助程序员在编写程序的时候不用考虑CPU是如何处理该程序一样,MapReduce使得谷歌的程序员在调整搜索算法或者增加新功能的同时不必担忧如何将这些运算“并行”,也不必担心如何处理硬件的故障。
MapReduce功能强大到在2004年马上就变成了业界的标准,而且成为了众多其他软件项目的重要基石,尤其是对大量数据进行分布式处理的软件框架Hadoop——正是Hadoop, 造就了现在的流行语“大数据”。
“在2011年,我觉得并行训练似乎值得再次探索,因为无论是计算能力还是数据集,在过去的 20 年里,都已经大幅增长,这导致了 Google Brain的起源。”迪恩说。
那一年,迪恩在休息室遇见了给谷歌做顾问的斯坦福大学计算机科学家吴恩达。吴恩达透露谷歌 X 实验室中秘密推进的模仿人类大脑结构、用于研究“神经网络”的Marvin项目(以著名的人工智能先驱马文·明斯基命名)已经取得了一些进展。
迪恩出于兴趣,也开始将部分时间投入其中,并且招揽拥有神经科学背景的科拉多(Greg Corrado)为助手。在那之后,Marvin项目在谷歌工程师口中变成了“Google Brain”。
与DeepMind的哈萨比斯从小想要的“通用型人工智能”概念类似,Google Brain也想要一种不需要人类“教”、而是能够自己学习、进化的人工智能。一年后,Google Brain就在开发具有一岁儿童智力机器的实验中取得了巨大进展:这个由16000个CPU组成的人工神经网络“DistBelief”自己从YouTube上随机选取的1000万段视频,在无外界指令的自发条件下,它自主学会了识别猫的面孔(可见人类对于晒宠物这个行为是多么“丧心病狂”)。
在吴恩达2012年离开之后,迪恩请来了20世纪60年代就开始研究神经网络技术的先驱辛顿(Geoffrey Hinton,他的学生燕乐存(Yann LeCun)就是1989年首个提出卷积神经网络概念的人,现在为Facebook 人工智能实验室负责人),几个月后,这位被戏称为“谷歌历史上最重量级的实习生”的老教授在两位学生的帮助下,在 ImageNet 大型图像识别竞赛中技惊四座——DistBelief不仅识别出猴子,而且能区分蛛脸猴和吼猴,以及各种各样不同品种的猫。
DistBelief的成功让谷歌其他的产品部门(如语音识别、Gmail等)都开始尝试使用“机器学习”来改善和升级的自己产品,大幅度提高效率。不过DistBelief也有它的局限:仅仅以神经网络为目的,牢牢绑定在谷歌的内部基础设施上,几乎不可能将代码与外界共享。
于是迪恩和辛顿开始简化和重构DistBelief的代码库,使其变成一个更快、更强、更灵活的应用级别代码库,形成了第二代平台工具TensorFlow——或许在理论上,TensorFlow并没有更新的突破,但是在工程学上,宣布“开源”而且可以对接多种硬件数据接口的TensorFlow,很快成为了全球“机器学习”开发者们最愿意用的开发平台。
谷歌奉行“移动先行”(Mobile First) 的时代,安卓最终与苹果的iOS在产业生态上分庭抗礼,而今谷歌的战略变成了“人工智能先行”(AI First),对于业界另外的人工智能开发团队来说,TensorFlow也许又将是一个新的标准制定者。
TensorFlow的项目主任拉贾·蒙加(Rajat Monga)在乌镇期间对记者说:“在过去的一年半, TensorFlow 开源之后,已经有很多开发人员取得了非常可喜的成就。在人工智能领域,中国属于世界领先的国家之一,中国也是全球最大的 TensorFlow 开发人员社区之一。目前来看TensorFlow(中国的)下载量是14万,有很多公司,比如小米和京东,还有在教育界,很多大学也都在用TensorFlow。”
在5月份乌镇的围棋峰会上,Google Brain的TensorFlow团队中的资深软件工程师陈智峰特地邀请来宾们在手机上安装“谷歌翻译”的APP进行体验,并以此为大家讲解“机器学习”的原理。在APP里,手机不仅可以用语音识别人的话翻译成需要的语种和文字,还可以利用手机的照相机镜头取景,直接在屏幕上将对准的文字直翻译成另外一种语言显示出来——这种被叫做“自然语言处理”(Neural Machine Translation,NMT)的翻译技术涵盖了语音识别、图像识别、循环神经网络(RNN)、端到端机器学习等主流的人工智能技术,是与辛顿、燕乐存齐名的“人工智能三巨头”里的约书亚·本吉奥(Yoshua Bengio)团队在2015年发布的研究成果。
在这个技术里,“机器”在通过利用不同“语料”进行翻译“训练”的过程里,不仅改变了曾经“A语言—英语— B语言”的词组式机器翻译(Phrase-Based Machine Translation),在直接实现了两种语言“对应”翻译的同时,甚至会完成多个语种同时翻译,而且准确率大幅度提升,在有些语种或是通俗表达中,甚至接近了人的水平。
在去年9月技术更新之后,日本东京大学人机交互教授暦本纯一(Jun Rekimoto)在电脑上浏览网页时,偶然发现谷歌机器翻译的内容质量似乎比以前好了不少。他在谷歌翻译上输入了菲茨杰拉德的代表作《了不起的盖茨比》里的一个英文节选段落,点击翻译后,与两个日文版本进行对比,感觉是“谷歌翻译的版本虽然还带着机翻的痕迹,但更加通俗易懂”。随后,暦本把自己口头翻译的《乞力马扎罗的雪》的日语开头部分简单地输入进电脑中,发现翻译的英文结果几乎可与海明威的原作媲美——而海明威的文风正是通俗易懂。
暦本将测试结果发在有着一万多粉丝的 Twitter 上后,在短短几个小时内,上千人也 晒出了他们“调戏”谷歌翻译的结果——有些几乎完美,而有的则啼笑皆非。在天亮前,谷歌翻译进入了日本Twitter的头条热搜,把人气偶像少女组合都挤了下去。很多人都很好奇:谷歌翻译怎么会突然这样让我们眼前一亮?
今年3月底,谷歌NMT翻译开始专门为中国用户提供了这一版新的翻译APP。一句中文都不会的NPR(美国全国公共广播电台)的记者Aarti Shahani,一个来自纽约的姑娘,成了第一批吃螃蟹的人之一。她先是举着手机在郑州进行尝试,或许是因为口音的问题,很多话语一直翻译不出来,但后来她在上海,却完全可以一边做指甲一边通过手机的语音识别翻译,跟36岁的美甲技师朱菊文愉快地对着手机互相“聊”了一个多小时家长里短。
值得一提的是,谷歌NMT翻译技术在最初内部利用TensorFlow调试系统去“学习”翻译语言时,一开始选择的就是“英汉互译”。一方面,是因为开发人员主要是陈智峰和另外一个来自中国的程序员,需要使用两种他们熟悉的语言;另一方面,因为汉语里存在助词、虚词、竖向排版等因素的“干扰”,汉语翻译一直是长期以来依靠传统翻译的机器翻译的“短板”。在人工智能“介入”翻译之后,“英汉互译”的准确度比原来提升了85%。在乌镇围棋峰会的发布会现场,媒体记者私下开玩笑说,真的很担心同声传译这个行业在以后就被机器翻译取代了——因为在牛津大学最近针对“机器学习”的一项调查预测,未来10年人工智能可以超越人类能力水平的领域里,翻译被排在了第一位。而在这个领域,除了谷歌之外,Facebook、百度等一干科技公司水平都不低,各有特色。
记者问陈智峰,“现在我们带着手机去另外一个使用陌生语言的国家旅游、购物,是不是真的可行?”陈智峰没有迟疑地回答:“我觉得是可以的。”
当然,对人工智能的开发者们来说,除了可以让生活变得更加便利,去攻克人类最难解决的难题才让他们更有成就感,Lily Peng所在的谷歌医疗团队就是其中的代表之一。
Lily Peng除了是谷歌研究部医学影像小组的产品经理,同时也是一名非执业医师。她在加州大学旧金山分校及伯克利分校获得了生物工程学的医学博士学位及博士学位,毕业后先是与同学创业,来到谷歌前,则供职于一家提供技术解决方案企业——这样的经历让她对医疗与科技的“结合”有着独特的领悟。
从几年前开始,Lily Peng团队开始研究如何把机器学习技术运用到糖尿病视网膜病变(Diabetic Retinopathy)的诊断中。目前全球范围内有 4.15 亿糖尿病患者面临视网膜病变的风险。若是发现及时,该病是可以被治愈的,但若是未能及时诊断,则可能导致不可逆转的失明。检测糖尿病视网膜病变最常用的方法之一,是用眼球后部的扫描片进行分析,观察是否有病变的征兆(例如微动脉瘤、出血、硬性渗出等),并判断其严重程度。
Lily Peng 说:“我们最开始是选择和印度医院合作,是因为这个国家医疗人才短缺。印度有很多医院发现有一些人是因为糖尿病引起的视网膜病变,但是由于一些医生没有经过专业训练,没办法对患者眼底照相之后进行图像解读。市场当中有这样的需求,所以就触发了我们和印度医院进行合作,对他们的医生进行了算法的培训。”
通过与印度和美国的医生密切合作,谷歌创建了一个包含 12.8 万张眼底扫描图片的数据集,用于利用TensorFlow“训练”了一个检测糖尿病性视网膜病变的人工神经网络。随后,通过把神经网络的诊断结果,与 7 个美国委员会认证的眼科医生的检查结果相对比,来验证其诊断灵敏度。结果表明,该算法的效果与眼科医生小组的表现不相伯仲,甚至还比专业的医生好一点点——而这个技术用于医院时,医生都感觉不到它的存在,因为机器扫描完病人的眼底CT片之后,就可以发现是否有病变点和判断病情的严重程度。“这对于每天要接待几十到上百病人的医生来说,是一个可以大幅提高效率的工具,可以解放他们的时间去关心病人的身心。”Lily Peng 说。
这并不是“机器”在像素级别的图片识别上第一次胜过人眼——在澳大利亚,莫道克大学 (Murdoch University)的霍奇森(Amanda Hodgson)动物保护研究团队为了更好地保护族群严重下降的海牛,利用TensorFlow训练机器分辨航拍海洋图片,在45000張人眼看起来除了蓝色之外什么都没有的照片里,成功找到了许多海牛的具体位置,准确率达到了80%。
当然,人工智能在生活中的“触手可及”远非这几个案例,或许在不久以后的美术馆,“机器”可以根据你的表情为你找出匹配的名画,手机也可以将你拍的照片变成各种风格的艺术作品;农场里的养牛人每天点点手机屏幕就可以养好每一头牛,农用机具可以一边播撒化肥一边识别庄稼里的杂草并把它拔掉;在城市里,网约车或出租车将不再需要司机,自动驾驶就可以将你安全送达,或者还可以按照你的要求,中间去一个地方等你买个外卖。
只要“机器”自己会学习,很多事情都可以变得轻松有趣。