前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TeaForN:让Teacher Forcing更有"远见"一些

TeaForN:让Teacher Forcing更有"远见"一些

作者头像
mathor
发布2021-07-08 16:50:34
7740
发布2021-07-08 16:50:34
举报
文章被收录于专栏:mathormathormathor

本文介绍Google新提出的一种名为"TeaForN"的缓解Exposure Bias现象的方案,来自论文《TeaForN: Teacher-Forcing with N-grams》,它通过嵌套迭代的方式,让模型能提前预估到后N个token(而不仅仅是当前要预测的token),其处理思路上颇有可圈可点之处,值得我们学习

Teacher Forcing

文章Teacher Forcing已经概述了什么是Teacher Forcing,这里做一个简单的回顾。首先,Seq2Seq模型将联合概率分解为多个条件概率的乘积,这就是所谓的“自回归模型”:

$$ \begin{aligned}p(\boldsymbol{y}|\boldsymbol{x})=&\,p(y_1,y_2,\dots,y_n|\boldsymbol{x})\\ =&\,p(y_1|\boldsymbol{x})p(y_2|\boldsymbol{x},y_1)\dots p(y_n|\boldsymbol{x},y_1,\dots,y_{n-1}) \end{aligned}\tag{1} $$

当我们训练第t步的模型p(y_t|x,y_1,…,y_{t−1})时,我们假\boldsymbol{x},y_1,...,y_{t−1}都是已知的,然后让模型只预测y_t,这就是Teacher Forcing。但在预测(Inference)阶段,真实的y_1,…,y_{t−1}都是未知的,此时它们是递归地预测出来的,可能会存在传递误差等情况。因此Teacher Forcing的问题就是训练和预测存在不一致性,这让我们很难从训练过程掌握预测的效果

没什么远见

如何更具体理解这个不一致性所带来的问题呢?我们可以将它理解为"没什么远见"。在解码器中,输入t−1个输出token共同编码得到向量h_t,在Teacher Forcing中,这个h_t只是用来预测y_t,跟y>tt这一步了

Teacher Forcing示意图

比如上图中的h_3向量,Teacher Forcing只让它用来预测"阴",事实上"阴"的预测结果也会影响"晴"、"圆"、"缺"的预测,也就是说h_3也应该与"晴"、"圆"、"缺"有所关联,而Teacher Forcing没有显式地建立这种关联。所以模型在解码的时候每一步很可能只输出局部最高概率的token,这就容易出现高频安全回复或重复解码现象

为了提高模型的"前瞻能力",最彻底的方法当然是训练阶段也按照Inference的方式来进行,即

  1. 牺牲并行。对于Teacher Forcing来说,如果Decoder使用的是CNN或Transformer这样的结构,那么训练阶段的所有token都可以并行训练的(预测阶段还是串行),但如果Student Forcing的话则一直都是串行
  2. 极难收敛。Student Forcing通常需要用Gumbel Softmax或强化学习来回传梯度,它们的训练都面临着严重的不稳定性,一般都要用Teacher Forcing预训练后才能用Student Forcing,但即便如此也不算特别稳定

形象地理解,Student Forcing相当于老师完全让学生独立探究一个复杂的问题,不做手把手教学,只对学生的结果好坏做个最终评价。这样一旦学生能探索成功,那说明学生的能力很强。但问题是,缺乏老师的"循循善诱",学生"碰壁"的几率更加大

往前多看几步

有没有介乎Teacher Forcing与Student Forcing之间的方法呢?有,本文所介绍的TeaForN就算是其中一种。它的思想是:常规的Teacher Forcing相当于在训练的时候只往前看1步,而Student Forcing相当于在训练的时候往前看了L步(L是目标句子长度),如果我们只是往前多看几步(相当于看到了N-gram),那么理论上就能提高"远见",并且不至于严重牺牲模型的并行性。其示意图如下:

TeaForN示意图

直观来看,就是把输出结果再往前迭代多遍,这样一来前t-1个token要预测的就不仅是第t个token,还有第t+1,t+2,...个token。比如在上图中,输入"月",输出h_2^{(1)}在第一层预测"有";接着输入h_2^{(1)},输出h_3^{(2)}在第二层预测"阴";接着输入h_3^{(2)},输出h_4^{(3)}在第三层预测"晴"。所以我们可以理解为h_2^{(1)}这个向量要同时预测"有"、"阴"、"晴"三个字,因此也就提高了"远见"

用数学的话来说

