构建聊天机器人:检索seq2seqRLSeqGAN

Posted Young_Gy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建聊天机器人:检索seq2seqRLSeqGAN相关的知识,希望对你有一定的参考价值。

本文将简要介绍聊天机器人的四种构建方法:检索、seq2seq、Reinforcement Learning、seqGAN。

聊天机器人的现状

聊天机器人从应用领域分为:

  • 专业型
  • 通用型

从技术上分为:

  • 检索型
  • 生成型

目前聊天机器人在专业领域利用检索的效果较好,正朝着通用领域生成型发展。

检索

检索方法的数据库是很多对话的pair,其原理是将query编码成vector,然后在数据库中找最接近的query,然后将最接近的query的回答输出。注意点如下:

  • query的编码方式LSI:使用词袋模型或tf-idf对数据库中的query集进行编码得到矩阵 A ,行代表word,列代表document;对矩阵进行SVD分解得到A=USVT,其中 V 表示文档在特征空间的特征向量;当新的queryq来临时,对其做变换 S1UTq 得到特征空间的向量,然后用余弦相似性计算与数据库中qeury的相似度即可。这种方法的缺点是当新数据越多的时候误差越大,需要重新计算SVD,同时对于同义词、一词多义等语义特征难以把握。
  • query的编码方式RNN:可以采用两个RNN。第一个RNN对每句话进行编码到一个向量;第二个RNN对第一个RNN的输出继续编码成一个向量。
  • query的编码方式auto-encoder,设定encoder的单元数,encoder前面加embeding等,相当于特征压缩。
  • query编码好之后的问题就转变成了一个retrivel的问题,采用KNN即可,同时可采用KD-Tree、LSH优化检索速度。

seq2seq

seq2seq使用两个RNN,一个作为输入的encoder,一个作为输出的decoder。需要注意的大致包含以下几点:

  • encoder中可以包含上一句,也可以包含上上一句。如果包含多个句子,可以采用启发式的encoder,训练2 step的RNN。第一个RNN负责对每个句子进行建模,第二个RNN负责对第一层RNN的输出进行建模输出变量。
  • decoder每个step可以采用attention
  • train的时候loss为 C=Ct Ct=log(P(xt|x1,...,xt1)) ,最小化loss等价于最大似然 maxP(x|h) h 代表encoder的输入,x代表decoder的输出。

RL

为什么要用强化学习

seq2seq有一些缺点:

  • 只能计算前缀部分的概率(改进可用recursive neural network)
  • 使用最大似然估计模型参数

第一个缺点使seq2seq不容易理解文本,因为AI-requires being able to understand bigger things from knowing about small parts.

第二个缺点使seq2seq的对话不像真实的对话,只考虑当前对话最大似然忽略了对话对未来的影响,容易出现“I don’t know”(因为其概率最大,其他方向的相互抵消);对话重复(不考虑上下文的关系)等问题。

针对第二个缺点,我们了解到概率最高的输出不一定等于好的输出,好的对话需要考虑长久的信息。可以引入强化学习,人为设计相关的reward让机器更好地学习。

强化学习的架构设计

强化学习的本质是根据reward,使模型参数朝着reward增长最大的方向移动。
强化学习的聊天机器人架构设计如下:

其模型本质还是seq2seq,模型参数是 θ ,模型输入是 h ,输出是x,其与seq2seq不同的地方在于模型参数的更新方式:seq2seq按照cross entropy确定损失函数,然后最小化损失函数;DL最大化期望的reward。

期望reward的计算公式如下:

Rθ=hP(h)xPθ(x|h)R(h,x)=EhP(h),xPθ(x|h)[R(h,x)]=1NiR(hi,xi)

我们的优化目标是:

θ=argmaxθRθ

Policy Gradient

在上一节中,我们得到了目标函数与优化目标,这节中,我们考虑如何求目标函数的梯度 Rθ

上一节中得到 Rθ 的方式是通过采样,通过采样的方法自然无法计算梯度实现梯度的传递。解决的思路是:将 Rθ 转化成梯度的采样。具体实现如下:

Rθ=hP(h)xPθ(x|h)R(h,x)=EhP(h),xPθ(x|h)[R(h,x)]=1N以上是关于构建聊天机器人:检索seq2seqRLSeqGAN的主要内容,如果未能解决你的问题,请参考以下文章

markdown 基于检索式聊天机器人设计

综述 | 检索式聊天机器人技术

Slack 聊天机器人连接到 Bubble 数据库

论文泛读174基于相关知识和目标的主动检索式聊天机器人

论文泛读174基于相关知识和目标的主动检索式聊天机器人

聊天机器人