-->

AI内参_116_111_聊天机器人有哪些核心技术要点

你好,我是洪亮杰。

今天我和你分享的主题是聊天机器人有哪些核心技术?要点对话系统分为任务型和非任务型两种基本类型。

周一的分享里,我们讨论了任务型对话系统的一些技术。

要点重点介绍了任务型对话系统的各个组件及其背后的模型支撑。

今天我们就来看一看非任务型对话系统的主要技术要点,非任务型的对话系统有时候又会被称作是聊天机器人。

我们先来看基于信息检索的对话系统。

前面我们讲过对话系统特别是非任务型对话系统,也就是聊天机器人。

有一个很重要的功能,就是在一个知识库的基础上和用户进行对话。

这个知识库可以是海量的已经存在的人机对话,也可以是某种形式的知识信息。

比如一个关于篮球的聊天机器人,那就需要这个系统能够访问有关篮球球队、运动员、比赛、新闻,都有关篮球信息的知识库。

同时在这个对话系统运行了一段时间之后,我们就会慢慢积累很多有关篮球的对话。

这些对话就成为了系统。

针对当前输入进行反应的对础,针对当前的输入,利用之前已经有过的对话进行回馈。

这就是基于信息检索技术的对话系统的核心假设。

一种最基本的做法是找到和当前输入最相近的,也有对话中的某一个语句。

然后回复之前已经回复过的内容。

比如,当前的问话是迈克尔乔丹在职业生涯中一共得过多少分?如果在过去的对话中已经有人问过,迈科尔,乔丹为芝加哥公牛队一共多个多少分?那么我们就可以根据这两个画的词组上的相似性,返回已经回答过的答案来应对当前的输入。

当然上面这种对话系统可能会显得比较原始。

但是一旦我们把整个问题抽象成广义的搜索问题,其实就可以建立非常复杂的搜索系统,来对我们究竟需要恢复什么样的内容进行建模。

比如,我们可以把输入当做查询关键词,只不过从性质上来说,当前的输入语句往往要长于传统的查询关键词,但是在技术上依然可以使用各种搜索技术。

例如,通常的排序、学习等方法都适用于这样的场景。

从理论上来讲,基于检索的对话系统有很多先天的问题。

比如从根本上搜索系统,就是一个无状态的系统,特别是传统意义上的搜索系统,一般没有办法对上下文进行跟踪。

其实从整个流程上讲,这并不是真正意义上的对话,当然也就谈不上是智能系统。

那么,如何能够让让对话系统真正对状态进行管理,从而能够对上下文的信息进行回馈呢?最近一段时间以来,基于深度学习的对话系统逐渐成为了对话系统建模的主流。

就是因为这些模型都能够比较有效的对状态进行管理。

那么在那么多的深度对话系统中,首当其冲的一个经典模型就是序列到序列模型,简称s to s模型。

S to s模型认为从本质上对话系统是某种程度上的翻译问题。

也就是说,我们需要把回应输入的句子,这个问题看作是把某种语言的语句翻译成为目标语言语句的一个过程。

S to s模型也广泛应用在机器翻译的场景中。

具体来说,s to s把一串输入语句的字符通的来说,中间成为一个中间的状态,这其实就是一个编码的过程。

这个中间状态可以结合之前字句的中间状态,从而实现对上下文进行跟踪的目的。

这个部分其实就成为很多具体模型,各具特色的地方。

具的来说,中间状态需要随着对话的演变而产生变化。

然后我们需要一个解码的过程,把中间的状态转换成为机器输出的地句。

从整个流程上来说,s to s其实非常像我们已经介绍过的深度序列模型,例如RNN和LSTM.从实现上来说,很多s to s模型其实都是直接利用RNN或者LSTM而得以实现的。

因此,很多深度序列模型的技术都可以直接应用到对话系统中来。

另外我们可以看到,相比于基于信息检索的系统来说,s to s模型并没有一个显示的搜索过去信息的步骤。

因此可以更加灵活的处理语言上的多样性以及不是完全匹配的问题。

因此,从实际的效果中来看,s to s模型在对话系统中取得了不小的成功。

不过在实际的开发,中非任务型对话系统会有一系列的实际问题需要解决。

首先因为是开放性的对话系统,其实并没有一个标准来衡量这些聊天机器人式的系统。

他们的好坏究竟什么样的系统是一个好的聊天系统,依旧是一个非常具有争议的领域。

其次,人们在实际的应用中发现,基于深度学习的序列模型。

其次,常常能够给出比较人性化的语句回答。

但是很多回答都没有有过多的意义,更像是已经出现过的语句的深层次的翻译。

因此,在最近的一些系统中,人们又开始尝试把信息检索系统和s to s模型给结合起来使用。

最后,我们需要提出的又是非任务型对话系统和任务型对话系统,有时候常常需要混合使用,比如在一个订票系统中,可能也需要掺杂一般性的对话。

如何能够有效的进行两种系统的混合,肯定又是一种混的挑战。

今天我为你介绍了非任务型对话系统的基本技术要点,我们一起来回顾一下要点。

第一,我们讲了基于信息检索,也就是搜索技术的对话系统。

第二,我们聊了聊如何利用RNN或者是序列模型对对话系统进行建模,最后给你留一个思考题。

你觉得在什么样的条件下,非任务型聊天机器人可以展现出真正的人工智能呢?欢迎你给我留言,和我一起建论。