扎克伯格真的亲手把钢铁侠的智能助手造出来了,说句话就能控制整个豪宅!

Facebook 创始人马克·扎克伯格是一个喜欢挑战自己的人。2015 年,他立志每周都读一本新书。而今年,他给自己的挑战更加有技术含量:搭建一个人工智能系统,就像《钢铁侠》里的 “Jarvis” 那样,理解语音/文字指令,去控制家里所有的电器……

你猜怎么样?他还真完成了。今天扎克伯格专门发了一篇博文,详细介绍 Jarvis 是怎样搭建起来的。

这台 Jarvis “人工智能电脑”能做的事情,其实已经远超过市面上任何一个同类或类似产品:它支持文字和语音指令,能控制空调温度高低、调整灯光明暗,也能从网上搜歌自动播放,还能烤面包、给他家迷之画风的“野兽”自动喂食。

就是这坨跟墩布一样的东西……

而且大家都知道,扎克伯格在时尚方面非常省事儿,一年到头就是一件灰色的 T 恤——不知道的是他连“从衣柜里拿出 T 恤”的功夫都省了!因为他组装了一门大炮,用 Jarvis 控制,每天早上接收命令朝他打出一件新的灰色 T 恤……

tshirt-cannon

最重要的是,Jarvis 可以在房子的任何一间屋子里接受指令,还能明白像“打开空调”这样一句指令,发出指令的人是谁,在哪间屋子,进而打开正确的空调!

这太酷了!怎么做到的?

如下图:

jarvis-infrastructure

看起来很复杂对不对?其实,如果我们将 Jarvis 看成一台电脑,就很好理解了:

1)中间的蓝色方块是 Jarvis 服务器,可以理解为处理器+硬盘;

2)右边的是操作界面,包括 Messenger 聊天机器人、iOS 语音控制应用等等,键盘、鼠标和显示器;

3)下面的三块是运行在服务器里的几种技术,包括自然语言处理、语音识别、视觉和脸部识别以及强化学习 (reinforcement learning) 等,地位相当于电脑里运行的操作系统;

4)左边的一大堆东西则是 Jarvis 可控制的电器种类,等于电脑上跑的程序。

扎克伯格在博客里介绍,在构建 Jarvis 的“操作系统”过程中,自己用到了 Python、Objective C 和 PHP 等语言。

具备了文字和语音识别、人脸识别的能力,Jarvis 现在能够控制扎克伯格家的灯光系统 (Creston)、恒温器(也即空调系统)、大门、连接流媒体音乐服务 Spotify 的 Sonos 音箱、Nest 网络摄像头(看他女儿麦克斯用的)等等。扎克伯格在博客里介绍,当自己为了 Jarvis 亲手开始写代码的时候,才发现用一个系统去控制这么多系统有多难:每个系统的语言都不一样,协议五花八门;有些电器已经联网了,有些则除了物理开关之外,根本没有控制的 interface……

比方说,扎克伯格需要用文字指令控制烤面包机,首先需要一个能联网的烤面包机……但这样的烤面包机根本找不到。最后,他不知道从哪儿翻出来一个上世纪 50 年代的面包机,然后自己给它装了一个能联网的开关。

包括这个面包机和前面提到的 T 恤大炮……开发 Jarvis 对扎克伯格的硬件开发知识也带来了不小的挑战。

zuck-jarvis-gif

 

自然语言处理

Jarvis 的语言理解能力是分两阶段实现的。

首先,扎克伯格要让 Jarvis 能理解文字,比如“卧室”、“灯光”、“开”和“关”等常用的关键词,以及能在听到过去没听到过的词,比如 Spotify 上的歌名或音乐人的时候,能够根据语境去对应的服务/设备上搜索并完成任务。

zuck-jarvis-1

第二阶段则是开发一个语音转文字的系统。

那么,Jarvis 的自然语言处理能力现在到了什么水平呢?扎克伯格介绍,它的上下文语境结合能力已经达到了自己可以接受的标准。比如,当他对 Jarvis 发出“打开我办公室的空调”指令时,系统能够正确地打开他的空调,而不是妻子普利西拉的空调;再比如,扎克伯格告诉 Jarvis “给我来点音乐,”结果 Sonos 开始播放的音乐太劲爆,他又告诉 Jarvis “这个感觉不对,给我点轻松的。”Jarvis 能理解语境函数是“放音乐”,变量是“音乐”,值是“轻”,进而正确完成任务。

扎克伯格说,和特定的指令和问法相比,他跟妻子现在越来越多地使用开放式的指令,“我知道的商业产品里面,没有能做到这一点的。这里的机会很大。”他写道。

 

视觉和脸部识别

扎克伯格为 Jarvis 开发的机器视觉功能,主要有这么几个任务:

首先,也是最重要的任务,是识别访客。扎克伯格在自家门口装了几个不同的摄像头,从各个角度拍摄门口画面。当访客来到时,系统首先识别到门口有人便激活识别程序,捕捉访客的人脸细节,进而通过 Facebook 人脸数据库识别访客是谁。然后,Jarvis 会根据扎克伯格的日程和访客列表确认这个人是否在列表上,确认后便会打开门,并告知扎克伯格客人已经来了。

