文章目录
-
- 背景
- 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=0∑T?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=0∑T?1?ηξ∥dt??dt?1?∥+a∈A∑?F(θa?)?
与之前的loss相比,多了一项 ∑a∈AF(θa)\sum_{a \in A} F\left(\theta_{a}\right)∑a∈A?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,然后取平均