如何让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
上一篇:
Win10不支持添加小米5
下一篇:
我的电脑装了系统后,忘了密码了,有恢复密钥,恢复不了
你的设备已过期,并缺少重要的安全和质量更新,因此存在风险。让我们带你重回正轨,这样
Microsoft store 无法联网,显示Microsoft Store需要联网,你似乎没有联网
设备以迁移 由于仅部分匹配或匹配不明确,因此无法迁移设备
由于在创建转储期间出错,创建转储文件失败。
发生临时 DNS 错误
应用商店,在我们这边发生问题,无法使你登陆,错误代码: 0xD000000D
照相机不可用,错误代码:0xA00F4244(0xC00DABE0)
应用商店打开异常提示“清单中指定了未知的布局”
自定义扫描Windows defender里面的设备性能和运行状况 黄色感叹号问题
windows预口体验成员内口版本遇到问题需要重启
热门内容
windows10 点开此电脑后,有两个显示硬盘盘符的目录是怎么回事?
windows 10 专业版无法下载中文语言包
KB4056892
win10不能共享文件夹
在Surfacebook上用Windows to go 1703版本,更新后重启蓝屏,无法进入系统
windows10 1709版本更新失败,错误0x8007001f
microdoft visual c++ 2015 redistributable
WIN10 Insider Preview 17025更新失败,错误代码0x80096004
计算机管理服务 出现一个内部错误(INVALID
关于控制面板中的安全和维护内提示Windows defender 防病毒已关闭的问题