阿里智能对话交互实践及范式思考
在语言理解这一块,我们把用户语言的意图理解抽象为一个分类问题,之后,就有一套相对标准的方法解决,比如CNN神经网络、SVM分类器等等。阿里巴巴现在就是采用CNN神经网络方法,并在词的表示层面做了针对性的改进。机器要理解用户的话的意思,背后一定要依赖于大量的知识。比如说,"大王叫我来巡山"是一首歌的名字,"爱探险的朵拉"是一个视频,互联网上百万量级这样开放领域的实体知识,并且每天都会有新的歌曲/视频出现,如果没有这样大量的知识,机器是很难真的理解用户的意图的。那么,在词的语义表示这块,除了word embedding,还引入了基于知识的语义表示向量。
刚才提到了,用户说的话实际上是比较随意和自然的,那怎么样让这个模型有比较好的鲁棒性来解决口语的随意性问题呢?我们主要针对用户标注的数据,通过算法自动加一些噪音,加噪之后(当然前提是不改变语义),基于这样的数据再training模型,这样处理之后模型就会有比较好的鲁棒性了。
第二个模块是属性抽取,在这一块,我们把它抽象为一个序列标注问题。这个问题,神经网络也有比较成型的方法,我们现在也是用这种双向LSTM,在上面有一层CRF解码器,取得了不错的效果,但是这背后更大的功夫来自于对数据的分析和加工。
以上所述的人机对话语言理解最大的特色就是基于上下文的理解,什么是上下文?我们看一个例子,用户说:"北京天气怎么样?",回答说,北京的天气今天温度34度。接着用户说"上海呢?",在这里用户的潜台词是指上海的天气,所以要能够理解用户说的话需要根据上文意思来分析。针对这样的场景,我们再对问题做了一个抽象,在上下文的情况下,这句话和上文有关还是无关,把它抽象为二分的分类问题,做了抽象和简化以后,这个问题就有相对成型的解决方法了。
刚才介绍的是语言理解,下面我介绍下对话引擎。
对话引擎就是根据语言理解的这种结构化的语意表示以及对照到上下文,来决定采取什么样的动作。这个动作我们把它分成几类。
第一,用于语言生成的动作。
第二,服务动作。
第三,指导客户端做操作的动作。
再看一个简单的对话例子。用户说:"我要去杭州,帮我订一张火车票",这个时候机器首先要理解用户的意图是买火车票,之后就要查知识库,要买火车票依赖于时间和目的地,但是现在用户只说目的地没说时间,所以它就要发起一个询问时间的动作,机器问了时间之后,用户回答说"明天上午"。这个时候机器要理解用户说的明天上午正好是在回答刚才用户问的问题,这样匹配了之后,基本上这个机器就把这个最关键的信息都收集回来了:时间和目的地,之后,机器就可以发起另外一个请求服务指令,然后把火车票的list给出来。这个时候用户接着说:"我要第二个"。机器还要理解用户说的第二个,就是指的要打开第二个链接,之后用户说"我要购买",这个时候机器要发起一个指令去支付。
综上,对话交互,我会把它分成两个阶段:
第一阶段,通过多轮对话交互,把用户的需求表达完整,因为用户信息很多,不可能一次表达完整,所以要通过对话搜集完整。第一阶段得到结构化的信息,出发地、目的地、时间,有了这些信息之后,第二阶段,请求服务。接着用还要去做选择、确定、支付、购买等等后面的动作。
传统的人机对话,包括现在市面上常见的人机对话,一般都是只在做第一阶段的对话,第二阶段的对话做得不多。
在对话交互这块,阿里巴巴还是做了一些有特色的东西:
对话引擎之后,我们再看下我们的问答引擎和聊天引擎:
问答引擎:其实人和机器对话过程中,不仅仅是有task的对话还有问答和聊天,我们在问答引擎这块,目前还是着力于基于知识图谱的问答,因为基于知识图谱的问答能够比较精准地回答用户的问题。
聊天引擎:我们设计了两类聊天引擎。
对话交互平台的开发策略
刚才语言理解引擎、对话引擎、聊天引擎再加上语音识别合成,形成了完整的一套系统和平台,我们称之为自然交互平台。在这套平台上,一端是连接着各种各样的设备,另外一端是连接了各种各样的服务,这样用户和设备的交互就能够用比较自然的方式进行下去了。
值得一提的是,这样的自然交互平台在阿里巴巴已经有比较多的应用了。比如说在互联网汽车对话交互,我们和合作伙伴设计开发了汽车前装和汽车后装场景的对话交互。在功能上,比如说像地图、导航、路况,还有围绕着娱乐类的音乐、有声读物。
在汽车场景下的对话交互,还和其他场景有非常多的不同。因为产品方希望当这个车在郊区
- 机器学习算法盘点:人工神经网络、深度学习(07-02)
- 2016年人工智能与深度学习领域的十大收购(07-26)
- AI/机器学习/深度学习三者的区别是什么?(09-10)
- 深度学习的硬件架构解析(10-18)
- 麻省理工科技评论评选的14大医疗领域突破科技(上)(10-14)
- 探秘机器人是如何进行深度学习的(09-18)