CS224n-2019的第八讲《Neural Machine Translate, seq2seq with Attention》
Machine Translate历史
Statistics MT这是基于统计的机器翻译,核心思想是最大化一个概率分布,最终拆分成两个部:一是翻译模型,二是语言模型。(这块没有弄懂)其中需要大量的人工操作,非常的复杂。之前的google翻译就是基于SMT的。
Neural MT这是一个seq2seq结构,单个神经网络,使用到了两个RNN网络。
NMT神经网络结构
这是一个Conditional Language Model,它像语言模型一样,一个接一个的生成目标语句,但是又不是单纯的语言模型,而是在input source sentence的条件之上的。
Encoder-Decoder模型 ,这是一个end2end模型。因为反向传播,可以从损失函数直接传递到Encoder RNN的参数(输入的参数)。
Greedy Decoder
problem :这是一个贪心解码器,greedy decoder,也就是说它的每一步只会选择当前最好的结果,并没有考虑到最终的整体结果。
solution : Beam Search(束搜索): 核心思想是找到所有词组合中条件概率最大的那个,总共会有
V
T
V^T
VT种情况(V为单词表规模,T为最终的词数量)。如果罗列出所有的情况,就一定可以找到最优的解,但是this is expensive。束搜索 : 每一步选择出当前步中最优的k个解,这样就将解空间降至
k
T
k^T
kT。k越大结果越准确,相应开销也越大。
Decoder何时结束解码
当遇到单词的时候就结束解码。
problem :使用束搜索,每条path得到的长度不一致,出现的结束,其他的继续。
solution : 设置一个步长阈值或者结果条目数量的阈值来控制结束。
如何选择最优解
problem : 束搜索导致最终会得到多个较优解,如何去选择;解的长短不一,越长的解概率越小,因为是累加的过程,而每个单词的概率结果加log就是负的,所以只会越来越小。标准时越大越好。
solution : 通过
1
t
\frac{1}{t}
t1来normalize by lengh归一化,再选取最优解。
challenges of NMT
一般是由于训练corpus有限,导致模型最终的结果有局限性、妄自猜测性,还有表面性(只会理解表面的意思,并没有真正的理解到深层的意义,e.g:paper jam)
神经网络是难以控制的,也是无法解释的,它只是在自己训练,我们并无法知道其中的每一步每一个神经元都在起什么样的作用。
NMT bottleneck
Encoder最后一个timestep的hidden state作为Decoder的input,这使得Decoder的输入必须要包含source sentence的所有含义。如果其中有丢失的信息,那么翻译结果就会不准确。
Attention ---- 不需要任务控制,模型通过Loss Function就可以自己学习,是一种无监督学习,可以应用在很多tasks上
Attention可以解决这个瓶颈,它使得Decoder每一步的输入都depends on different parts of source sentence。
大概的过程就是1.计算注意力值2.归一化3.计算weighted sum
可以通过Query、Key、Value的软寻址的例子来理解,Query与Key计算similarity,normalize,weighted sum
可以解决梯度消失问题,类似于LSTM & GRU
Attention三部曲千篇一律,不同之处在于计算similarity,S(Query) 与 h_i(Key & Value)
d
1
=
d
2
d_1 = d_2
d1=d2时,最简单,
e
i
=
S
T
h
i
e_i = S^Th_i
ei=SThi
d
1
≠
d
2
d_1 \neq d_2
d1=d2,
e
i
=
S
T
W
h
i
e_i = S^TWh_i
ei=STWhi
e
i
=
V
T
t
a
n
h
(
W
1
S
+
W
2
h
i
)
e_i = V^Ttanh(W_1S + W_2h_i)
ei=VTtanh(W1S+W2hi) 最终针对每一个元素都得到一个similarity值。
遗留问题
Assignment4
熟悉图神经网络代码