六、NLP聊天机器人原理(seq2seq模型)

一、seq2seq模型

1.概念

  • seq2seq是一个Encoder-Decoder结构的网络,它的输入是一个序列,输出也是一个序列。
  • Encoder中将一个可变长度的信号序列变为固定长度的向量表达,Decoder将这个固定长度的向量变成可变长度的目标的信号序列。
  • 这个结构最重要的地方在于输入序列和输出序列的长度是可变的。
  • 可以用于翻译,聊天机器人、句法分析、文本摘要等。

2.encoder过程

encoder过程实际上就是编码的过程。看这张图,输入的how are you 三个英文单词,通过这个三个权重输入到LSTM。LSTM就是扮演一个在传统神经网络中隐藏层的部分,处理完了之后再输出,但是输出的是e。在从左到右翻译的过程中,第一个是上一个时间的输出,当前的输入,LSTM这里面还有上一个时刻的状态位,也是输入进去了,经过他的翻译,最后输出到这里。这个encoder过程,实际上是一个编码的过程,就是将一个文本序列进行一个编码。

(1)取得输入的文本,进行embedding,生成向量

(2)传入到LSTM中进行训练

(3)记录状态,并输出当前cell的结果

(4)依次循环,得到最终结果

3.decoder过程

(1)在encoder最后一个时间步长的隐藏层之后输入到decoder的第一个cell里

(2)通过激活函数softmax得到候选的文本

(3)筛选出可能性最大的文本作为下一个时间步长的输入

(4)依次循环,得到目标

4.seq2seq模型

这个图就是编码器和解码器的结构图。编码器和解码器分别对应着输入序列和输出序列的两个循环神经网络,是两个RNN。一般来讲,我们用seq2seq模型的时候,通常在输出序列和输入序列的头部和尾部一般会加一个go和一个eos,来表示开始和结束,但这个表达只是一个文本形式,或者说是在一般做模型形式上的一个表达。这个编码器的作用是什么,就是把一个不定长度输入序列转化成一个定量的背景向量。这个背景向量就包含了输入序列的信息,我们常用的编码器,就可以是一个循环神针网络,循环神针网络在做这个文本处理或者nlp领域中是一个非常常用的编码器结构。我们看这里面,假设这个编码器的输入就是这个x1,x2...xt,它会经过一定的变换之后变换成一个隐藏的变量,在经过这一点c进入c然后解码器通过这个c来获取编码器的内容,也就是x1,x2...xt,这些内容编码之后,会放到c里面。解码器从c里面去读所要的这个信息,再去获取编码器的内容,然后变成y1,y2...yt。那么在seq2seq模型中,解码器一般是通过c这个向量拿到编码器的信息,然后再通过RNN进行传递,然后再输出。

二、注意力机制

这张图是这个这张图是这个seq2seq的一个翻译的例子,a,b,c是输入,w,x,y,z是输出,那么在这个模型中,使用了seq2seq的方法,通过预测字符序列,最后得到了这个结果。实际上,每一个里面我们可以看做是一个RNN,或者说一个LSTM。那么,在LSTM中,每一个单元获取到的是上一个单元的输出以及输入,以及加上上一个单元传过来的状态的信息。经过一层一层的预测,最后得到了一个w,x,y,z的结果。这个结构就是利用这种方式进行这个编码和解码的。刚刚我说的是预测,那换一种说法来说,就是把他作为一个编码器进行编码,还把后面这一块作为一个解码器进行解码。

这个sseq2seq模型还有一个缺点。我们还是来看这张图,比如说我们要去预测w,w他只能去拿上一个点的输出,以及当前点的输入,进行预测,那么这就会产生一个问题,如果说我们需要w,可能需要a点的信息或者b点的信息,那么他是拿不到的,那为了弥补这个缺点,可以引入一个注意力模型

(1)注意力机制是在序列到序列模型中用于注意编码器状态的最常用方法,它同时还可用于回顾序列模型的过去状态。

(2)注意力机制不仅能用来处理编码器或前面的隐藏层,它同样还能用来获得其他特征的分布,例如阅读理解任务中作为文本的词向量。

2.为什么需要注意力机制

(1)减小处理高维输入数据的计算负担,通过结构化的选取输入的子集,降低数据维度。

(2)让任务处理系统更专注于找到输入数据中显著的与当前输出相关的有用信息,从而提高输出的质量。

(3)Attention模型的最终目的是帮助类似编解码器这样的框架,更好的学到多种内容模态之间的相互关系,从而更好的表示这些信息,客服其无法解释从而很难设计的缺陷。

三、seq2seq与注意力机制

     

首先第一步还是Encoder进行编码,把知识就是力量一直从e0到6然后最后加一个结束补位。补到这个6的编码,编码之后我们用注意力机制进行翻译,我们可以看到,在这个翻译的过程中,我们不仅把这个知识拿过来,还会把后面其他的相关的一些信息都放进来。

用注意力机制的话,他会紧密的去联系前后相关的信息。通过这个前后相关的信息,再来进行相关的操作,得到最后想要的这么一个结果。

