第二周
本周学习进度汇报:
- 理论学习 了解学习了Encoder-Decoder架构、Attention模型、Transformer原理;
- 实践学习 基于Transformer原理实现德语->英语机器翻译小例子;
- Transformer模型学习笔记;
- Transformer模型代码实现笔记;
- Transformer模型简易实现。
本周学习总结:
对于机器翻译问题来说,是将一种语言翻译成另一种语言,换句话说是将源句子N转化成目标句子M。这就是一个seq2seq问题,而传统RNN模型无法高效的解决N to M问题。为了解决这个问题,先人们提出来Encoder-Decoder架构。按我理解就是,N->1->M,在Encoder-Decoder架构中这个1就是语义编码C。那么如何实现N->C->M,Encoder-Decoder架构不是具体的,也就是编码器和解码器都不是固定的,两边的可以任意组合,比如:CNN、RNN、BiRNN、GRU、LSTM等等。现在已经初步解决了机器翻译问题,但是这个模型有一个非常大的局限性,最大的局限性就来自与解码器和编码器之间唯一联系的固定长度的语义向量C。通俗的讲,就是把源句子压缩成一个向量,再将这个向量扩大成目标句子。这样会造成语义向量无法完全表示源句子和源句子中靠前的信息会被稀释。为了解决这两个问题,先人们提出了Attention。
Attention模型的提出是为了解决信息过长导致信息丢失的问题。在原Encoder-Decoder架构中,之所以会出现过长信息丢失是因为将所有信息压缩成一个向量,那么只需要不将所有信息压缩成一个向量是否可以解决这个问题?答案是肯定的。比如在机器翻译任务中,在翻译当前单词时,Attention机制会聚焦于对当前作用大的信息,这样就能很好的解决信息过长导致信息丢失的问题。Attention具有速度快、效果好的优点,但是只能在Decoder阶段实现并行运算,Encoder部分依旧采用的是RNN,这也导致对于中长距离之间,两个词相互之间的关系没办法很好的获取。
为了改进Attention的缺点,先人们不断探索,提出了Self-Attention。引入Self Attention后会更容易捕获句子中长距离的相互依赖的特征,因为如果是RNN或者LSTM,需要依次序序列计算,对于远距离的相互依赖的特征,要经过若干时间步步骤的信息累积才能将两者联系起来,而距离越远,有效捕获的可能性越小。但是Self Attention在计算过程中会直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,所以远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征。除此外,Self Attention对于增加计算的并行性也有直接帮助作用。正好弥补了attention机制的两个缺点,这就是为何Self Attention逐渐被广泛使用的主要原因。
Transformer便是完全基于Self-Attention机制实现的Encoder-Decoder架构模型。Transformer模型可以分解:
- Encoder和Decoder输入部分;
- Encoder部分,由6个Encoder组成;
- Decoder部分,由6个Decoder组成;
- 输出部分。
在输入部分需要给每个词向量添加位置信息(positional encoding),为什么要添加位置信息?是因为Self-attention不能获取位置信息。
本周疑问:
- Transformer模型如何应用在计算机视觉中呢?
下周学习安排:
- 了解计算机视觉中的Transformer;
- 尝试基于Transformer模型解决一些计算机视觉小例子;
- 总结常用损失函数、优化器以及模型。