Chatbot Simple Review

闲聊作为人机对话的一个研究分支,近年来取得很大的进步。研究主要探索的是数据驱动(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》中首次尝试采用强化学习来生成对话。目标函数是最大化总的奖赏

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

  • -p(Dull Response|T_i) esay of answering reward 首先建立了无聊回复的集合比如“i don't know”,当生成无聊回复时,就对模型进行惩罚。
  • -\log Sigmoid \cos(T_{i-1},T_i) information flow reward 使每一轮的回答不那么相同,鼓励模型产生新的回答。
  • \log p(T_{i-1}|T_i)+\log p(T_i|T_{i-1}) meaningfulness reward 在鼓励模型开启新话题的同时,保持整个对话的连贯性,不那么跳跃。

挑战与应对

回答很无趣(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系统的输入分成两部分,一部分来自用户,一部分来自用户的环境。这样,同样的输入在不同的环境下就会产生不同的响应。二是世界知识是很多的,在响应中中可以产生训练语料中没有出现过的单词。

数据

  • Twitter 《End-to-end conversation modeling track in DSTC6》中DSTC Task 2的数据基础
  • Reddit 社交娱乐网站,论文《Conversational contextual cues: The case of personalization and history for response ranking》中用到
  • OpenSubtitles 含有8billion单词,多种语言《Parallel data, tools and interfaces in OPUS》
  • Ubuntu less focused on chitchat but more goal-oriented 《The Ubuntu Dialogue Corpus: A large dataset for research in unstructured multi-turn dialogue systems》
  • Persona-Chat dataset 《Personalizing dialogue agents: I have a dog, do you have pets too?》

评价

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

  • BLEU
    BLEU是机器翻译的评价指标,其统计生成响应和真实响应中的n-gram词组在整个训练语料中出现的次数。
    p_n(r,\hat r)=\frac{\sum_k min(h(k,r),h(k,\hat r))}{\sum_k h(k,r_i)}

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)表示长度惩罚因子,当生成的句子太短时,就进行惩罚。

  • ROUGE
    该指标用于文本摘要领域,包含ROUGE-N,ROUGE-L(最长公共子句),ROUGE-W(带权重的最长公共子句),ROUGE-S(不连续二元组)四种。以ROUGE-L为例进行介绍。
    ROUGE-L是计算最长公共子序列的长度,就是寻找真实响应和生成相应之间的最长公共子序列长度,然后计算F-measure分数。其与BLEU相似,都可以反应词语顺序,但是ROUGE的词可以是不连续的,而BLEU的n-gram要求词语必须连续出现。比如两句话“我喜欢吃西瓜”和“我刚才吃了一个西瓜”的最长公共子串为“我 吃 西 瓜”。
    R=max_j\frac{l(c_i,s_{ij})}{|s_{ij}|}

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

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

  • MENTOR
    MENTOR 对BLEU进行了改进,加入了生成响应和真实响应之间的对应关系。使用WordNet计算特定的序列匹配,同义词,词根和词缀,释义之间的匹配关系,改善了BLEU的效果,使其跟人工判别具有更强的相关性。同样也使用F-measure的计算方法。
    F_mean=\frac{P_mR_m}{\alpha P_m+(1- \alpha)R_m}

  • Perplexity
    PPL/Perplexity/困惑度是判断语言模型好坏的一个指标,其基本思想是:给测试集的句子赋予较高概率值的语言模型较好,当语言模型训练完之后,测试集中的句子都是正常的句子,那么训练好的模型就是在测试集上的概率越高越好。公式如下:
    PP(W)=P(w_1w_2...w_N)^{-\frac{1}{N}}
    由公式可知,句子概率越大,语言模型越好,困惑度越小。
    用更加通俗的话来解释,困惑度p可以理解为,如果每个时间步都根据语言模型计算的概率分布随机挑词,那么平均情况下,挑多少个词才能挑到正确的那个。

  • hits@k
    对给定的几个候选项进行排序,检索模型或者是可以给候选项打分的生成模型。

比赛

参考资料
[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》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容