来看这两个图,第一个图是使用seq2seq模型来进行操作。第二个是使用注意力机制进行操作,这两个图的区别在于如果用普通的seq2seq模型,他是先把所有的词加到encoder里面之后。在统一的进行decoder,那这样的话一个缺点就是只能通过这种序列化的形式去找前一个,或者说当前和前一个,他们两个相关的一个内容进行一个翻译。那么,针对于较长的文本的话,翻译起来肯定是不是特别准的。肯定会有一定的误差,那么我们使用这个注意力机制呢?它的优点就在于,每一个翻译,他都会去寻找这个前后各种各样的这个文本信息,他都会拿进来。也是说,当对一个文本的一块进行做翻译的时候,会把所有的注意力都集中在这一个单元里,从而使翻译的准确率更高,实际上,我们使用这个注意力机制,或者说attation机制,它的优点也就在于此

接下来我们看这两张图,这两张图也是一个是使用这个注意力机制,一个是没有使用注意力机制,在做这个编解码的过程中的一些差别。我们可以看到,如果使用注意力机制,在每一个序列中,它都有一个相应的这个状态位。我们根据这个相应的状态位可以把注意力集中到一起,进行翻译,编码之后,得到相应的结果。如果说没有使用这种注意力机制,他就会把所有的这个输入序列前的输入进来,之后最后再统一再做这个decoder。这样的话,那就会使得我们最后的结果准确度没有这么高。

四、聊天机器人根据对话的产生方式

1.基于检索的模型

  • 有明确的问答对数据库
  • 使用语句匹配的形式查找答案
  • 答案相对固定,且很少出现语法错误
  • 不会出现新的语句

2.生成式模型

 

  • 不依赖预先设定的问答库;
  • 通常基于机器翻译技术
  • 需要大量的语料进行训练
  • Encoder-Decoder模式;
  • 机器翻译;
  • 输入的是问题,翻译的是回答;

 这个图也是一个基于生制模型的一个案例。这就是一个对话的案例,他的输入是不好意思,刚有事好,回答是,亲。没事的

首先,他把这个。不好意思,刚刚有事 这几个字输入进来,然后当做输出的时候,是利用注意力模型,我可以看到。他把之前的一些的信息都收集过来。也就说在做这个这个词的时候,就是用到了之前的这些信息,没事的也是用到了之前的这些信息,通过这个信息的一个处理,或者用seq2seq加上attention机制的处理。最后告诉你,没事的。这个实际上也是用这个生成式模型来做的。

但是刚刚也说了基于生成式模型,他有一个最大的缺点是目前大家训练的要求非常高,对数据的要求也高,对这个训练的这个硬件或者对训练的轮次时间。要求也高,而且呢,目前来讲这个效果还并不是特别好。那如果使用传统的检索模型也有一个缺点,就是说,只能在特定的这个数据集中进行去查找。我不能告诉跳出我们这个特定的问答句之外,那么这也是一个麻烦的事。

3.混合模式

  1. 兼具检索模式和生成模式;
  2. 目前最常用的解决方案
  3. 检索模式产生候选数据集
  4. 生成模式产生最终答案

虽然这这个图中左面这一个部分,我们实验就是用了这个检索模式。而右面这个部分,那实际上就是用了一个生成模式,我们把它两个结合是如何来去做的呢。比如说让我们输入了一个句子,输入了一个早上好,或者说输入了一个你叫什么名字。他首先就会在这个知识库里,这个数据库里搜索有没有这个问题,如果有这个问题,搜索到了,他可能会有好多种答案。那他再把这个被选的可能性的这些答案全都列出来。全都列出来之后呢,就生成了一个候选的答案。然后,再送到这个生成模型中,那生成模型中,再根据这个候选的这个答案进行seq2seq模型的匹配和可能性的判断。经过这个匹配和这个判断,得出一个分数,如果说当这个分数大于一定的分值的话,大于0.5或者大于0.6。那么,我们认为这个回答可能是用户想要的,再把它进行输出。如果说不是的话,那么我们再去做回答的匹配。这就混合模式,它的优势在于前期的处理量可能会小得多,因为他使用这种检索模式,已经帮我们过滤出一大部分这种数据集了。而我们只需要通过这个生成模式在这个检索模式得到的这个数据及的结果的前提下。来找到一个最可能想要这种的一个答案,最后进行输出。所以说一般来讲,在做这种聊天机器人的时候,一般都是使用这种混合的模式进行那种输出和这种开发。 

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
聊天机器人是一种能够模仿人类对话进行交互的智能程序。其中,基于seq2seq(Sequence-to-Sequence)模型的注意力机制是一种常见的实现方法。 Seq2seq模型是一类用于自然语言处理深度学习模型,可以将一个序列映射到另一个序列。在聊天机器人中,输入序列通常是用户的问题,输出序列则是机器人的回答。 注意力机制是一种加强模型对不同部分的关注的方法,它可以使模型更加准确地预测输出序列。在聊天机器人中,注意力机制可以使机器人更好地理解用户的问题,并回答相关的问题。 下面是一个基于seq2seq注意力模型聊天机器人实现步骤: 1. 数据预处理:首先需要收集和清洗聊天数据,并将其转换为模型可以处理的格式。这通常包括分词、去除停用词和标点符号等操作。 2. 建立模型:使用TensorFlow或PyTorch等深度学习框架建立Seq2seq模型,并添加注意力机制。 3. 训练模型:使用预处理的数据进行模型训练,并选择合适的损失函数和优化器。 4. 测试模型:使用测试数据对模型进行测试,计算模型的准确率、召回率和F1值等指标。 5. 部署模型:将训练好的模型部署到服务器上,通过API接口提供服务。 需要注意的是,聊天机器人的质量很大程度上取决于数据的质量和数量。因此,需要收集足够的高质量聊天数据,并尽可能地覆盖不同的场景和主题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值