Task04:机器翻译及相关技术;注意力机制与Seq2seq模型;Transformer

  1. 如果我们现在要做个中英文翻译,比如我是中国人翻译成 ‘i am Chinese’.这时候我们会发现输入有 5个中文字,而输出只有三个英文单词. 也就是输入长度并不等于输出长度.这时候我们会引入一种 编码器-解码器的模型也就是 (Encoder-Decoder).首先我们通过编码器 对输入 ‘我是中国人’ 进行信息编码, 之后将生成的编码数据输入 decoder 进行解码.一般编码器和解码器 都会使用循环神经网络.
    在这里插入图片描述
  2. 当然为了使机器知道句子的结束我们会在每个句子后面增加 一个 < e o s > <eos> 表示 句子的结束.使得电脑可以进行识别.在训练的时候 我们也一般会在解码器的第一个输入阶段加上 < b o s > <bos> 表示预测的开始.
  3. 同时为了使每个句子保持相同长度,我们 会人为预先规定句子长度,若句子没有达到长度,那么我们会对句子进行填充,使得其长度达到规定长度.
  4. 作为编码器的输入 我们一般使用 C = q(h1, h2…ht)作为第一个隐藏层输入,一般的我们也可以直接使用c = ht,不用包含之前所有的隐藏层信息。
  5. 在训练的时候我们一般会使用强制教学,也就是 不把y_hat1的预测数据当做编码器的第二个输入, 而是直接用标签数据的y1当做输入。
  6. 当我们使用贪心算法再对y进行softmax的时候,我们对每个输出的y进行当前最优的选择。可能会达到全局最优的情况
    如下图所示 --引用自 动手学深度学习
    在这里插入图片描述
  7. 这当然这时候我们可以通过穷举法解决这个问题,遍历所有的候选词,然而这个开销过大。这时候我们该用 束搜索(Beam Search) 策略.也就是每次都选取当前时间步 条件概率最大的前k个选项。列出所有集合 如下图所示

在这里插入图片描述
这里由于不同候选序列的长度不一致,所以我们添加了一个Lα进行对长度的惩罚。

注意力机制

实际上在encoder句子中每个词对decoder的影响不同,然而在seq2seq模型中,并没有体现出来,都是用 C = q(h1, h2…ht)作为第一个隐藏层输入.
我们举个例子就是 tom chase jerry. 翻译出来就是 汤姆抓杰瑞。 对于 杰瑞这个词的翻译 我们可以理解为 Jerry 对这个词翻译贡献最大,而 tom 和 chase这两次对 杰瑞的翻译贡献比较少。而在seq2seq模型中每次翻译的输入权重都是一样的
所以聪明的研究者,发明出了注意力机制,在翻译中加入了每个单词对于要预测词的权重系数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里我们引入 query与 key-value.query = s t 1 s^{t-1} , key=value=encoder中的隐藏层状态。就是每次在预测下一个输出的时候,我们先通过 query与每个key生成一个权重系数, 在通过 权重系数乘以value得出 注意力内容。
需要注意的是一般在NLP钟我们的key玉value是相等的。
最终 由当前是时间t的注意力内容与 在decoder中上一个隐藏层状态的 s t 1 s^{t-1} 生成本层隐藏层状态进行预测。

在transform模型中我们,引入了self-attention 也就是 自注意力层

在这里插入图片描述

发布了17 篇原创文章 · 获赞 2 · 访问量 833

猜你喜欢

转载自blog.csdn.net/qq_43371456/article/details/104356748