600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 深入浅出对话系统——概述

深入浅出对话系统——概述

时间:2020-10-18 16:02:13

相关推荐

深入浅出对话系统——概述

对话系统分类

按应用领域分类

任务导向对话系统闲聊对话系统

按回复生成方式分类

检索式对话系统生成式对话系统检索式+生成式对话系统

任务导向对话系统

任务导向对话系统一般流程如上。

因为像Siri和小度这种应用比较多,它们都接收语音信号。但我们主要关注的是排除了语音识别和语音合成之外的其他部分。

以订票为例,我们需要收集的信息有出发地、到达地和出发时间。对话系统需要从用户那里收集到这些信息,才能说通过调用订票系统接口进行订票。

这些需要的信息,我们称为对话状态(Dialogue state)。因为涉及到状态的转化,我们很难通过用户的一句话就收集到所有信息,通常需要多轮对话。

比如用户说“帮我订一张去北京的机票”,我们只能获取到到达地信息,我们需用向用户提问来获取其他信息。

有了对话状态,我们可以引入槽位(slot)槽值(value)的概念。

比如这里槽位有出发地到达地出发时间。现在我们只有到达地的(槽)值。

整个任务导向对话系统的流程就是试图维护这样一个对话状态,即希望能从用户那里获取槽位对应的值。

其中需要用到自然语言理解把用户的输入理解成结构化的语义表示。比如从用户的第一句话中,能理解到领域(类别)是机票;意图(类别)是订机票;语义槽有到达地的值。

然后通过对话管理来更新状态并获取缺失的状态。

通过对话策略选择回复引导用户提供更多的信息。对话策略会输出一个结果到下一个模块,这个结果称为对话动作(Dialogue action)。然后通过自然语言生成模块来生成回复文本,不过一般是选择预先设定好的回复模板。

这里假设想询问出发时间,选择“请问您什么时间出发”。然后继续整个过程,直到收集到所有的槽值。

闲聊对话系统

检索对话系统就是基于问题库,去匹配最相似的问题;

而生成式对话系统一般通过编码器和解码器来实现。

我们主要来学习任务型对话系统。

下面我们回顾一下实现对话系统所需要的基础技术。

首先我们看一下在深度学习兴起之前,我们一般会遵循的流程。

NLP Pipeline

在NLP端到端深度学习技术兴起之前,拿到原始文本后,我们需要按照上面的步骤进行处理,最后基于统计模型进行建模。

值得一提的是,上面的标准化一般用于英文,比如将单词的过去式、将来式等提取成一个能表示该单词的部分。

NN

神经网络由线性运算和非线性激活函数组成。

注意,这里并不会对基础网络做过多介绍,如果想深入了解,推荐从零实现深度学习框架。

Word2Vec

Word2Vec的出现解决了向量化的问题,因为我们无法直接把一个句子向量化,但是我们可以得到其中每个词语的单词向量,然后就可以得到句子的向量,最终应用到不同的NLP任务。

TextCNN

有了词向量后,我们也可以应用图像领域中的卷积神经网络。

我们可以对一定窗口内的单词向量进行卷积操作,最终得到整个句子的压缩表示,用于后续NLP任务。

RNN

如果把文本看成是由单词所组成的序列,那么我们就可以应用循环神经网络。

简单循环神经网络试图维护一个状态,用户保存过去有用的历史信息同时剔除对未来无用的信息。

这种网络结构非常适合于处理我们的文本。

由于仅使用一个状态来做这件事情有点困难,后来就出现了LSTM通过多个状态和一些门控来简化这个操作。

Seq2seq

Seq2seq模型解决了从一个序列映射到另一个序列的问题,常见的应用由机器翻译、文本生成、摘要生成等。

具体来说由编码器和解码器组成,编码器接受输入序列,解码器根据编码器得到的编码生成输出序列。

Attention

Seq2seq模型由一个问题,不管多长的序列它都编码成定长的向量,这样总会有一些信息丢失。而注意力(Attention)机制的提出,可以让我们在解码的过程中,有机会注意到输入序列中的每个单词。比如翻译“I”的时候应该需要看到“我”。

Transformer

由于之前的Seq2seq一般是基于RNN实现的,它的缺点是计算缓慢,无法并行加速。

Transformer提出,我们只需要注意力机制就够了。

经过Transformer模块,可以把输入表征序列转换为更强大的另一种输出表征序列。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。