阅读684 返回首页    go 微软 go windows


如何让Cortana像人一样交流

抱歉我对人工智能、深度学习这些课题并没有什么研究,所以以下说的可能很粗浅可笑。

---------------------------------------

显然,Cortana一定具有学习能力。但它是如何运作的呢?我猜应该是默默的在后台、甚至在微软的数据库中进行。但为什么不把学习同时也放到前台,让用户通过交流、像教一个孩子一样去教Cortana呢?

Cortana是一个人工智能而不是语音助手,这意味着她的灵魂不在于有多么丰富的功能、有多少API权限,而在于如何像人一样交流、思考,如何理解人类。而了解一个人最好的方式,我想是通过交流,而不是默默阅读死板的资料。

如果要像对一个人类小孩一样,通过交流让Cortana学习和理解,我认为大概有以下关键点:

1、询问

目前Cortana也有询问功能,但仅仅针对一个可理解、但不完整的指令。她并不会对一句无法理解的话进行询问。实际上,我必须得说设计者太执着于传统的人机交互流程,太执着于对每个输入都有明确结果——true or false。

举例:

“打电话给老婆”——Cortana能理解这个指令;

但如果我说“电我老婆”呢?

这是个简单的动宾短语。Cortana能理解宾语,但无法理解动词。但她可以简单的问:“电是什么?”或者“怎么电?”

听起来其实很简单。但这需要从本质上改变Cortana的响应流程。除非我明确说搜索,否则不要用网页搜索来终止交流;保持询问,直到能明确理解完整指令,或是用户明确要求放弃;除非可理解的短语比例实在太低,否则也不要回应”没听清楚“。

相信我,在用户没有要求搜索的时候启动一个网页搜索是最蠢的响应。没有Cortana这么多年我也活下来了,我不需要她一定得做点什么。

P.S.我们会喜欢一个不太善解人意、但会反复询问确认以便把事情做对的助理;但我们很难喜欢一个自以为是、不问清楚就把事做错的助理

2、纠错

这实际上是询问的补充机制,同样是为了充分交流和理解。如上所述,Cortana可以用反复询问直到明确理解指令,但她也可能错误理解指令。因此,在她执行指令的过程中,应该始终保持一个纠错监听;事实上,哪怕执行完了也应该允许纠错。

举例:

”我今晚要去北京“

”正为你查找到北京的导航路线“

”不对“

”(中止)哦?我应该怎么做?“

“我坐飞机去,查查航班”

3、学习模式

学习模式是个很简单的功能,本质上就是try&catch的沙盒模式,让用户和Cortana相互熟悉。在这个过程中,实际上仍然是对”询问“和”纠错“的反复应用。

举例:

"小娜,学习模式”

“学习模式已开启”

“短信”

“我会问你要发短信给谁”

“不对,我只说“短信”的意思是我想看看有什么新短信“

”我不太理解。请告诉我“短信”这个命令等同于什么?“

”所有未读短信“

”记住了“

”很好,我们试一次。短信“

”我会为你列出所有未读短信。我做的对吗?“

”对,真棒“

4、语境,连贯性。

OK,我们逐渐谈到了核心。我之前提到”像人一样交流、思考“,其中最核心的是像人一样思考。我非常相信微软在这方面有着更加深入的理解和研究,不过我还是想稍详细的谈谈我的理解——

**********************

人的大脑工作方式很多时候就像是简单的”匹配、关联“。我们通过感官接收信息,分解信息,然后把信息的每一部分用各种方式去和”数据库“做匹配。这个数据库异常庞大,因此它有一套复杂的索引机制,某些内容会更加容易被匹配到。

这个索引机制其中之一,就是时间。时间越近、匹配命中率越高。而这就是所谓”语境“的成因。当我们听到意味不明的话,我们优先从最近的对话中——而非久远的记忆中、权威的资料中——进行匹配并尝试诠释它的含义;甚至我们听到意味明确的话,我们仍然会根据最近的对话去丰富它的含义,尝试探寻是否可以有不同的理解。

