Attention机制学习

写在前面

注意力机制是一个很不错的科研创新点方向,但是没有系统记录过学习过程,这里记录科研中遇到的各种注意力机制。

1. Attention机制解释

本质上来说用到attention的任务都有Query,Key,Value三个关键components,目标则是输入query,然后根据query和key的关系以及key和value的关系求出最终的value。总结来说注意力机制可以分为三步:
1.输入Query;
2.计算Query和Key的注意力权重 α \alpha α ;
3.根据 α \alpha α来计算输入信息对Value的加权平均。

Attention机制流程(参考

1.1 Example - 根据腰围估计体重

参考视频,这个大佬up讲的非常好,值得大家去一键三连!


图1.1.1

如图1.1.1所示,这个例子是想通过输入一个腰围( q q q),得到最后的体重预测值( k k k)。每一个 k k k对应一个 v v v,但是 q q q要跟三个 k k k都有一个加权,如图1.1.2所示。

图1.1.2

其中, α ( q , k 1 ) \alpha(q, k_1) α(q,k1)这个就是注意力权重,代表着 q q q和 k 1 k_1 k1的相关性,也就是 q q q要在多大程度上参考 k 1 k_1 k1对应的 v 1 v_1 v1。 α ( q , k 1 ) \alpha(q, k_1) α(q,k1)的计算方式有很多,比如采用余弦距离、欧式距离、皮尔森等距离度量函数。但是需要注意的就是每一个注意力权重都是在经过距离函数计算之后,都要进行归一化处理。归一化处理的方式也很多,比如softmax处理。图三就是采用了欧式距离度量函数,并且采用softmax归一化处理,从而得到最终的注意力权重。

图1.1.3

现实中,我们的 q q q肯定大多是多维数据,但是计算的过程是一样的。比如说我们的 q q q不再仅包含一个腰围数据,我们还包括了胸围数据,那么这个注意力机制的计算过程就会变成如图1.1.4所示的形式。

图1.1.4
需要注意的是, k k k和 v v v不一定也要是二维的,这里up只是为了给后面的self-attention做铺垫,保持 q , k , v q,k,v q,k,v维度一致性才采用2维。图4也给出了3种计算多维数据的权重分数的计算方式。其中的点积模型和缩放点积模型计算方法需要保证 q q q和 k k k的维度是一致的,也就是self-attention中的注意力权重的计算方法。图1.1.5则给出了一个将 q , k , v q,k,v q,k,v矩阵化后采用缩放点积权重计算过程。

图1.1.5

2. 各种Attention机制

2.1 Self-Attention

自注意力机制是注意力机制的变体,他能够基于输入的数据来进行注意力机制的学习,减少了对外部的依赖,让模型更多地关注数据本身或特征的内部相关性。例如,在1.1的那个例子里头,把 Q , K , V Q,K,V Q,K,V都改成输入的 X X X。

图 2.1.1
然后采用缩放点积方式的计算则如下所示。

图 2.1.2

但是在实际应用中,我们往往会对 X X X映射到 Q , K , V Q,K,V Q,K,V的过程中做一个线性变换,比如大名鼎鼎的Transformer模型。

图 2.1.3 如图2.1.3所示,Transfomer通过引入三个可训练矩阵, 然后图2.1.2的公式就可以变成下式。

f ( X ) = s o f t m a x ( X W Q ( X W K / d ) T ) X W V f(X) = softmax(XW_Q(XW_K/\sqrt{d})^T)XW_V f(X)=softmax(XWQ(XWK/d )T)XWV

3. 问题归纳

3.1 为什么点积计算能代表向量间的相似性?

向量 A A A和 B B B的点积可以展开成下式:
A ⋅ B = ∣ A ∣ × ∣ B ∣ × c o s ( θ ) A·B=|A|\times|B|\times cos(\theta) A⋅B=∣A∣×∣B∣×cos(θ)

由上式可以看到, A A A和 B B B的相似度取决于模长和向量间的夹角。在DL中,用以计算点积之前,往往会对 A A A和 B B B进行L2等归一化操作,让 ∣ A ∣ |A| ∣A∣和 ∣ B ∣ |B| ∣B∣等于1或者处于一个较小的范围。这时候 A A A和 B B B的相似度就取决于向量夹角了。那可能会有疑问为什么不直接计算cos余弦相似度呢?因为向量点积的计算速度是最快的,虽然可能存在误差,但是也算是用误差换时间了。

To be continued...

相关推荐
QQ3957533237几秒前
金融量化交易:技术突破与模型优化
人工智能·金融
-一杯为品-2 分钟前
【51单片机】程序实验5&6.独立按键-矩阵按键
c语言·笔记·学习·51单片机·硬件工程
The_Ticker13 分钟前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
Elastic 中国社区官方博客19 分钟前
Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
jwolf219 分钟前
摸一下elasticsearch8的AI能力:语义搜索/vector向量搜索案例
人工智能·搜索引擎
有Li28 分钟前
跨视角差异-依赖网络用于体积医学图像分割|文献速递-生成式模型与transformer在医学影像中的应用
人工智能·计算机视觉
新加坡内哥谈技术1 小时前
Mistral推出“Le Chat”,对标ChatGPT
人工智能·chatgpt
风尚云网1 小时前
风尚云网前端学习:一个简易前端新手友好的HTML5页面布局与样式设计
前端·css·学习·html·html5·风尚云网
GOTXX1 小时前
基于Opencv的图像处理软件
图像处理·人工智能·深度学习·opencv·卷积神经网络
IT古董1 小时前
【人工智能】Python在机器学习与人工智能中的应用
开发语言·人工智能·python·机器学习