为什么 Encoder 给予 Decoders 的是 K、V 矩阵
为什么 Encoder 给予 Decoders 的是 K、V 矩阵
我们在讲解 Attention 机制中曾提到,Query 的目的是借助它从一堆信息中找到重要的信息。
现在 Encoder 提供了 Ke、VeKe、Ve 矩阵,Decoder 提供了 QdQd 矩阵,通过 “我爱中国” 翻译为 “I love China” 这句话详细解释下。
当我们翻译 “I” 的时候,由于 Decoder 提供了 QdQd 矩阵,通过与 Ke、VeKe、Ve 矩阵的计算,它可以在 “我爱中国” 这四个字中找到对 “I” 翻译最有用的单词是哪几个,并以此为依据翻译出 “I” 这个单词,这就很好的体现了注意力机制想要达到的目的,把焦点放在对自己而言更为重要的信息上。
其实上述说的就是 Attention 里的 soft attention机制,解决了曾经的 Encoder-Decoder 框架的一个问题,在这里不多做叙述,有兴趣的可以参考网上的一些资料。
早期的 Encoder-Decoder 框架中的 Encoder 通过 LSTM 提取出源句(Source) “我爱中国” 的特征信息 C,然后 Decoder 做翻译的时候,目标句(Target)“I love China” 中的任何一个单词的翻译都来源于相同特征信息 C,这种做法是极其不合理的,例如翻译 “I” 时应该着眼于 “我”,翻译 “China” 应该着眼于 “中国”,而早期的这种做法并没有体现出,然而 Transformer 却通过 Attention 的做法解决了这个问题。