加入收藏 | 设为首页 | 会员中心 | 我要投稿 南平站长网 (https://www.0599zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 经验 > 正文

扎克伯格开发笔记:打造Jarvis的日子,我庆幸自己从未停止过编程

发布时间:2016-12-26 17:55:04 所属栏目:经验 来源:雷锋网
导读:副标题#e# 雷锋网按:作为一家科技巨头的CEO,扎克伯格却依然保持写代码的习惯。可怕的自制力,超强的执行力,当比你有钱的人还比你更聪明更勤奋的时候,雷锋网编辑不禁开始怀疑人生。 以下文章来自扎克伯格的笔记“Building Jarvis”,由雷锋网(公众号:雷
副标题[/!--empirenews.page--]

雷锋网按:作为一家科技巨头的CEO,扎克伯格却依然保持写代码的习惯。可怕的自制力,超强的执行力,当比你有钱的人还比你更聪明更勤奋的时候,雷锋网编辑不禁开始怀疑人生。

以下文章来自扎克伯格的笔记“Building Jarvis”,由雷锋网(公众号:雷锋网)编译,未经许可不得转载。

扎克伯格开发笔记:打造Jarvis的日子,我庆幸自己从未停止过编程

2016年我给自己制定了一个挑战:打造一个像钢铁侠里 Jarvis 那样的家庭AI助手。

我的目的是了解人工智能发展的现状。虽然人工智能已经比人们能察觉到的要先进得多,但是依然还有很长的路要走。通过完成这些挑战,我不仅熟悉了Facebook的工程师们使用的内部技术,而且还对智能家居有了全面的了解。

在这一年里,我打造了一个可以通过手机和电脑进行对话的AI系统。它能够控制我家里的灯光、温度、电器、音乐和安防系统,而且这个AI还能了解我的品味和习惯,可以学习新的词汇和概念,甚至可以逗我的女儿Max开心。Jarvis是由Python、PHP和Objective C编写的,运用了包括自然语言处理、语音识别、面部识别以及强化学习在内的人工智能技术。

在本文中,我将会解释我创建的Jarvis到底是什么,以及我从中学到了什么。

扎克伯格开发笔记:打造Jarvis的日子,我庆幸自己从未停止过编程

开始:把家变成“互联网”

从某些方面来说,这个挑战比我预想的要容易。实际上,我给自己制定的跑步计划(2016年跑365公里)累计花费的时间比这还更多。不过,将我家里所有的系统全部连接起来,并让系统之间互相通信,却比我预想的要难得多。

在可以构建AI之前,我必须首先编写代码将使用不同语言和协议的系统连接起来。我们的电灯、恒温器和门使用的是Crestron系统,音乐流媒体Spotify搭配的是Sonos音箱,还有一台三星电视机,以及为Max准备的Nest Cam摄像头,当然,我的工作室连接的是Facebook的系统。为了能够通过我的电脑发布诸如开灯、播放歌曲之类的指令,我不得不对其中一些系统的API进行逆向开发。

此外,大多数的电器甚至都不能连接到互联网。虽然通过支持连接到互联网、可远程控制的电源开关能够控制其中的一些电器,但是这还远远不够。比如,如果你希望烤面包机能在接通电源的时候自动开始烤面包,但你很难找到能够让你在断电的情况下将面包按下去的烤面包机。最终,我最终找到了一个1950年代的古董烤面包机,然后把它插在了智能插座上。同样的,要想连接Beast(扎克伯格的宠物狗)的自动投食器,则需要涉及到硬件改造工作。

对于Jarvis这样的助手来说,要想能够帮助更多的人控制家里的一切,我们需要将更多的设备连接起来。而业界也需要开发通用的API和标准,让设备与设备之间能相互通信。

自然语言

扎克伯格开发笔记:打造Jarvis的日子,我庆幸自己从未停止过编程

当我写完能够让我的电脑控制我家的代码之后,下一步就是让我和电脑之间的沟通变得像日常对话那样自然。这里的过程分为两步:首先实现通过文本信息来对话,然后增加将语音转录成文本的功能。

从寻找关键词开始,比如通过“卧室”、“灯”、“开”这几个关键字,它可以知道我是在告诉它把卧室的灯打开。很快,我就发现它需要理解同义词,“family room”和“living room”在我们家里指的是同一个房间,这就需要建立一种能教它学习新的词汇和概念的方法。

理解语境对任何AI来说都非常重要。例如,当我告诉它打开我办公室里的空调时,这和Priscilla说同样的话的意思完全不同。这造成了一些混乱。比如,当你在没有指定房间的情况下让它把灯调暗一点或者播放一首歌的时候,如果它不知道你在哪个房间,那么很可能打开Max房间里的播放器,然后在我们希望她能打个小盹的时候把她吵醒。

音乐是一个更有趣也更复杂的自然语言领域。对于一个识别关键字的系统来说,有太多的艺术家、歌曲、专辑,因此你可以问的东西也非常宽泛。电灯只能关闭或打开,然而当你说“play XX(播放XX歌曲)”时,即使细微的差别也可能意味很多不同的意思。比如,“play someone like you(播放歌曲someone like you)”,“play someone like Adele(播放和Adele风格相似的歌手的歌曲)”,“play some Adele(播放Adele的歌)”,这些听起来很相似,但其实是完全不同的指令。第一个指令是播放一首特定的歌曲,第二个是推荐一位歌手,第三个则是创建一个Adele最好听的歌曲播放列表。不过,通过一个有反馈的系统,AI可以学习到这些差异。

一个AI系统对语境的了解越多,就能越好地处理开放式问题。我经常只对Jarvis说“play me some music(播放音乐)”,它会查看我过去的听歌习惯,大部分情况下它播放的都是我想听的歌。如果它播的歌不符合当时的气氛,我可以直接告诉它,比如,“这不是舒缓的,播放一些舒缓的音乐”,它就会学习到那首歌的分类,并立即做出调整。而且它也知道是我在跟它说话,还是Priscilla(扎克伯格的妻子)在跟它说话,这样它就可以根据我们的口味推荐不同的歌曲。相比非常具体的指令,我发现我们更常使用开放式的命令。就我所知,目前还没有哪个商业化的产品在做这个,这应该是一个巨大的机会。

视觉和面部识别

扎克伯格开发笔记:打造Jarvis的日子,我庆幸自己从未停止过编程

人类三分之一的大脑都负责视觉,而AI在理解图像和视频方面也有很多难题。这些难题包括追踪(比如Max在婴儿床中移动是不是说明她醒了?),对象识别(例如房间里的是Beast还是一块毯子(注:Beast是一条长得很像地毯的宠物狗)),以及面部识别(例如谁在门口?)。

面部识别是对象识别中一个特别难的问题,因为大部分人的长相是很相似的,相比之下,区分任意两个不同的物体,比如一个三明治和一座房子,就简单得多。但是Facebook在面部识别方面的技术能力很强,它能够很轻易地识别你照片库中的朋友。当你的朋友站在你的门前的时候,通过面部识别,AI系统就能决定是否让他进来。

(编辑:南平站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读