关于Attention机制
程序员文章站
2022-03-30 09:29:19
Attention机制,是根据目标给输入分配权重,并加权求和的操作。标准的输入为三部分,即Query, Key, Value。(下面简写为Q,K,V)标准的操作是根据Query和Key计算出一个score,并使用该score作为权重,对Value进行加权求和。即 step1, score = F(Q, K)step2, attention_weight = softmax(score)step3, output = sum(attention_weight * V)F是计算权重分数所使用的函数...
Attention机制,是根据目标给输入分配权重,并加权求和的操作。
标准的输入为三部分,即Query, Key, Value。(下面简写为Q,K,V)
标准的操作是根据Query和Key计算出一个score,并使用该score作为权重,对Value进行加权求和。
即 step1, score = F(Q, K)
step2, attention_weight = softmax(score)
step3, output = sum(attention_weight * V)
- F是计算权重分数所使用的函数,根据不同的F会实现不同的Attention。比如tf2里的attention layer就是Dot-product attention。
- 也可以使用Value作为Key,这样输入只需要Query和Value两部分。
- 当Query,Key,Value全部来自同一个输入时,即为Self-Attention。
- 当使用多个不同的F进行attention时,即为Multi-head attention。
下面以tf代码给出简单例子:
import tensorflow as tf
import numpy as np
# input as shape (batch_size, seq_len, embedding_size)
batch_size =10
seq_len = 20
embedding_size = 30
data = tf.constant(np.random.rand(batch_size, seq_len, embedding_size), dtype=tf.float32)
attlayer = tf.keras.layers.Attention()
out = attlayer([data, data])
print(out.shape)
# (10, 20, 30)
Reference:
[1] https://www.tensorflow.org/api_docs/python/tf/keras/layers/Attention
本文地址:https://blog.csdn.net/weixin_43378751/article/details/107156565