我们这样思考,然后这样交流。而后我们进一步在交流中巩固”语境“的使用。我们教别人根据语境来理解对话,我们在写作中根据上下文设计情境,我们根据语境省略一些措辞,营造出人类独有的交流中的默契。

***********************

人与人之间的交流总是连贯的,上一句话和下一句话互相联系——除非我们强行说“forget it,我们来开始一个全新的话题”。这是因为人的思维本来就具有连贯性。但在与Cortana交流时,激活语、点击话筒、时间间隔,这些设定生硬的分隔了一切。这还是与传统的机器交流的方式——指令、响应,指令、响应。

作为人工智能,Cortana必须尝试理解“语境”,必须根据时间相关性把所有对话(还包括操作)联系起来。人是不精确的生物,自然语言是不精确的指令。只有尝试像人一样思考、根据语境去补充这种不精确,Cortana才能真的像人一样和人交流。

举例1——现有的“关联上下文”功能:

“Cortana,明天的天气如何?”

“明天天气(...)”

“后天的呢?”

“后天天气(...)”

看上去,Cortana已经做到了关联上下文。但根据我的测试,这只是表象。这种“关联”实际上只是对现有指令的快捷修改,并不是“理解”。请看下一个例子:

举例2——关联理解,补充含义:

“Cortana,明天杭州的天气如何?”

“明天杭州天气(...)”

”查查过去的航班“

(无法理解)

两句话是两个不同指令,因此”快捷修改指令“就无法实现。但如果使用”理解“机制,就可以这样:

a) 指令类型是”查航班“

b) ”过去“是指从所在地出发

c) 缺少目的地信息。但上文提到杭州,而杭州并不是当前所在地,因此可以猜测杭州为目的地

P.S. Cortana也可以尝试确认:”你是指北京到杭州吗?“

*******************

举例3——关联理解进阶版:

“Cortana,打电话给我老婆”

(电话...)

“Cortana,帮我订张机票”

我没有说明时间、目的地,那么此时优先应该考虑语境。

a) 最优先能关联到的对象是“老婆”,而”老婆“具有”所在地“属性,因此可以猜测要前往“老婆”的所在地

b) “老婆”是重要的人,因此越快越好

因此Cortana应该“推论”我想要查找最早的前往“老婆”所在城市的航班。她可以向我询问是否理解正确、并询问“老婆”的所在城市。

********************

举例4——修正含义:

”Cortana,终结者5上映了吗?“

”已经在本地各大影院上映“

”帮我在万达影院买张今晚的电影票“

”今晚的场次有19:00、20:00、21:00,请问要买哪一场?“

”我19点到20点要去科技园“

如果按照传统的指令模式,Cortana要么会为我导航到科技园,要么会为我创建提醒——因为最后一句话几乎是个非常明确的指令。当我是人类,人类几乎不会完全抛开语境进行交流。

应该如何理解呢?

a) 之前的对话并没有结束,因此最后一句话必定(极大概率)和上文相关

b) 上下文都提到了”时间“,因此关联性在于”时间“。由于连续提到”时间“,时间升级为主要内容,”要去科技园“变为次要内容

c)”要去科技园“和”看电影“无法建立关联,因此我所描述的这个计划和看电影无关

d) 因此,我是在否定19点到20点这个时间段

因此,Cortana应当回答我:“那么选择21:00的场次吗?”

*************************

这个话题继续谈下去可以有很多很多,通过语境,我们可以理解情绪、理解反话、理解双关……嗯不过作为一篇社区发言我已经写得太啰嗦了。

上面我所举的例子里,Cortana总是在不断的推论、猜测,也许有人会觉得怪怪的。但这就是人类交流的方式。不断的猜测、不断的通过交流去证实。企图一步到位的精确执行命令,这并不是人类的思维方式。

我非常理解人工智能是条漫长困难的路。如果说这只是起步,那么我更希望Cortana像个蹒跚学步的孩子,优先去掌握良好的学习方式,而不是急急忙忙去开车做饭。



最后更新:2017-11-18 18:05:14

  上一篇:go Win10不支持添加小米5
  下一篇:go 我的电脑装了系统后,忘了密码了,有恢复密钥,恢复不了