3.1 序列结构的各种序列
编码器把法语编码,解码器产生对应的英语翻译。
3.2 选择最可能的句子(Picking the most likely sentence)
语言模型每次翻译出来的结果很可能不一样,翻译质量时好时坏。
greedy serch 贪心搜索
3.3 基本集束搜索(Beam Search)
为了解决翻译的问题,你想要最好的,最接近原意的翻译结果,集束搜索就是解决这个最常用的算法。
集束搜索的一个核心任务就是找到能使𝑃(𝑦|𝑥)最大化的𝑦值
集束宽度B,B=3 就会把3个最符合的备选答案放在内存。
就相当于同时考虑三种可能性。B=1的时候可以理解为就是贪婪搜索算法。
3.4 改进集束搜索(Refinements to Beam Search)
P的取值范围是0-1,图中画圈位置。 阿尔法一般取值0.7。
最终通过这个优化后的集束搜索公式来计算。
3.5 集束搜索的误差分析(Error analysis in beam search)
3.7 注意力模型直观理解(Attention Model Intuition)


3.8 注意力模型(Attention Model)
3.11 transformer网络直观理解
网络演进
RNN存在梯度消失问题,所以很难捕捉到远距离依赖和序列。
所以GRU LSTM产生了,用来解决远距离依赖问题。使用门来控制信息流。但是计算也变得复杂了。
但是缺点是,每个单元就像一个信息流瓶颈,只有算完了前面的,才能得到最后单元的输出。
接下来介绍的transformer可以同时对句子里的所有单词进行处理,而不是从左到右处理。
注意力+CNN的结合。实现并行处理多个输入。两个关键词 self-attention,multi-head attention 后续会介绍 自注意力和多头注意力。、
3.12 自注意力机制
一共五个单词,拿第三个单词Africa为例,想得到A3,A3由右上角公式来计算。设计三个参数。
q,k,v。
q3表示A3这个位置发生了啥,k可以结合其余的输入来帮助我们得知A3到底发生了啥,
v3可以用来插入其余位置关于q3这个词的表达,就是在Afirca这里插入关于visite的表达,这样就可以方便我们得出,是有人访问了非洲,所以Africa表示的是一个地名。
q3表示 a3这个位置发生了什么事情。他需要结合其他所有的k。所以有了q3*k1,q3*k2....
之后要和每一个v相乘,也就是在A3插入其余v的表达。有助于我们理解A3的语义。所以就是v1*q3*k1,v2*q3*k2....
然后把v1*q3*k1+v2*q3*k2+....+v5*q3*k5 =A3
这样的好处就是可以结合语境来得到A3这里的单词到底表示啥,同时不依赖A1,A2,A4,A5的计算结果。
3.13 多头注意力机制
具有最大内积表示,x2最能帮助确定A3表示了啥,也就是visite这个单词最能确定Afirca表示的是一个地名。蓝色剪头表示第一个头,第一头关注的是发生了什么
所以按照这个方法可以确认x1,x2,x4,x5都发生了啥。
接下来是第二个头,表示什么时候发生的?我们在第一个头后面叠加第二个头,用红色表示。
得出x5 septembre的key和x3Afirca有最大内积。用红线表示。
接下来第三个头,想问谁和x3这个事儿有关?
得出x1 jane的key和x3Afirca有最大内积。用黑线表示。
用h表示头数。文献中使用8个头比较常见。
并行计算所有头的值,然后把他们连接起来,乘以W0,就得到了多头注意力的值。
3.14 transformer网络
介绍如何通过模仿前面的注意力机制来构建transformer网络。
sos句子开始标识 Eos句子结束标志
1.把这些法语单词嵌入一个多头注意力编码器,并输入QKV。这样就能得到一个能传输到前向反馈网络的矩阵。
2.编码器经过多次计算。通常6次,会把结果送到解码器。
解码器作用输出英文译文。从sos开始算,每次算一个单词,假如第一波算出来第一个单词是Jane,他会把sos和jane作为下一波的输入再传到解码器,继续算jane的下一个单词,直到遇到EOS。我们要找到最可能的kv,帮助生成下一个单词。
3.单词位置对翻译结果也很重要,所以要把位置编码向量p也嵌入到输入。(x1+p1)