GRU

RNN: 直观上RNN是 1.管理过去对未来造成的影响2.x_t时刻如何影响到了x_t+n的时刻 我们能做的就是获取隐藏的状态用矩阵去乘,增加一些东西去处理输入之后就进入循环 但是这样下去就导致梯度消失 但是你不能解释真正发生了什么 不能看到t和t+n在数据上的联系 也可能是设置参数导致梯度的消失

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 可能会导致梯度消失或者梯度爆炸 这些都是朴素 transition function 导致的问题

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

在朴素transition function 中,每一步的矩阵乘法代表我们正在学习 这样对于我们的决策有多少影响 如果我们能获取到短线 以便t能够直接影响t+2 当我们在反向传播时 就能测量t时间段对t+2时间段的影响 因此我们就能学习到这些长期的依赖关系

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 GRU 更新模型 用来自适应学习应该把多少注意力放到前一个隐藏层状态上。

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 Reset gate 删掉一些在t-1时间点的东西 当它已经不再相关

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 RNN 寄存器 朴素RNN读取所有寄存器,运算后存入所有寄存器,没有灵活性。

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

GRU寄存器 门多了之后,就可以灵活地选择读取部分寄存器,执行运算,写入部分寄存器。Reset Gate起到决定要读哪些寄存器的目的,而Update Gate决定要写的寄存器。这里的“决定”其实是“强度”的意思,不是绝对的。

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

GRU与LSTM的对比:GRU中的隐藏状态h_t类似于LSTM中的cell c_t,而LSTM中的隐藏状态h_t其实相当于一个暴露给外部世界的“显状态”。LSTM通过给cell加一个tanh获得非线性的灵活性。另外,观察h_t−1之前的系数,这里的r_t其实是“don't reset gate”,f_t其实是“don't forget gate”。

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 LSTM :

宏观上的LSTM Cell

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 将所有操作都gate起来,方便遗忘甚至忽略一些信息,而不是把所有东西都塞到一起。

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 New Memory Cell的计算是一个非线性的过程,与朴素RNN一模一样:

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

最关键之处在于,Memory Cell的更新中有一个加法项直接来自上一刻的Cell,也就是说建立了c_t和c_t−1的直接线性连接(与ResNet类似):

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

类似于GRU中的加法,在反向传播的时候允许原封不动地传递残差,也允许不传递残差,总之是自适应的。 有了这些改进,LSTM的记忆可以比RNN持续更长的step(大约100)

训练技巧:

  • 将递归权值矩阵初始化为正交
  • 将其他矩阵初始化为较小的值
  • 将forget gate偏置设为1:默认为不遗忘
  • 使用自适应的学习率算法:Adam、AdaDelta
  • 裁剪梯度的长度为小于1-5
  • 在Cell中垂直应用Dropout而不是水平Dropout
  • 保持耐心,通常需要训练很长时间

ensembles集合 :如果想获得额外的2个百分点的效果提升,可以训练多个模型,平均它们的预测。

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 MT Evaluation

以前人们认为交给人类译员来打分是最好的,但这太主观了,10个译员给出的翻译可能都不相同。

BLEU:

后来IBM发明了一种简单有效的评价策略,叫BLEU。通过比较标准译文与机翻译文中N-Gram的重叠比率(0到1之间)来衡量机翻质量。

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

Brevity Penalty:是否可以通过输出大量无意义的the之类来作弊?不,通过Brevity Penalty来防止机翻比译员译文短。 一般取4-gram之内参与评测,最终的分值是所有n-gram分值的几何平均乘上一个Brevity Penalty:

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 一个具体的BLEU的重叠例子:

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

multiple Reference Translations:为了防止某篇机翻实际上很好,可就是跟人类译文用词行文不相似的情况,IBM的论文建议多准备几篇标准答案,这样总会撞上一个:当然了,虽然IBM建议准备4篇,实际测试中经常只有1篇。没有完美体现能力的考试,现实社会也是如此。

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

刚开始的时候,BLEU和人工打分几乎是线性相关(一致)的:而当人们为了BLEU分数费尽心机之后,两者就开始脱钩了。这也是为什么Google翻译的效果没有宣称的那么好的原因之一。

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

解决大词汇表的问题:

大词表问题指的是softmax的计算难度:

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 早期的MT系统会使用较小的词表,但这并不是解决问题,而是逃避问题。

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

另一种思路是,hierarchical softmax,建立树形词表,但这类方法过于复杂,让模型对树形结构敏感而不是对词语本身敏感。

另外就是上几次课见过的廉价的NCE,这些方法对GPU都不友好。

 Large-vocab-NMT

最新的方法是训练时每次只在词表的一个小子集上训练,因为40%的词语只出现一次,如果把训练数据均分为许多份,则每一份中的稀有词可能都不会在其他语料中出现。然后测试时加一些技巧,待会儿详谈。

训练:

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 如何选择小词表呢?在刚才的方法上更进一步,让用词相似的文章进入同一个子集,这样每个子集的词表就更小了。

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

测试:测试的时候先雷打不动将前K个最常使用的单词加入备选词表,然后将原文中每个单词可能的前K′个翻译加进去。最后在备选词表上softmax。

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 更多技巧:

上上次小讲座中提到的pointer、用词素级别来翻译goooooood morning之类。至此下课时间到了,后面全部是我的理解。

Byte Pair Encoding:这种方法试图用分词的思想去找出所有有意义的“词素”,其统计方法说来也简单,就是在词频词表里统计所有的n-gram组合作为新的更长的n-gram:

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

该方法拿到了WMT2016的第一名,代码在:https://github.com/rsennrich/nematus

其他:

一些字符级别的LSTM之类。

另有一些混合动力的NMT,大部分情况下在词语级别做翻译,只在需要的时候从字符级去翻译。这个系统的主体是词语级别的LSTM:

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 在词语级别上做常规的柱搜索:

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 一旦产生了unknown词语,则在字符级别进行柱搜索:

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

 然后提升了两个BLEU分值。

斯坦福CS224n NLP课程【十一】——GRU及NMT的其他议题

相关文章:

  • 2021-05-23
  • 2022-12-23
  • 2021-08-21
  • 2021-09-26
  • 2021-07-11
  • 2021-10-07
  • 2021-04-06
  • 2021-05-28
猜你喜欢
  • 2021-12-16
  • 2021-04-05
  • 2021-11-23
  • 2021-08-21
  • 2021-04-17
  • 2021-11-23
  • 2021-09-12
相关资源
相似解决方案