欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于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