用数学的语言来描述,我们可以将Decoder分为Embedding层E和剩余部分M,Embedding层负责将输入句子s=[w_0,w_1,...,w_{L-1}]映射为向量序列[e_0,e_1,...,e_{L-1}](其中w_0是固定的解码起始标记,也就是上图的[S],有些文章记为<bos>),然后交给模型M处理,得到向量序列[h_1,h_2,...,h_L],即

[h_1,h_2,...,h_L]=M(E([w_0,w_1,...,w_{L-1}]))\tag{2}

接着通过p_t=\text{softmax}(Wh_t+b)得到第t步的token概率分布,最后用-\log p_t[w_t]作为损失函数训练,这便是常规的Teacher Forcing

可以想象,负责映射到token分布的输出向量序列[h_1,h_2,...,h_{L-1}]某种程度上跟Embedding序列[e_1,e_2,...,e_{L-1}]是相似的,如果我们补充一个e_0进去,然后将[e_0,h_1,h_2,...,h_{L-1}]也送入到模型M中再处理一次,是否可以呢?也就是

$$ \begin{aligned}[] \left[e_0,e_1,e_2,\cdots,e_{L-1}\right]& = E\left(\left[w_0, w_1,w_2,\cdots,w_{L-1}\right]\right)\\ \left[h_1^{(1)},h_2^{(1)},h_3^{(1)},\cdots,h_L^{(1)}\right]& = M\left(\left[e_0,e_1,e_2,\cdots,e_{L-1}\right]\right)\\ \left[h_1^{(2)},h_2^{(2)},h_3^{(2)},\cdots,h_L^{(2)}\right]& = M\left(\left[e_0, h_1^{(1)},h_2^{(1)},\cdots,h_{L-1}^{(1)}\right]\right)\\ \left[h_1^{(3)},h_2^{(3)},h_3^{(3)},\cdots,h_L^{(3)}\right]& = M\left(\left[e_0, h_1^{(2)},h_2^{(2)},\cdots,h_{L-1}^{(2)}\right]\right)\\ &\,\,\vdots \end{aligned}\tag{3} $$

然后每一个h我们都算概率分布p_t^{(i)}=\text{softmax}(Wh_t^{(i)}+b),最后算交叉熵并加权叠加

\text{loss} = -\sum_{t=1}^L \sum_{i=1}^N \lambda_i \log p_t^{(i)}[w_t]\tag{4}

Inference阶段,我们只用EM做常规的解码操作(比如Beam Search),也就是只用h_t^{(1)}而不再需要h_t^{(2)},h_t^{(3)},...

效果、思考与讨论

至于实验效果,自然是有提升的,从原论文的实验表格来看,在beam_size比较大时提升比较明显。其实也不难理解,按道理来说,这样处理后再不济也不会下降,因此算是一种"稳赚不赔"的策略

TeaForN的实验结果之一(文本摘要)

原论文讨论了几个值得商榷的点,我们这里也稍微提一下

首先,模型每一步迭代所用的M该不该共享权重?直觉来想共享是更好的,如果不共享权重,那么往前看N步,参数量差不多就是原来的N倍了。当然最好还是靠实验证明,原论文确实做了这个比较,证实了我们的直觉

TeaForN在机器翻译上的效果,其中包含了是否贡献权重的比较

其次,可能主要的疑问是:在迭代过程中将[h_1,h_2,...,h_{L-1}]当作[e_1,e_2,...,e_{L-1}]用是否真的靠谱?当然,实验结果已经表明了是可行的,这就是最有说服力的论据了。但由于h_{t}p_t是通过内积来构建的,所以h_te_t未必相似,如果能让它们更接近些,效果会不会更好?原论文考虑了如下的方式:

\frac{\sum\limits_{w\in \text{Top}_k(p_t)}p_t[w] e_w}{\sum\limits_{w\in \text{Top}_k(p_t)}p_t[w]}\tag{5}

也就是说,每一步算出p_t后,取概率最大的k个token,将它们的Embedding向量加权平均来作为下一步迭代的输入。原论文实验了k=4k=|V|(词表大小),结果如下图。总的来说Topk的效果不大稳定,好的情况也跟直接用h_t差不多,因此就没必要尝试别的了

用Topk对Embedding加权平均的方式代替h的效果

Reference
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Teacher Forcing
  • 没什么远见
  • 往前多看几步
  • 用数学的话来说
  • 效果、思考与讨论
  • Reference
相关产品与服务
机器翻译
机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档