对话系统介绍和基础神经网络模型

1、对话系统背景介绍

对话系统(或聊天机器人)在世界上扮演着越来越重要的角色。人们可能仍然有一种刻板印象,认为聊天机器人是给银行打电话时那些死板的代理。然而,得益于人工智能的复兴,尤其是深度学习的发展,现代聊天机器人可以与丰富的话题进行对话,从你的生日派对到拜登的演讲,如果你愿意,它们可以为你的派对场所预定位置或播放演讲视频。目前,对话系统是NLP的热点话题之一,在工业和日常生活中有很高的要求。聊天机器人的市场规划预计将从2021年的26亿美元增长到2024年的94亿美元,预计到2022年底,80%的企业将配备聊天机器人,实现业务自动化。

对话系统通过与人类对话或者闲聊充当助手。按照应用的不同,对话系统通常可以分为两类:面向任务的对话系统和开放域对话系统。面向任务的对话系统用于解决特定领域的中的特定问题,如电影票预约、餐厅餐桌预定等。开放域对话系统不关注任务完成,而是旨在与没有任务和领域限制的用户聊天,这通常是完全数据驱动的。无论面向任务的对话系统还是开放域对话系统,都可以看作从用户表示内容U=\{u_1,u_2,...,u_i\}到代理回应R=\{r_1,r_2,...,r_j\}的一组映射关系\phi;记作R=\phi (U)。其中u_i,r_j分别表示用户和代理对话内容的标记序列。在许多对话系统中还考虑了外部知识库K作为额外的输入条件来丰富回复结果;最终表示为R=\phi (U,K)。图1分别给出了面向任务的对话系统和开放域对话系统的对话案例:

对话系统介绍和基础神经网络模型_第1张图片

图1:面向任务对话系统和开放域对话系统题

传统的面向任务的对话系统以管道方式组织,主要由4个功能模块组成:自然语言理解、对话状态追踪、策略学习和自然语言生成。许多最新的研究工作设计了端到端的面向任务的对话系统以取得比管道方式更好的优化效果。开放域对话系统通常被分为3类:生成式对话系统、检索式对话系统和集成对话系统。生成式对话系统应用端到端的模型,将用户的消息和对话历史映射为一个可能不会出现在训练语料库中的响应序列。相比之下,基于检索的系统试图从特定的响应集中选择一个预先存在的响应。集成对话系统结合了生成式和检索式的方法:将检索到的响应与生成的响应进行比较,从中选择最佳的响应。生成式对话系统可以产生灵活和对话上下文相关的反应,但有时他们缺乏连贯性;往往会做出枯燥的反应。检索式对话系统从构造的响应集中进行选择,因此能够在表层语言中获得更好的一致性。然而,检索式对话系统受到响应集有限性的限制,有时检索到的响应与对话上下文的相关性较弱。

传统的对话系统大多是基于规则和基于非神经机器学习的系统。基于规则的系统易于实现,可以自然地做出响应,这促成了它们在早期行业产品中的流行。然而,这些系统的对话流程是预先确定的,这使得对话系统的应用保持在内部特定的场景。基于非神经机器学习的系统通常通过模板填充来管理某些任务。与基于规则的系统相比,这些系统更灵活,因为对话流不是预先确定的。然而,由于模板固定,在应用场景和响应多样性方面受到限制。由于深度学习的快速发展提升了对话系统的性能,因此;大多数最先进的对话系统都是基于深度学习的系统(神经网络)。我们将在第2章讨论各种流行的深度学习框架:

2、对话系统相关的神经网络模型

在本节中,我们将介绍对话系统中流行的神经网络模型。从模型角度为读者提供一幅深度学习方法展览图。这将有助于读者熟悉这些模型并了解它们在对话系统中的应用,这在设计新的对话系统时是相当有帮助的。讨论的模型包括:卷积神经网络(CNN)、循环神经网络(RNN)、端到端序列模型(Seq2Seq),分层循环编码器-解码器模型(HRED)、注意力网络、Transformer。

2.1、卷积神经网络

