当前位置: 代码迷 >> 综合 >> 论文阅读-End-to-End Trainable System for Enhancing Diversity in Natural Language Generation
  详细解决方案

论文阅读-End-to-End Trainable System for Enhancing Diversity in Natural Language Generation

热度:7   发布时间:2024-02-28 07:13:52.0

文章目录

    • 背景
    • SC-LSTM
    • 改进的模型
      • semantic control
      • first word control
    • 实验效果
      • 自动评测指标
      • 语义正确度
      • 词汇复杂性分析

背景

出发点:

  • End-to-end 模型可以将句子规划和实现两步合为一步
  • 现有的方法生成的句子开头大多是相同的

创新点:

基于Semantically Conditioned Long Short-Term Memory(SC-LSTM)模型的改进:

  • 增加了一个semantic rerank 的处理过程,并将这个过程的loss 加入SC-LSTM整体loss进行优化
  • 对输出句子的第一个词进行控制:在输入时将第一个词的信息单独作为一个特征输入模型

SC-LSTM

SC-LSTM, 引入对话行为的 one-hot 主题向量覆盖机制, 使生成的文本包含特定的主题信息。

考虑到输入的MR中,属性是可以枚举的,所以,用one-hot对MR进行向量表示d0d_0d0?。这其实是一个sentence planner,因为保证了哪些属性要在最后的文本中生成。用 wt∈RMw_{t} \in \mathbb{R}^{M}wt?RM 表示ttt时刻的输入向量,dt∈RDd_{t} \in \mathbb{R}^{D}dt?RD 表示ttt时刻的MR向量,NNN表示SC-LSTM的单元数,那么前向传播过程如下:

(itftotrtgt)=(σσσσtanh?)W5n,2n(wtht?1)\left(\begin{array}{l} i_{t} \\ f_{t} \\ o_{t} \\ r_{t} \\ g_{t} \end{array}\right)=\left(\begin{array}{c} \sigma \\ \sigma \\ \sigma \\ \sigma \\ \tanh \end{array}\right) \mathbf{W}_{5 n, 2 n}\left(\begin{array}{c} w_{t} \\ h_{t-1} \end{array}\right) ???????it?ft?ot?rt?gt?????????=???????σσσσtanh????????W5n,2n?(wt?ht?1??)

其中,σ\sigmaσ 是sigmoid函数,it,ft,ot,rt∈[0,1]Ni_t,f_t,o_t,r_t \in [0,1]^{N}it?,ft?,ot?,rt?[0,1]N是输入门、遗忘门、输出门、MR读取门 。权重W5n,2nW_{5n,2n}W5n,2n?Wd∈RD×MW_d \in \mathbb{R}^{D \times M}Wd?RD×M 是训练过程中模型要学习的参数。下一个预测输出的token是从如下分布中采样得到的:

wt?P(wt∣w0:t?1,dt)=softmax?(Wsht)w_{t} \sim P\left(w_{t} \mid w_{0: t-1}, d_{t}\right)=\operatorname{softmax}\left(W_{s} h_{t}\right) wt??P(wt?w0:t?1?,dt?)=softmax(Ws?ht?)

其中,Ws∈RN×MW_{s} \in \mathbb{R}^{N \times M}Ws?RN×M 是训练过程中学习的权重矩阵。

SC-LSTM的loss设计:

F(θ)=∑tptTlog?(yt)+∥dT∥+∑t=0T?1ηξ∥dt?dt?1∥F(\theta)=\sum_{t} p_{t}^{T} \log \left(y_{t}\right)+\left\|d_{T}\right\|+\sum_{t=0}^{T-1} \eta \xi^{\left\|d_{t}-d_{t-1}\right\|} F(θ)=t?ptT?log(yt?)+dT?+t=0T?1?ηξdt??dt?1?

第一项就是输入输出的重构误差,第二项是保证输入属性都会在输出句子中表示,第三项我个人理解是保证属于同一attribute的词输出

改进的模型

改进后的模型整体流程图如下:
在这里插入图片描述

semantic control

为了能保证输入信息都能在输出表示,作者在这里修改了原有SC-LSTM的损失函数,修改后的loss为:
F(θ)=∑tptTlog?(yt)+∥dT∥+∑t=0T?1ηξ∥dt?dt?1∥+∑a∈AF(θa)\begin{aligned} F(\theta) &=\sum_{t} p_{t}^{T} \log \left(y_{t}\right)+\left\|d_{T}\right\| \\ &+\sum_{t=0}^{T-1} \eta \xi^{\left\|d_{t}-d_{t-1}\right\|}+\sum_{a \in A} F\left(\theta_{a}\right) \end{aligned} F(θ)?=t?ptT?log(yt?)+dT?+t=0T?1?ηξdt??dt?1?+aA?F(θa?)?

与之前的loss相比,多了一项 ∑a∈AF(θa)\sum_{a \in A} F\left(\theta_{a}\right)aA?F(θa?)。这个loss主要是进行语义控制的。作者用训练数据对训练了CNNbased分类器DaD_aDa?,就是判断该属性是否应该输出。

first word control

作者分析了refer中第一个词的分布情况,发现59%的句子,首个词都是餐馆名,7%的句子,以There开头。考虑到decoder阶段,为了保证loss小,模型更愿意输出比较安全的词(高词频),所以作者将常见的第一个词也作为特征(也是one-hot)加入输入特征,f0∈Rn+1f_{0} \in \mathbb{R}^{n+1}f0?Rn+1

f0={f0[first word index ]=1,first word in list f0[n+1]=1,first word not in list f_{0}=\left\{\begin{aligned} f_{0}[\text { first word index }]=1, & & \text { first word in list } \\ f_{0}[n+1]=1, & & \text { first word not in list } \end{aligned}\right. f0?={ f0?[ first word index ]=1,f0?[n+1]=1,?? first word in list  first word not in list ?

实验效果

自动评测指标

作者在这里对比了三种模型,

  • BaseModel:SC-LSTM
  • primary1 GAN:SC-LSTM+first word control+将F(θa)F(\theta_{a})F(θa?) 反向传播
  • primary2 Vanilla:primary+first word control+F(θa)F(\theta_{a})F(θa?) 反向传播

在这里插入图片描述
可以看到三种模型的效果都没有baseline好,而且作者改进的模型也没有原来的模型要好 (  ̄□ ̄||好尴尬啊)
作者将这个原因归咎于,firstwordcontrol使得以餐馆名开头的句子只有3%,所以不利于这种基于覆盖率的指标计算。

语义正确度

但是作者又提出来了其他的评价指标,(可能是想再挣扎一下),又提出了语义正确度:
ERR=(p+q)/NERR=(p+q)/NERR=(p+q)/N

N是输入MR的属性个数,p是多出来或者不正确的属性个数,q是缺失的属性个数。
在这里插入图片描述

可以看到使用了first word control之后,输出句子出现属性缺失的情况明显好转。因为我们对输出句子的首个单子进行了控制,而decoder生成时会考虑到上一个输出的情况,所以提高了整体的输出效果。

词汇复杂性分析

  • NDW:number of different words,不同词数量
  • LS: lexical sophistication,词汇复杂,是指非常见词的占比
  • CVS:非常见动词占比
  • TTR: type-token ratio,token数量和word数量的比例
  • MSTTR: mean segmental TTR,先将输出句子划分成片段,再算每个片段的TTR,然后取平均
    在这里插入图片描述
  相关解决方案