Facebook 创始人马克·祖克柏是一个喜欢挑战自己的人。2015 年,他立志每週都读一本新书。而今年,他给自己的挑战更加有技术含量:搭建一个人工智慧系统,就像《钢铁人》里的「Jarvis」那样,理解语音/文字指令,去控制家里所有的电器……
你猜怎幺样?他还真完成了。今天祖克柏专门发了一篇 文章 ,详细介绍 Jarvis 是怎样搭建起来的。
这台 Jarvis「人工智慧电脑」能做的事情,其实已经远超过市面上任何一个同类或类似产品:它支持文字和语音指令,能控制空调温度高低、调整灯光明暗,也能从网路上搜寻歌曲自动播放,还能烤麵包、给他家迷之画风的「野兽」自动餵食。
就是这坨跟墩布一样的东西……
而且大家都知道,祖克柏在时尚方面 非常省事儿 ,一年到头就是一件灰色的 T 卹——不知道的是他连「从衣柜里拿出 T-shirt」的功夫都省了!因为他组装了一门大砲,用 Jarvis 控制,每天早上接收命令朝他打出一件新的灰色 T-shirt……
最重要的是,Jarvis 可以在房子的任何一件屋子里接受指令,还能明白像「打开空调」这样一句指令,发出指令的人是谁,在哪间屋子,进而打开正确的空调!
这太酷了!怎幺做到的?
如下图:
看起来很複杂对不对?其实,如果我们将 Jarvis 看成一台电脑,就很好理解了:
中间的蓝色方块是 Jarvis 服务器,可以理解为处理器+硬盘。右边的是操作界面,包括 Messenger 聊天机器人、iOS 语音控制应用等等,键盘、鼠标和显示器。下面的三块是运行在服务器里的几种技术,包括自然语言处理、语音识别、视觉和脸部识别以及强化学习(reinforcement learning)等,地位相当于电脑里运行的操作系统。左边的一大堆东西则是 Jarvis 可控制的电器种类,等于电脑上跑的程序。祖克柏在文章里介绍,在构建 Jarvis 的「操作系统」过程中,自己用到了 Python、Objective C 和 PHP 等语言。
具备了文字和语音识别、人脸识别的能力,Jarvis 现在能够控制祖克柏家的灯光系统(Creston)、恆温器(也即空调系统)、大门、连接流媒体音乐服务 Spotify 的 Sonos 音箱、 Nest 网路摄影机(看他女儿麦克斯用的)等等。
祖克柏在文章里介绍,当自己为了 Jarvis 亲手开始写代码的时候,才发现用一个系统去控制这幺多系统有多难:每个系统的语言都不一样,协议五花八门;有些电器已经联网了,有些则除了物理开关之外,根本没有控制的 interface……
比方说,祖克柏需要用文字指令控制烤麵包机,首先需要一个能联网的烤麵包机……但这样的烤麵包机根本找不到。最后,他不知道从哪儿翻出来一个上世纪 50 年代的麵包机,然后自己给它装了一个能联网的开关。
包括这个麵包机和前面提到的 T-shirt 大砲……开发 Jarvis 对祖克柏的硬体开发知识也带来了不小的挑战。
Jarvis 的语言理解能力是分两阶段实现的。
首先,祖克柏要让 Jarvis 能理解文字,比如「卧室」、「灯光」、「开」和「关」等常用的关键词,以及能在听到过去没听到过的词,比如 Spotify 上的歌名或音乐人的时候,能够根据语境去对应的服务/设备上搜索并完成任务。
第二阶段则是开发一个语音转文字的系统。
那幺,Jarvis 的自然语言处理能力现在到了什幺水平呢?祖克柏介绍,它的上下文语境结合能力已经达到了自己可以接受的标準。比如,当他对 Jarvis 发出「打开我办公室的空调」指令时,系统能够正确地打开他的空调,而不是妻子普利西拉的空调。
再比如,祖克柏告诉 Jarvis「给我来点音乐,」结果 Sonos 开始播放的音乐太劲爆,他又告诉 Jarvis「这个感觉不对,给我点轻鬆的。」Jarvis 能理解语境函数是「放音乐」,变量是「音乐」,值是「轻」,进而正确完成任务。
祖克柏说,和特定的指令和问法相比,他跟妻子现在越来越多地使用开放式的指令,「我知道的商业产品里面,没有能做到这一点的。这里的机会很大。」他写道。
视觉和脸部识别祖克柏为 Jarvis 开发的机器视觉功能,主要有这幺几个任务:
首先,也是最重要的任务,是识别访客。祖克柏在自家门口装了几个不同的摄像头,从各个角度拍摄门口画面。当访客来到时,系统首先识别到门口有人便启动识别程序,捕捉访客的人脸细节,进而通过 Facebook 人脸数据库识别访客是谁。
然后,Jarvis 会根据祖克柏的日程和访客列表确认这个人是否在列表上,确认后便会打开门,并告知祖克柏客人已经来了。
视觉识别功能的另一个重要任务,是为 Jarvis 处理其他任务提供上下文语境。比如当祖克柏说「调高音响的音量」,Jarvis 需要通过摄像头观察哪个房间里有人——甚至更精确一些,祖克柏在哪个房间里而不是正在睡觉的麦克斯在哪个房间,然后完成任务。
交互界面祖克柏自己用 iPhone,在家里的每个房间都放了一台手机,上面都安装了自己开发的 Jarvis 语音控製程序。这个程序随时保持聆听(就像 Google Now 和新版 Siri 一样)这样,他可以在每个房间里都用语音随时控制 Jarvis。
当说话不方便的时候, Facebook Messenger 是最适合的文字对话控制界面。这主要是因为 Facebook 在今年推出了 Bot Framework,极大地方便了开发者在 Messenger 上开发聊天机器人。
Jarvis 聊天机器人会把每一条指令发送到后端的 Jarvis 服务器。如果指令是语音,服务器则会用语音识别功能翻译成文字然后处理。聊天机器人还承担了整个 Jarvis 通知系统的工作,比如当家里没人有访客来到时,系统会拍下门口画面通过 Messenger 发送给祖克柏。
祖克柏的开发感悟完成了 Jarvis 1.0 的搭建工作之后,祖克柏获得了很多人生感悟。他说,
对于语音的看法:
这和从业者对人工智慧的认知一样,和普罗大众的认知恰好相反。其实,人类距离强人工智慧,或者 General AI 还很远。大部分人工智慧係统都是解决特定任务的。
关于 Messenger 聊天机器人,他认为:
更喜欢文字还是语音?这个答案很有趣:
简单来说,你会期待对方是「人」。
关于整个系统:
关于 Facebook 的工程环境:
接下来,Jarvis 会怎样进化?
小扎说,儘管他的 2016 挑战结束了,Jarvis 还有很多提升的空间。
祖克柏的下一个首要任务是开发 Jarvis 语音 Android 应用,让他的家人能在更多房间里发出语音指令和控制更多的电器。他还说,要让 Jarvis 学着做饭,「估计比 T-shirt 大砲难的多。」
长期来看,祖克柏想提升 Jarvis 的学习能力,达到能够自学的水平。
当然,祖克柏也在考虑通过什幺方式能让 Jarvis 为更多人所用。简单的开源肯定不行,因为现在的系统和代码和祖克柏家的系统绑定的太深了。「如果我能开发一个抽象的控制层,也许我会把它开源的。当然,它会变成一个新产品也说不定。」祖克柏在文章里写道。
