前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【NLP-ChatBot】能闲聊的端到端生成型聊天机器人背后都有哪些技术?

【NLP-ChatBot】能闲聊的端到端生成型聊天机器人背后都有哪些技术?

作者头像
用户1508658
发布2019-11-01 15:13:31
1.8K0
发布2019-11-01 15:13:31
举报
文章被收录于专栏:有三AI有三AI

我们之前介绍过,按照应用场景的不同,聊天机器人可以分为问答系统,对话系统以及闲聊机器人三类。今天我们就来详细讲一讲其中的生成型闲聊机器人。

作者&编辑 | 小Dream哥

1 什么是生成式聊天机器人

我们前面介绍的QA,会事先存在一个对话库,聊天系统接收到用户输入句子后,通过在对话库中以搜索匹配的方式,选择合适的回答返回给用户;对话系统,则是通过NLU和对话管理模块,驱动自然语言生成模块,返回相应的话术给用户。

总的来说,前面两种聊天系统通常面对的是一个封闭的场景,而生成式通常面对的是开放场景。因而很难像前面两种机器人那样,先把答案集设置好,再通过对话管理或者检索等模块选到合适的答案返回给用户。

生成式聊天机器人需采取不同的技术思路,在接收到用户输入句子后,采用一定技术手段自动生成一句话作为回答,生成式聊天机器人的好处是可以覆盖任意话题的用户问句,缺点是生成的回答质量很可能会存在问题,比如可能存在语句不通顺存在句法错误等看上去比较低级的错误。

2 seq2seq框架

基于深度学习的聊天机器人技术,总体而言,绝大多数都是基于Encoder-Decoder(或者称作是Sequence to Sequence)框架,这个框架是非常简单而且可扩展的。

该框架可以看作是一种文本处理领域的研究模式,应用场景非常的广泛,不仅仅可以用在聊天机器人领域,还可以应用在机器翻译、文本摘要、句法分析等各种场合。下图是文本处理领域里常用的Encoder-Decoder框架一种抽象表示:

具体到我们聊天机器人的情况,非常简单的系统生成答案的过程由如下两步构成:

1.Encoder对用户输入querry进行编码,生成语义编码c;

2.Decoder对语义编码c进行解码,得到答案Response返回给用户。

3 Attention机制的引入

因为RNN模型对于自然语言这种线性序列来说是最常用的深度学习模型,因而在实际实现聊天系统中,一般Encoder和Decoder都采用RNN系列的模型,其中最常用的是LSTM以及GRU模型,对于长序列的情形,LSTM和GRU模型效果会明显优于传统RNN模型。尽管如此,当句子长度超过30以后,LSTM模型的效果会急剧下降。

基于此,seq2seq框架中开始引入attention机制,用来实现输出Y和输入X句子单词之间的对齐,能够明显提升系统对于长序列的处理能力。

如上图所示,展示了attention机制实现的细节,其实现共分为如下的几步:

1.Encoder编码输入序列,得到对应的表征h =[h1,h2,...,hT]=A(X1,X2,...,XT)

2.解码器输出目标yt之前,会结合将上一步的隐藏状态St-1和Encoder编码得到的表征[h1,h2,...,hT]进行运算,得到一个向量e=[e_t_1, e_t_2,..., e_t_T],它表征的是在当前的解码时刻,h1,h2,...,hT这T个隐藏状态分别应该输入到解码器的权重。e = G(St-1, h)

3.将向量e进行归一化,得到向量a,即a=[a_t_1, a_t_2,..., a_t_T] = softmax(e)

4.加权求和,获得t解码时刻的语义编码,Ct = a_t_1*h1+a_t_2*h2+...+a_t_T*hT

5.进行t时刻的解码,St = F(St-1, Ct )

总结以下上面的步骤,attention机制其实就是在解码的时候,根据当前的解码状态(上一时刻的解码隐藏状态St-1)来获得当前时刻的语义编码向量Ct。这样,在当前的解码时刻就能够取到当前所需要的语义编码,提高系统的解码能力。

4 多轮会话的探索

基于上述seq2seq框架,聊天机器人可以根据用户当前输入,自动生成回答,形成了一个有效的对话系统。但是一般人们聊天并不是单纯的一问一答,在回答对方的时候,到底说什么,常常要参考上下文。所谓对话上下文,就是在用户当前输入问句Querry之前两者的对话信息。因为存在多轮的一问一答,这种情形一般称为多轮会话。在多轮会话中,一般将上下文称作Context,当前输入称为Querry,回答用Response表示。