3066478-inline-i-4-zuck-sits-and-demo-jarvis

视觉识别功能的另一个重要任务,是为 Jarvis 处理其他任务提供上下文语境。比如当扎克伯格说“调高音响的音量”,Jarvis 需要通过摄像头观察哪个房间里有人——甚至更精确一些,扎克伯格在哪个房间里而不是正在睡觉的麦克斯在哪个房间,然后完成任务。

交互界面

扎克伯格自己用 iPhone,在家里的每个房间都放了一台手机,上面都安装了自己开发的 Jarvis 语音控制程序。这个程序随时保持聆听(就像 Google Now 和新版 Siri 一样)这样,他可以在每个房间里都用语音随时控制 Jarvis。

zuck-jarvis-4

当说话不方便的时候, Facebook Messenger 是最适合的文字对话控制界面。这主要是因为 Facebook 在今年推出了 Bot Framework,极大地方便了开发者在 Messenger 上开发聊天机器人。

Jarvis 聊天机器人会把每一条指令发送到后端的 Jarvis 服务器。如果指令是语音,服务器则会用语音识别功能翻译成文字然后处理。聊天机器人还承担了整个 Jarvis 通知系统的工作,比如当家里没人有访客来到时,系统会拍下门口画面通过 Messenger 发送给扎克伯格。


扎克伯格的开发感悟

完成了 Jarvis 1.0 的搭建工作之后,扎克伯格获得了很多人生感悟。他说,

作为 Facebook 的 CEO,我几乎没什么时间在内部环境提交代码,但我一直没有停止编程,主要都在 Jarvis 上。我知道自己今年会学到很多关于人工智能的知识,但我没有意料的是,Jarvis 让我找回了在 Facebook 当工程师的感觉……

对于语音的看法:

不光是语音,几乎绝大部分的机器学习系统,现在的处境都是更多用于解决特定的问题(并不具备解决普遍问题的能力。)

这和从业者对人工智能的认知一样,和普罗大众的认知恰好相反。其实,人类距离强人工智能,或者 General AI 还很远。大部分人工智能系统都是解决特定任务的。

关于 Messenger 聊天机器人,他认为:

在 Messenger 上开发机器人比开发一个单独应用容易太多了。它自动就帮你解决了很多问题,比如 iOS 和 Android 跨平台,文字和图片内容理解,可靠的通知,以及权限管理等等。

更喜欢文字还是语音?这个答案很有趣:

和一个系统说话,比和系统打字更容易提高感情的投入。

简单来说,你会期待对方是“人”。

我发现我发文字比自己想象的更频繁。原因很多,比如当你周围有人的时候发语音指令还是一件挺尴尬的事情。我也更愿意接受文字的回答,这样我可以选择什么时候看。其实整个 Messenger 平台上也是一样,文字信息数量的增速比语音信息快得多。这让我产生了一种认知:未来的人工智能系统不能只有语音控制,也要有一个单独的文字对话界面。

关于整个系统:

想要让这样一个系统工作起来,我们需要更多的联网设备。不仅如此,行业也需要通用的 API 和标准,让每一台设备都能和彼此沟通。

关于 Facebook 的工程环境:

我发现,我们自己给的 iOS 和语音识别工程师提供的工具链真是太强大了。

我用到了 Messenger Bot Framework,Facebook 自己开源的 Nuclide 开发包和 Buck build 系统让开发更快更容易,FastText 文本分类系统等等。如果你对人工智能开发感兴趣,FAIR(Facebook 人工智能研究院)的 GitHub 页面值得一看。

Facebook 的核心价值观有一条就是快速行动 (move fast)。对于任何科技公司而言,使用内部开发工具快速开发都十分重要。在这点上,我很感谢我们的内部架构和工具团队。


接下来,Jarvis 会怎样进化?

小扎说,尽管他的 2016 挑战结束了,Jarvis 还有很多提升的空间。

扎克伯格的下一个首要任务是开发 Jarvis 语音 Android 应用,让他的家人能在更多房间里发出语音指令和控制更多的电器。他还说,要让 Jarvis 学着做饭,“估计比 T 恤大炮难的多。”

长期来看,扎克伯格想提升 Jarvis 的学习能力,达到能够自学的水平。

当然,扎克伯格也在考虑通过什么方式能让 Jarvis 为更多人所用。简单的开源肯定不行,因为现在的系统和代码和扎克伯格家的系统绑定的太深了。“如果我能开发一个抽象的控制层,也许我会把它开源的。当然,它会变成一个新产品也说不定。”扎克伯格在博客里写道。

0f9cbcaeeda33c507723992b8d42c6c9a52b0e74

图片:马克·扎克伯格、《快公司》

订阅更多文章
更多有趣好玩的内容 尽在品玩微信公众号