研究生期间主要科研的内容,把基本公式推一推。
encoder-decoder机制
- 核心:处理不定长数据时,先使用一个encoder模型(可以是任何模型,这里以RNN为例),将输入数据压缩成一个固定长度的隐表示。然后使用另一个decoder模型依次展开隐表示得到我们需要的内容。
- 应用举例:
- 文本翻译
- 问答系统
- 但是这样是有问题的,就是当输入很长的时候,把他们都压缩到中,必然会导致数据特征的丢失。
attention机制
引用图片来自Google的《Attention is all you need》
-
核心思想:注意力机制是一组三元组<Q,K,V>,表示的是Quere(查询)和Key(键)的相似性程度。然后根据相似性的大小,赋予Value(值)的取值。
-
相似性的计算由很多种,主要有:
- 点乘:
- 余弦距离:(又名cosine相似性,更多关注了角度,而忽视了大小)
- 常用1: ,W是要学习的权值
- 常用2: ,将QK拼接在一起,W是要学习的权值
-
对相似性进行softmax后就是我们Attention的权值,再乘以对应的Value就是Attention的结果。(除以dk是文中的一种小技巧,与本文无关)
-
在很多情况下,我们的value就是我们的K(即得到的注意力权值乘以自己就是操作结果,换个说法就是对K进行了加权求和)
-
self-attention
- 当Q=V=K ,即三元组都相等时,叫做自我注意力。在google那篇文章里以此为基础做出了Transformer
- 当Q=V=K ,即三元组都相等时,叫做自我注意力。在google那篇文章里以此为基础做出了Transformer
附录:RNN/LSTM正相传播和BPTT推导
注意,公式中的梯度以某一时刻为例,若要计算某个参数的总梯度,只需要对不同时刻的梯度求和即可。此时要注意,靠后时间的梯度可以向前传播。