深度神经网络已经被认为是最强大的模型之一。“深度”指的是它们是多层的,通过叠加前馈网络层来提取特征。前馈网络层可以定义为:y=\sigma(Wx+b),其中\sigma是一个激活函数;Wb为可训练的参数。由于激活函数的作用,前馈网络层是强大的,这使得原本线性化的操作变成非线性。然而,在使用前馈网络层时存在一些问题。首先,前馈网络层或多层神经网络的操作只是模板匹配,没有考虑数据的具体结构;此外,传统的多层神经网络的全连接机制导致了参数数量的爆炸,从而导致泛化性较低问题。CNN的发明在一定程度上缓解了上述问题。

CNN(图2-1)通常由卷积层、池化层、前馈网络层组成。卷积层应用卷积核来执行卷积运算:

G(m,n)=(f*h)(m,n)=\sum_j\sum_ih(j,k)f(m-j,n-k)

对话系统介绍和基础神经网络模型_第2张图片 图2-1:CNN特征提取过程

其中m和n分别是经过卷积层卷积计算后矩阵的行和列的下标。fh分别表示输入矩阵和卷积核。池化层对卷积层的结果进行下采样,从而获得更高层次的特征,前馈网络层将它们映射成概率分布来预测类分数。滑动窗口特性使卷积层能够捕捉局部特征,池化层可以产生高层次的特征。这两种机制赋予了CNN局部感知和全局感知能力,有助于捕捉数据的某些特定内部结构。而参数共享机制减少了可训练参数,降低了模型复杂度,提高了泛化能力,从而缓解了参数爆炸和过拟合问题。

CNN是很好的文本特征提取器,但并不是理想的序列编码器。主流的方式往往选择在对文本信息进行编码后使用CNN作为层次特征提取器,而不是直接作为编码器。这是由于CNN的输入长度固定,卷积跨度有限。一般来说,在对话系统中,CNN用于处理编码信息主要有两种情况。第一种情况直接利用CNN作为编码器来抽取文本特征;另一种情况是在响应检索任务中提取特征图。在基于检索的对话系统中,使用单独的编码器对对话上下文和候选响应进行编码,然后把CNN作为从编码的对话上下文和候选响应中计算出的相似度矩阵的提取器。

目前主要工作不选择CNN作为对话编码器的主要原因是,它们未能连续而灵活地提取跨时序步骤的信息。

2.2、循环神经网络和序列到序列模型

包括对话相关任务在内的NLP任务试图处理和分析时序序列结构信息。尽管标准神经网络和CNN都是强大的学习模型,但它们有两个主要的局限性。其一,它们假设数据点之间是相互独立的。虽然数据点是独立产生是合理的,但在处理相关联的数据点(例如,文本、音频)时,可能会遗漏重要信息。此外,它们的输入通常是固定长度的,这在处理长度可变的序列数据时是一个限制。因此,需要一种能够表示序列信息流的序列模型。隐马尔可夫模型是传统的时序模型,但由于推理算法的时间复杂性以及转移矩阵的大小随着离散状态空间的增大而显著增长,因此在实际应用中,它们并不适用于处理涉及较大隐状态的问题。而且,马尔可夫模型的隐状态只受直接隐状态的影响,这进一步限制了模型的推理能力。

RNN模型的提出在很大程度上解决了上述问题,并且一些模型的变体在对话相关的NLP任务中取得了令人满意的性能。

2.2.1、循环神经网络

循环神经网络如图2-2所示:x_t,h_t,y_t分别是时间步t的输入、隐状态和输出;W_h,W_y,U_h是权重参数。隐状态的每次更新由上一时间步的隐状态和当前的输入决定,而每次输出由当前隐状态决定。因此,时间步t的隐状态和输出可以计算为:

对话系统介绍和基础神经网络模型_第3张图片 图2-2:循环神经网络题

h_t=\sigma_h(W_hx_t+U_hh_{t-1}+b_h)\qquad\\y_t=\sigma_y(W_yh_t+b_y)\qquad 

其中b_h,b_y,\sigma_h,\sigma_y分别为偏置项和激活函数。

简单的循环神经网络可以从理论上模拟长期依赖关系。但在实际训练中,长期依赖很难学习。当在时间步之间反向传播误差时,简单的循环神经网络会遭受梯度消失或者梯度爆炸的风险。针对这些问题,人们提出了一些解决方案,即传统循环神经网络的一些变体。

        

你可能感兴趣的:(自然语言处理,人工智能,自然语言处理,深度学习)