Chatbot Simple Review

2019-06-27  本文已影响0人  Luuuuuua

闲聊作为人机对话的一个研究分支,近年来取得很大的进步。研究主要探索的是数据驱动(data driven)的端到端(end2end)的方法。

端到端会话模型(End-to-End Conversation Models)

最初的端到端会话模型主要是借鉴机器翻译方法。因为任务很契合,会话响应生成任务可以简要的描述为根据之前的对话轮T_{i-1},预测该轮响应T_i,机器翻译任务就是将“源语言”(T_{i-1})翻译成“目标语言”(T_i)。

直接使用机器翻译的方法来解决会话生成任务是有局限性的。机器翻译方法将对话数据表示为(查询,响应)对(one-to-one),这是不合理的,因为一个查询不只对应一个响应(one-to-many)。而且闲聊需要借鉴之前的对话信息。

研究者慢慢提出很多专门处理对话问题的模型。

LSTM 模型

典型的LSTM-based Seq2Seq to response generation方法可以在论文《A neural conversational model》和《A diversity-promoting objective function for neural conversation models》中找到:给定一个对话历史记录S=(s_1,s_2,...,s_{N_s})(S是由单词组成的句子),具有输入门i_k,记忆门f_k和输出门o_k的LSTM在时间步k,进行以下计算:

LSTM模型采用Softmax计算概率预测输出的每一个单词(T=(t_1,t_2,...,t_{N_t})):

HERD 模型

LSTM模型效果编码文本的效果很好,但是文本长度的上限是500(《Sharp nearby, fuzzy far away: How neural language models use context.》)。有时候对话历史文本长度更长,层次化模型(Hierarchical models)就可以捕获更长的文本的信息。其中一个方法就是HERD model(Hierarchical Recurrent Encoder-Decoder model)。首次应用于响应生成(response generation)是在论文《Building end-to-end dialogue systems using generative hierarchical neural network models》中。

HERD模型是包含两个RNN的双级别结构:一个在单词级别,另一个在对话轮数级别。这样模型不仅可以捕捉到当前轮的信息,也会考虑历史信息。

Attention模型

Attention-based model在机器翻译任务中能够取得很好的效果,但在响应生成任务中不会有很大的帮助,这是因为机器翻译中的注意力机制试图“对齐”翻译,而在对话中,查询和响应语义上可能丝毫没有联系。
但一些特殊的注意力机制在对话中会有一些作用如避免单词重复。具体可查看论文《Coherent dialogue with attention-based language models》、《Generating high quality and informative conversation responses with sequence-to-sequence models》等。

Pointer-Network 模型

一个典型的例子是CopyNet : 响应中的单词或者从输入中获得(Pointer Network),或者从一个固定词典中获得(Seq2Seq)。
具体可查看论文《Incorporating copying mechanism in sequence-to sequence learning》。

强化学习 Reinforcement Learning(RL Beyond Supervised Learning)

监督学习用于对话是有缺点的:很难有明确的优化目标比如通过减小无趣的回复最大化吸引力,倾向于优化一轮对话而不是多轮对话来提高长期吸引力。

因此,研究者尝试使用强化学习来解决问题。但是强化学习也面临一个问题:缺少定义成功的标准,即奖赏函数(reward function)。。

李纪为在论文《Deep reinforcement learning for dialogue generation》中首次尝试采用强化学习来生成对话。目标函数是最大化总的奖赏

在文中,李纪为采用了三个奖赏函数,分别是

挑战与应对

回答很无趣(Response Blandness)

seq2seq模型经常生成回应"i don't know"或"i;m OK"。李纪为的论文《A diversity-promoting objective function for neural conversation models》指出产生这种现象的原因在于目标函数,目标函数是最大化p(T|S)S是source 对话历史,T是目标回答。这样,模型就会很容易产生不符合上下文但是却有着很大概率的回答如"i don't know"。因此,作者将目标函数换为互信息\frac{p(T,S)}{p(T)p(S)}并在推理阶段使用。
具体来说,给定对话历史S,在推理阶段的目标是找到最优的T:

可以用一个超参数\lambda来控制惩罚无趣响应的程度:

weighted MMI目标函数可以说是对于p(T|S)p(S|T)的一种平衡,无论是给定T生成S,还是给定S生成T概率都会很高,就会在一定程度上抑制产生无趣回答的现象。

最近,GAN(Generative Adversarial Networks)生成对抗网络应用到响应生成任务中。GAN以minmax为目标函数,生成器和判别器协同工作,生成器生成响应,判别器判断响应是人类产生的还是生成器产生的,经过训练,生成器会努力产生让判别器判断为人类响应的回答。
可以参考一些论文《Adversarial learning for neural dialogue generation》、《Neural response generation via GAN with an approximate embedding layer》和《Generating informative and diverse conversational responses via adversarial information maximization》

论文《A hierarchical latent variable encoder-decoder model for generating dialogues》中提出的 Variable Hierarchical Recurrent Encoder-Decoder(VHRED)模型是HERD模型的扩展,它添加了一个高维的随机潜变量,该高维变量可以决定高水平的回应方面如话题、名字动词等,模型的其他部分就可以专注在低水平的生成方面如流畅度。最近的论文《Learning to control the specificity in neural response generation》同样也是添加了一个变量来使响应更加具体。

