注意力机制 - 注意力提示
文章目录
- 注意力提示
- 1 - 生物学中的注意力提示
- 2 - 查询、键和值
- 3 - 注意力的可视化
- 4 - 小结
注意力提示
⾃经济学研究稀缺资源分配以来,我们正处在“注意⼒经济”时代,即⼈类的注意⼒被视为可以交换的、有限的、有价值的且稀缺的商品。许多商业模式也被开发出来去利⽤这⼀点:在⾳乐或视频流媒体服务上,我们要么消耗注意⼒在⼴告上,要么付钱来隐藏⼴告;为了在⽹络游戏世界的成⻓,我们要么消耗注意⼒在游戏战⽃中,从⽽帮助吸引新的玩家,要么付钱⽴即变得强⼤。总之,注意⼒不是免费的
注意⼒是稀缺的,⽽环境中的⼲扰注意⼒的信息却并不少。⽐如我们的视觉神经系统⼤约每秒收到108位的信息,这远远超过了⼤脑能够完全处理的⽔平。幸运的是,我们的祖先已经从经验(也称为数据)中认识到“并⾮感官的所有输⼊都是⼀样的”。在整个⼈类历史中,这种只将注意⼒引向感兴趣的⼀⼩部分信息的能⼒,使我们的⼤脑能够更明智地分配资源来⽣存、成⻓和社交,例如发现天敌、找寻⻝物和伴侣
1 - 生物学中的注意力提示
注意⼒是如何应⽤于视觉世界中的呢?我们从当今⼗分普及的双组件(two-component)的框架开始讲起:这个框架的出现可以追溯到19世纪90年代的威廉·詹姆斯,他被认为是“美国⼼理学之⽗”[James, 2007]。在这个框架中,受试者基于⾮⾃主性提⽰和⾃主性提⽰有选择地引导注意⼒的焦点
⾮⾃主性提⽰是基于环境中物体的突出性和易⻅性。想象⼀下,假如你⾯前有五个物品:⼀份报纸、⼀篇研究论⽂、⼀杯咖啡、⼀本笔记本和⼀本书,就像 图10.1.1。所有纸制品都是⿊⽩印刷的,但咖啡杯是红⾊的。换句话说,这个咖啡杯在这种视觉环境中是突出和显眼的,不由⾃主地引起⼈们的注意。所以你把视⼒最敏锐的地⽅放到咖啡上,如 图10.1.1所⽰
喝咖啡后,你会变得兴奋并想读书。所以你转过头,重新聚焦你的眼睛,然后看看书,就像 图10.1.2中描述那样。与 图10.1.1中由于突出性导致的选择不同,此时选择书是受到了认知和意识的控制,因此注意⼒在基于⾃主性提⽰去辅助选择时将更为谨慎。受试者的主观意愿推动,选择的⼒量也就更强⼤
2 - 查询、键和值
⾃主性的与⾮⾃主性的注意⼒提⽰解释了⼈类的注意⼒的⽅式,下⾯我们看看如何通过这两种注意⼒提⽰,⽤神经⽹络来设计注意⼒机制的框架
首先,考虑一个相对简单的状况,即只使用非自主性提示。要想将选择偏向于感官输入,我们可以简单地使用参数化的全连接层,甚至是非参数化的最大汇聚层或平均汇聚层
因此,“是否包含⾃主性提⽰”将注意⼒机制与全连接层或汇聚层区别开来。在注意力机制的背景下,我们将自主性提示称为查询(query)。给定任何查询,注意力机制通过注意力汇聚(attention pooling)将选择引导至感官输入(sensory inputs,例如中间特征表示)。在注意力机制中,这些感官输入被称为值(value)。更通俗的解释,每个值都与一个键(key)配对,这可以想象为感官输入的非自主提示。
如图10.1.3所示,我们可以设计注意力汇聚,以便给定的查询(自主性提示)可以与键(非自主性提示)进行匹配,将引导得出最匹配的值(感官输入)
3 - 注意力的可视化
平均汇聚层可以被视为输入的加权平均值,其中各输入的权重是一样的。实际上,注意力汇聚得到的是加权平均的总会值,其中权重是在给定的查询和不同的键之间计算得出的
import torch
from d2l import torch as d2l
为了可视化注意力权重,我们定义了show_heatmaps函数。其输入matrices的形状是(要显示的行数,要显示的列数,查询的数目,键的数目)
def show_heatmaps(matrices,xlabel,ylabel,titles=None,figsize=(2.5,2.5),cmap='Reds'):"""显示矩阵热图"""d2l.use_svg_display()num_rows,num_cols = matrices.shape[0],matrices.shape[1]fig,axes = d2l.plt.subplots(num_rows,num_cols,figsize=figsize,sharex=True,sharey=True,squeeze=False)for i,(row_axes,row_matrices) in enumerate(zip(axes,matrices)):for j,(ax,matrix) in enumerate(zip(row_axes,row_matrices)):pcm = ax.imshow(matrix.detach().numpy(),cmap=cmap)if i == num_rows - 1:ax.set_xlabel(xlabel)if j == 0:ax.set_ylabel(ylabel)if titles:ax.set_title(titles[j])fig.colorbar(pcm,ax=axes,shrink=0.6);
下面我们使用一个简单的例子进行演示,在本例中,仅当查询和键相同时,注意力权重为1,否则为0
attention_weights = torch.eye(10).reshape((1,1,10,10))
show_heatmaps(attention_weights,xlabel='Keys',ylabel='Queries')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FGAWDOcQ-1662988348423)(https://yingziimage.oss-cn-beijing.aliyuncs.com/img/202209122107898.svg)]
在后面的章节中,我们将经常调用show_heatmaps函数来显示注意力权重
4 - 小结
- 人类的注意力时有限的、有价值和稀缺的资源
- 受试者使用非自主性和自主性提示有选择性地引导注意力。前者基于突出性,后者则依赖于意识
- 注意力机制与全连接层或者汇聚层的区别源于增加的自主提示
- 由于包含了自主性提示,注意力机制与全连接的层或汇聚层不同
- 注意力机制通过注意力汇聚使选择偏向于值(感官输入),其中包含查询(自主性提示)和键(非自主性提示)。键和值是成对的
- 我们可以可视化查询和键之间的注意力权重
注意力机制 - 注意力提示相关推荐
- 注意力机制 - 注意力汇聚:Nadaraya-Watson核回归
文章目录 注意力汇聚:Nadaraya-Watson核回归 1 - 生成数据集 2 - 平均汇聚 3 - 非参数注意力汇聚 4 - 带参数注意力汇聚 批量矩阵乘法 定义模型 训练 5 - 小结 注意力 ...
- 注意力机制-深度学习中的注意力机制+注意力机制在自然语言处理中的应用
1 深度学习中的注意力机制 https://mp.weixin.qq.com/s?__biz=MzA4Mzc0NjkwNA==&mid=2650783542&idx=1&sn= ...
- 注意力机制(一):注意力提示、注意力汇聚、Nadaraya-Watson 核回归
专栏:神经网络复现目录 注意力机制 注意力机制(Attention Mechanism)是一种人工智能技术,它可以让神经网络在处理序列数据时,专注于关键信息的部分,同时忽略不重要的部分.在自然语言处理 ...
- 跟李沐学AI之注意力机制+transformer
注意力机制 注意力提示 注意力的可视化 注意力汇聚 平均汇聚 非参数注意力汇聚 带参数注意力汇聚 注意力评分函数 掩蔽softmax操作 加性注意力 缩放点积注意力 Bahdanau注意力 多头注意力 ...
- Transformer:注意力机制(attention)和自注意力机制(self-attention)的学习总结
目录 前言 1. 注意力机制 1.1非自主提示和自主提示 1.2 查询,键和值 1.3 注意力机制的公式 1.3.1 平均汇聚 1.3.2 非参数的注意力汇聚(Nadaraya-Watson核回归) ...
- Pytorch:Transformer(Encoder编码器-Decoder解码器、多头注意力机制、多头自注意力机制、掩码张量、前馈全连接层、规范化层、子层连接结构、pyitcast) part1
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...
- 深度残差收缩网络:借助注意力机制实现特征的软阈值化
作者 | 哈尔滨工业大学(威海)讲师 赵明航 本文解读了一种新的深度注意力算法,即深度残差收缩网络(Deep Residual Shrinkage Network). 从功能上讲,深度残差收缩网络是一 ...
- 【Pytorch神经网络理论篇】 20 神经网络中的注意力机制
注意力机制可以使神经网络忽略不重要的特征向量,而重点计算有用的特征向量.在抛去无用特征对拟合结果于扰的同时,又提升了运算速度. 1 注意力机制 所谓Attention机制,便是聚焦于局部信息的机制,比 ...
- 深度残差网络_注意力机制+软阈值化=深度残差收缩网络
顾名思义,深度残差收缩网络是由"残差网络"和"收缩"两部分所组成的,是在"残差网络"基础上的一种改进算法. 其中,残差网络在2016年斩获了 ...
最新文章
- 用思维导图做的求婚计划,哈哈哈
- Mysql中的增删改查操作
- web前端入门学习 css(8)(新增语义化标签、video/audio、新增input类型、新增表单属性、属性选择器、结构伪类选择器、伪元素选择器、css3盒子模型、模糊、calc函数、过渡
- java beans_java beans的概念及应用?
- 本机Ajax异步通信
- java 实现excel样式设置(居中、字体、大小、换行、合并行,列宽、指定特定字符串样式等)
- jquery ajax 调用webservice以及跨域问题
- 不使用资源文件动态创建对话框的做法
- c语言课程设计物业,C语言课程设计报告--物业管理系统.doc
- python递归汉诺塔详解_Python实现汉诺塔递归算法
- POJ 3764 Trie + 贪心
- c语言题 设圆的半径,C语言初学者:编程序:设圆半径r圆柱高h,求圆周长面积圆柱体积圆球表面积...
- angular8封装http服务
- 使用Unity3D制作Flappy Bird
- 念悠文化:微博运营怎么做?微博运营的几个方法
- python颜色填充代码_python中如何给图形填充颜色
- 用 Python 实现哈希算法检测重复图片
- Office办公 如何设置WPS的默认背景大小
- SSH机试顺丰搬家预约信息查询参考
- 所见即所得的php编辑,常用所见即所得HTML在线编辑器汇总(15个)