CS224n-Lecture08-Translation, Seq2Seq, Attention
Seq2Seq
Beam Search
- 使用greedy search,当模型输出
<END>
时结束 - 使用beam search,不同的假设可能会在不同的timestep输出
<END>
,将已输出<END>
的句子放在一边,继续在其他假设上使用beam search - 何时停止beam search?
- 已到达timestep T,T由事先设定
- 生成
<END>
的假设数达到n个,n由事先设定
- 最后选取句子时,从上式可见,短句子的分数会更高,因为分数都是负的,长句子越加分数越低,所以根据句子长度对其分数做normalize后,选取分数最高的假设
BLEU(Bilingual Evaluation Understudy)
BLEU根据以下两个方面来计算机器翻译出的句子与人类翻译的句子之间的相似度分数(similarity score)
- n-gram precision(通常使用1,2,3,4-grams),即机翻句子中出现的所有n-gram,它们中有多少至少在人类翻译的句子中出现一次
- 如果机翻的句子比人类翻译的句子短很多,加一个惩罚项,即分数会更低
计算公式:
matched n-grams为机翻句子的n-grams在人类提供的参考翻译中出现的次数(若在机翻中出现2次,而参考翻译中出现1次,只记1次)
Wn为n-grams的precision的一个几何权重
β为brevity penalty,用来惩罚过短的机翻句子
k为长度最大的n-grams的长度
存在的问题
有很多种方式优雅地翻译同一个句子
一个很好的翻译有可能因为与人类翻译的句子n-gram重合很低,而得分过低
任何一个n-grams得分为0,则整个BLEU分数为0
它只计算了与一条参考翻译的相似度分数,而不能和多个参考翻译比对
机器翻译待解决的问题
- Out-of-vocabulary
- 训练集和测试集的domain mismatch
- 在长文本中顾及上下文
- 平行句对资源少
- 难以翻译common sense(常识)
- NMT会保留训练集中存在的bias(偏见)
- 缺乏解释性的模型有时会做出奇怪的行为
Attention
更详细的attention机制详解写在我的这篇博客
Hierarchical Softmax
每次预测下一个单词时使用softmax的计算代价过大,因此Morin et al.2005提出使用二叉树结构来更有效地计算’softmax’。
首先我们建立二叉树,这里使用霍夫曼树,叶子节点为单词表中的单词$w_{1},w_{2},…,w_{V}$,按照出现的频率作为权重给叶子节点编码,高权重节点编码值较短,而低权重值编码值较长,在word2vec中,编码方式约定左子树编码为1,右子树编码为0,同时约定左子树的权重不小于右子树的权重,这样每个单词都有其单独的编码,$w_{2}$的编码为110。
如上图,从根节点走到$w_{2}$要经过3个节点$n(w_{2},i),i=1,2,3$,对每一个单词$w$,其对应的词向量为$x_{w}$,且每个节点都有一个对应的参数$\theta_{i}^{w}$,我们定义向右走为正类(霍夫曼编码为0),向左走为负类(霍夫曼编码为1),$P(+)=\sigma(x_{w}^{T}\theta),~P(-)=1-P(+)=\sigma(-x_{w}^{T}\theta)$,则每次往下走哪边是根据P(+)与P(-)哪个概率大,我们希望正确的路径概率最大,对于$w_{2}$是走左左右的路线,即负负正,要其概率最大,即要最大化下式
因为每次往下走时,选择左右的概率之和为1,所以最后达到任一单词$w_{i}$的概率之和也为1。
将上述公式一般化推广及详细的梯度推导见该博客。
该方法的限制在于,只能在训练时使用,在test阶段,每次只能使用origin softmax计算整个词表的概率来做预测。