大多数的响应生成系统采用的模型都是生成式的(一个字一个字地产生句子),解决回答很无趣这个问题的另一种方法是结合检索式模型。已经有一些工作了,可查看《Conversational contextual cues: The case of personalization and history for response ranking》、《Learning to respond with deep neural networks for retrieval based human-computer conversation system》和《Neural utterance ranking model for conversational dialogue systems》

个性一致 Speaker Consistency

在同一个会话中,不同轮次甚至同一轮次,系统会出现个性不一致问题,比如问“你结婚了吗”,系统答“没有”。再问“你有几个小孩?”,系统答“3个”,但是单看每一轮对话都是合理的。李纪为认为产生这个现象的一个原因是训练数据本身 ,因为训练数据是多人的信息。他在论文《persona -based neural conversation model》中使用了speaker embedding,像word embedding一样,speaker embedding也有一个向量空间,相似(说话方式相似或喜欢谈论相同的话题等)的speaker距离会更近。在推理阶段,选中一个特定的speaker进行测试。

论文《Conversational contextual cues: The case of personalization and history for response ranking》中也利用了个性化信息。目标函数是一个多损失目标函数p(Response|Input,Author,Context)+p(Response|Author)p(R|A)附加损失对学习不同的speaker是很有用的。

论文《Multi-task learning for speaker role adaptation in neural conversation models》是对李纪为文章的一个扩展,模型不仅包括seq2seq模型还有一个autoencoder,模型进行多任务学习,seq2seq模型在对话语料上进行训练,autoencoder在非对话语料上进行训练,连接seq2seq和autoencoder的解码器能够生成特定个性的响应而不需要特定个性的对话语料。

单词重复 Word Repetitions

注意力机制能够较好的解决机器翻译中的单词重复问题,但是在对话系统中帮助较小。
论文《Generating high quality and informative conversation responses with sequence-to-sequence models》在解码器部分添加了自注意力机制,旨在改善更长和连贯响应的产生,同时顺便减轻单词重复问题。

有依据的对话模型 Grounded Conversation Models

到目前为止上边提到的问题,只是解决了一部分而已,需要更多的研究。但是,这些E2E系统面临的更大的挑战是响应的合理性问题。E2E系统缺少grounding。比如:问:明天天气怎么样?E2E系统很可能会回答“晴”、“雨”等,回答是毫无根据的。

论文《A knowledge-grounded neural conversation model》提出seq2seq模型很会产生合理的答案,但是当跟现实世界联系起来,要求生成一些名字或事实的时候,就会产生问题,就是因为缺少grounding

最近很多研究都关注设计grounded neural conversation network。

解决这个问题,提出的方法有确定系统的个性,有添加文本知识的、也有添加用户或者机器人的视觉环境的。无论是那种方法,它们在编码信息的时候都是不只编码对话历史,还添加来自用户环境的额外输入。

以论文《A knowledge-grounded neural conversation model》为例进行说明,模型有一个标准的seq2seq之外,还有一个facts encoder,将于对话有关的知识编码。

grounded conversation modeling的工作有两个优点:一是这类方法将E2E系统的输入分成两部分,一部分来自用户,一部分来自用户的环境。这样,同样的输入在不同的环境下就会产生不同的响应。二是世界知识是很多的,在响应中中可以产生训练语料中没有出现过的单词。

数据

评价

下边介绍的BLEU、MENTOR、ROUGE都是词重叠评价指标。
词重叠评价指标,他们认为有效地回答应该和真实回答之间存在大量的词重叠(但是对话系统的答案空间往往是发散的,也就是一个问题的答案可能是完全不同的两句话,这种情况下该评价指标效果不好),也就是说这是一个非常强的假设。(r表示真实响应,\hat r表示系统生成响应)

BLEU-N=b(r,\hat r)\exp(\sum_{n=1}^N\beta_n\log P_n(r,\hat r))

b(r,\hat r)=\begin{cases} 1 & if \ \hat r> r \\ e^{1-\hat r /r} & \,\ if\ \hat r \leq r \end{cases}

第一个公式p_n用于计算n-gram短语词组在整个数据集中的准确度,h(k,r)表示每个n-gram词组在真实响应中出现的次数。所以上式就是每个n-gram词组在真实和生成响应中出现次数的较小值求和除以n-gram词组在生成响应中出现的次数的和,表征了一种精确度度量。

第二个公式,考虑n的取值时(一般取1-4),\beta表示各个n-gram的权重,进行加权求和,b(r,\hat r)表示长度惩罚因子,当生成的句子太短时,就进行惩罚。

P=max_j\frac{c_i,s_{ij}}{|c_{ij}|}

ROUGE_L(c_i,s_i)=\frac{(1+\beta^2)RP}{R+\beta^2P}

比赛

参考资料
[1] https://zhuanlan.zhihu.com/p/33088748
[2] https://www.zhihu.com/question/58482430
[3] 《Neural Approaches to Conversational AI Question Answering, Task-Oriented Dialogues and Social Chatbots》

上一篇 下一篇

猜你喜欢

热点阅读