美文网首页
Low-Resource Response Generation

Low-Resource Response Generation

作者: 加油11dd23 | 来源:发表于2020-02-09 19:03 被阅读0次

    前段时间一直在啃论文,看了一些文本生成和person Re id的内容。将自己看的较吃力的一篇论文

    《Low-Resource Response Generation with Template Prior》

    拿过来简要介绍一下,主要介绍思路,方便日后回忆,具体细节见原论文。

    一、简介

    文本生成的一个领域是自动对话。情感类的自动对话训练样本较少,非情感类的自动对话训练样本较多,本论文设法将非情感类的训练样本拿来辅助情感类自动对话的训练。

    感觉本论文主要是想改进《Learning Neural Templates for Text Generation》获得的灵感

    二、大致思路

    1、通过从非情感类训练样本抽取出模板来辅助情感类训练样本的训练。

    模板的主要作用是能够将想要生成的话按照逻辑进行分段。例如

    Message :真的假的?我瘦了斤

    Responses: 【你 】 【瘦了】 【吗】

    模板在其中的作用就是先将答案分为3部分,之后一次生成每部分的答案。对每一个message会有很多模板,筛选模板的方法有很多,最简单的就是,哪个能与Message匹配上就用哪个,复杂的就涉及到一系列搜索方法。

    2、有了模板每一个答案是怎么生成的呢,其实是在每一个部分加入一个RNN,以隐含状态及之前的答案为输入进行生成答案。

    三、模型解析

    1、不妨先看《Learning Neural Templates for Text Generation》中的模型

    摘要:虽然神经编码器-解码器模型在文本生成方面取得了很大的成功,但这种生成方式仍存在一些尚未解决的问题。编码器-解码器模型在很大程度上无法解释文本,并且难以控制其措辞或内容。本文提出了一种使用隐藏的半马尔可夫模型(HSMM)解码器的神经生成系统,它学习潜在的、离散的模板并生成。我们展示了该模型学习有用模板的能力,并且这些模板让生成变得更具解释性和可控性。

    图1 HMM + RNN

    可以简单理解为对每一个编码后的隐藏态结合之前的隐藏态、输入,输出单词。

    如 隐藏态 z1 和 x  经过 Rnn 输出单词y1 , y2 , y3 。

    2、上面是将马尔可夫模型与RNN结合进行文本生成的一般思路,下面介绍本论文模型。

    本论文作者进行了改进,加入了模板,为了加入模板。在每个隐状态中又加入了一个变量l,l的意义是图1中zt能够发射出几个词。例如z1的l为3,因为它能够发出3个词,z2的l为1,因为它能够发出1个词。本论文的模型名称为S2S-Temp

    图2 S2S-temp

    (1)输入 message 首先经过一个GRUx(encoder)编码,得到的结果这里简记为src_enc。

    (2)输入message 经过一个分割网络 加上 模板 得到 马尔科夫链中的第一个隐藏态states,即图中的z1,z1的l为2,所以此状态能发射2个词。

    (3)[<s> ; z1 ]通过GRU,ATTENTION,GRU,softmax,linear function 得到第一个输出结果it 。

    (4)[it ; z1] 通过GRU,ATTENTION ,GRU,softmax,linear function得到第二个输出结果 ' s 。

    (5)根据马尔可夫链的求解算法Viterbi algorithm.得到z2

    (6) ['s  ;z2] 通过GRU,ATTENTION,GRU,softmax,linear function得到第三个输出结果a 。

    (7) ... 

    这其中有很多细节不一一介绍。

    四、模型训练方法

    "直觉的,我们可以通过最大化与数据对的相似度来训练编码器和解码器以及NHSMM。然而数据对太少,会面临一些问题。比如提前停止训练,会欠拟合,此实,无监督得到的模板会发挥更重要的作用。如果训练过度,会丢失模板的一些知识,使得编码器解码器在文本生成中占据主要作用。”

    因此采用对抗学习,来平衡模板知识和编码器解码器之间的关系。

    1、鉴别模型的更新:

    鉴别模型是一个基于线性分类器的卷积神经网络。

    通过max(logD(X,Y) + log(1-D(X,^Y)))来训练。(涉及对抗学习的一些知识)

    2、生成器的训练:

    关键为需要在max(logD(X,Y) + log(1-D(X,^Y))的过程中需要计算网络中每一块的梯度问题。

    PS:这一块没具体看,等到需要实现是再看看;同时关于模板的训练问题现在突然间看不懂了,打算过段时间再看下论文想想。

    五、论文的一些细节

    1、数据集的词向量。

    "我们保留了20,000个最频繁的单词,作为编码器,解码器和NHSMM的词汇表。词汇表覆盖了消息,响应和问题中出现的95.8%的单词。否则,用“ UNK”代替。"

    2、评价(自动,人工)

    自动:BLEU-1

    3、Baseline

    S2S、CVAE、HTD、ECM

    论文中均给出github代码地址

    参考:

    HMM 

    https://www.zhihu.com/question/20962240

    https://zhuanlan.zhihu.com/p/85454896

    对抗

    https://www.zhihu.com/question/63493495/answer/253693995

    文本生成

    https://mp.weixin.qq.com/s?src=11&timestamp=1581244160&ver=2148&signature=J2cpYYoaY4mLGmFlFgXjBomSRy8TNEdkBHFyNMrS6RZ7UNY*k595ly8rbtJ3U55d7G3GSKlvUEGq7tty0j1kLQX*stsAerj8jIpQdvRICZ8vCR8bOhqw0DxX0Mxizb48&new=1

    https://zhuanlan.zhihu.com/p/46283054

    相关文章

      网友评论

          本文标题:Low-Resource Response Generation

          本文链接:https://www.haomeiwen.com/subject/zysnxhtx.html