深度学习解决多轮会话的关键是如何将上下文聊天信息Context引入到Encoder-Decoder模型中去的问题。一般来说,上下文聊天信息Context都是加入到Encoder中,因为这是除了当前输入Querry外的额外信息。增加编码信息,有助于Decoder生成更好的Response内容。

目前大部分的方案都是这样的思路,区别在于如何将Context信息在Encoder端建立模型或者说具体的融入模型的方式。

下面介绍一个典型的例子,让读者理解这种方式。

如上图所示,是一种层级神经网络(Hierarchical Neural Network,简称HNN)。HNN本质上也是Encoder-Decoder框架,主要区别在于Encoder采用了二级结构。其编码过程由如下几个步骤组成:

1.用“句子RNN(Sentence RNN)”对每个单词进行编码形成每个句子的中间表示;

2.第二级的RNN则将第一级句子RNN的中间表示结果按照上下文中句子出现先后顺序序列进行编码,这级RNN模型可被称作“上下文RNN(Context RNN)”,其尾节点处隐层节点状态信息就是所有上下文Context以及当前输入Querry的语义编码;

3.根据S1,S2,S3,M以及当前输入Querry的语义编码解码出当前的输出,得到response。

总的来说,目前多轮对话的优化都是基于如何在Encoder端编码进更多的Context信息。

关于多轮对话,如需更多学习,可参考如下的文献:

[1] Oriol Vinyals and Quoc Le. 2015. A neural conversational model. In Proc. of ICML Deep Learning Workshop.

[2] Alessandro Sordoni, Michel Galley,Michael Auli, ChrisBrockett, Yangfeng Ji, Meg Mitchell, Jian-Yun Nie,JianfengGao, and Bill Dolan. 2015. A neural network approach to context-sensitivegeneration of conversational responses. In Proc. of NAACL-HLT.

[3] Iulian V Serban, Alessandro Sordoni,Yoshua Bengio,Aaron Courville, and Joelle Pineau. 2015. Building end-to-enddialogue systems using generative hierarchical neural network models. In Proc.of AAAI.

总结

生成式的聊天机器人技术框架非常简洁,在构建过程是端到端(End-to-End)的,数据驱动的,只要给定训练数据即可训练出效果还不错的聊天系统,省去了很多特征抽取以及各种复杂中间步骤的处理,比如省去句法分析与语义分析等传统NLP绕不开的工作,使得系统开发效率大幅提高;同时,增加训练数据也能持续提升系统效果。

但目前该技术仍处于发展初期。不管是技术手段也好,亦或是实际系统效果也好,都有非常大的进步空间。

我们在知识星球实现了一个完整的生成式聊天机器人,感兴趣的同学可以扫描下面的二维码了解。

读者们可以留言,或者加入我们的NLP群进行讨论。感兴趣的同学可以微信搜索jen104,备注"加入有三AI NLP群"

下期预告:ALBERT模型详细讲解

知识星球推荐

扫描上面的二维码,就可以加入我们的星球,助你成长为一名合格的自然语言处理算法工程师。

知识星球主要有以下内容:

(1) 聊天机器人。考虑到聊天机器人是一个非常复杂的NLP应用场景,几乎涵盖了所有的NLP任务及应用。所以小Dream哥计划以聊天机器人作为切入点,通过介绍聊天机器人的原理和实践,逐步系统的更新到大部分NLP的知识,会包括语义匹配,文本分类,意图识别,语义匹配命名实体识别、对话管理以及分词等。

(2) 知识图谱。知识图谱对于NLP各项任务效果好坏的重要性,就好比基础知识对于一个学生成绩好坏的重要性。他是NLP最重要的基础设施,目前各大公司都在着力打造知识图谱,作为一个NLP工程师,必须要熟悉和了解他。

(3) NLP预训练模型。基于海量数据,进行超大规模网络的无监督预训练。具体的任务再通过少量的样本进行Fine-Tune。这样模式是目前NLP领域最火热的模式,很有可能引领NLP进入一个全新发展高度。你怎么不深入的了解?

转载文章请后台联系

侵权必究

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 有三AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档