注意力机制(CH10)——attention
自用~~笔记~~~
李沐《动手学习深度学习》pytorch版第十章笔记。
1. 注意力提示
查询、键、值
注意力机制与全连接层或汇聚层的区分:“是否包含自主性提示”。
- 自主性提示成为:查询(query) (像目标是什么就是找什么)
- 给定任意查询,注意力机制通过注意力汇聚(attention pooling)将选择引导至感官输入(sensory inputs,例如中间特征表示)。感官输入:值(value)
- 每个值与键(key)配对。可以想象为感官输入的非自主提示。
如下图,设计注意力汇聚,以便给定的查询(自主性提示,query)与键(非自主性提示,key)匹配,引导得出最匹配的值(感官输入)。
所以:查询(query,自主提示)和键(key, 非自主提示)之间的交互形成了注意力汇聚,注意力汇聚有选择的聚合了值(value)以生成最终输出。
例如:仅当查询和键相同时,注意力权重为1,否则为0。
2. 注意力汇聚:Nadaraya-Watson 核回归
本节以核回归为例介绍注意力汇聚。
生成数据集
平均汇聚
非参数注意力汇聚
通用的注意力汇聚公式:
其中,x是查询,()是键值对。查询x 和键
之间关系建模为注意力权重。
越接近x那么分配给对应
的注意力权重越大。
将高斯核代入上式可得
在实验过程中:测试数据的输入相当于查询,而训练数据的输入相当于键。
带参数注意力汇聚
在下⾯的查询x和键xi之间的距离乘以可学习参数w:
3. 注意力评分函数
如上一部分,高斯核可以说为注意力评分函数,然后输出到softmax函数中,得到与键对应的值的概率分布即注意力权重。最后加权求和,注意力汇聚的输出就是基于这些注意力权重的值的加权和。
键k、查询q——>评分函数——>softmax——>注意力权重——>和值v加权平均——>输出
attention机制的本质:即是如下,它里面存储的数据按 <Key, Value> 存储。给定 Query,然后取出对应的内容。这里与一般的 hash 查询方式不同的是,每个地址都只取一部分内容,然后对所有的 Value 加权求和。
公式描述:
将上上图再画一遍,attention的计算可分为如下三个阶段:
阶段1:
阶段2: 注意力打分机制:
归一化的注意力概率分布
阶段3:
如前可知,选择不同的注意力评分函数会导致不同的注意力汇聚操作,接下来介绍几个评分函数。(下图中的score(h,H)就是上面的similarity(Q,K)和
这几个都一样。 )
掩蔽softmax操作
防止计算softmax过程中过滤掉超出指定范围的位置,可以指定一个有效序列长度。这叫掩蔽softmax操作(masked softmax operation),任何超出有效长度的位置都要被掩蔽为0。
import math
import torch
from torch import nn
from d2l import torch as d2ldef masked_softmax(X, valid_lens):"""通过在最后⼀个轴上掩蔽元素来执⾏softmax操作"""# X:3D张量,valid_lens:1D或2D张量if valid_lens is None:return nn.functional.softmax(X, dim=-1)else:shape = X.shapeif valid_lens.dim() == 1:valid_lens = torch.repeat_interleave(valid_lens, shape[1])else:valid_lens = valid_lens.reshape(-1)# 最后⼀轴上被掩蔽的元素使⽤⼀个⾮常⼤的负值替换,从⽽其softmax输出为0X = d2l.sequence_mask(X.reshape(-1, shape[-1]), valid_lens,value=-1e6)return nn.functional.softmax(X.reshape(shape), dim=-1)"""为了演⽰此函数是如何⼯作的,考虑由两个2 × 4矩阵表⽰的样本,这两个样本的有效⻓度分别为2和3。经过
掩蔽softmax操作,超出有效⻓度的值都被掩蔽为0"""
masked_softmax(torch.rand(2, 2, 4), torch.tensor([2, 3]))"""同样,我们也可以使⽤⼆维张量,为矩阵样本中的每⼀⾏指定有效⻓度。"""
masked_softmax(torch.rand(2, 2, 4), torch.tensor([[1, 3], [2, 4]]))
加性注意力
一般,查询q和键k是不同长度的矢量时,用加性注意力作为评分函数
可学习的参数是:W_{q} 、W_{k}和 w_{v}。将查询和键连结起来后输入到一个多层感知机里(MLP),感知器包含一个隐藏层,其隐藏单元数是一个超参数h。通过使用tanh作为激活函数,并且禁用偏置项。
2022.12.7 待补充
参考链接:
李沐课程书:https://zh-v2.d2l.ai
详解深度学习中的注意力机制(Attention) - 知乎
注意力机制(CH10)——attention相关推荐
- 深入理解注意力机制(Attention Mechanism)和Seq2Seq
学习本部分默认大家对RNN神经网络已经深入理解了,这是基础,同时理解什么是时间序列,尤其RNN的常用展开形式进行画图,这个必须理解了. 这篇文章整理有关注意力机制(Attention Mechanis ...
- 注意力机制(Attention Mechanism)-ECANet
引言 神经网络中的注意力机制(Attention Mechanism)是在计算能力有限的情况下,将计算资源分配给更重要的任务,同时解决信息超载问题的一种资源分配方案.在神经网络学习中,一般而言模型的参 ...
- 在RNN模型中引入注意力机制(Attention)
此前的文章介绍过Seq2seq模型,并将其用于机器翻译.Seq2seq模型的一个问题在于随着输入句子越来越长,更早输入的单词就很大可能会被忘掉.于是,随着输入句子中单词数变多,翻译质量就会很快劣化.改 ...
- 注意力机制(Attention Mechanism)-SENet
引言 神经网络中的注意力机制(Attention Mechanism)是在计算能力有限的情况下,将计算资源分配给更重要的任务,同时解决信息超载问题的一种资源分配方案.在神经网络学习中,一般而言模型的参 ...
- 深入理解深度学习——注意力机制(Attention Mechanism):带掩码的多头注意力(Masked Multi-head Attention)
分类目录:<深入理解深度学习>总目录 相关文章: ·注意力机制(AttentionMechanism):基础知识 ·注意力机制(AttentionMechanism):注意力汇聚与Nada ...
- 深入理解深度学习——注意力机制(Attention Mechanism):注意力评分函数(Attention Scoring Function)
分类目录:<深入理解深度学习>总目录 相关文章: ·注意力机制(AttentionMechanism):基础知识 ·注意力机制(AttentionMechanism):注意力汇聚与Nada ...
- 注意力机制~Attention Mechanism
目录 背景 1. Attention Function 2. Scaled Dot-Product Attention 3. Multi-attention --> Q, K=V 4. self ...
- 深度学习【注意力机制(Attention)原理和实现】
文章目录 一 Attention的原理和实现 1. Attention的介绍 2. Attenion的实现机制 2.1 Attention的实现过程 2.2 不同Attention的介绍 2.2.1 ...
- 注意力机制(Attention)
注意力机制分类 包括软注意力机制(Soft Attention)和硬注意力机制(Hard Attention). 硬注意力机制指随机选择某个信息作为需要注意的目标,是一个随机过程,不方便用梯度反向传播 ...
- 注意力机制(attention)学习记录(二)
前面曾经记录过注意力机制的学习过程,今天则是在学习的过程中对其有了其他的理解,便将其记录下来. Attention Model 概述 深度学习里的Attention model其实模拟的是人脑的注意力 ...
最新文章
- android 获取资源文件 r.drawable中的图片转换为drawable、bitmap
- Java高并发编程:同步工具类
- Android Studio实现简单的QQ应用
- 编译原理完整学习笔记(六):语义分析和中间代码生成
- How to make an app
- Window 平台下添加 tree 命令
- DOS窗口查找电脑端口占用情况
- Python分析《三国演义》中的社交网络
- 【Java】【MySnake】仿贪吃蛇小游戏开源代码(持续更新)
- Python爬虫-QQ音乐下载(详解)
- 写公众号一个月关注量破900,聊聊我的感受
- 【解题报告】openjudge Freda的越野跑 数据结构与算法mooc 内排序
- 西安80转2000坐标参数_ERDAS中自定义坐标系的方法(转自百度,仅供参考)
- lqc_使用SNAT、DNAT策略实现网关应用
- 直接修改Jar包class文件方法
- c语言做bs架构_BS架构技术方案 Technology
- java s1 s2 s3 s4_电源管理中的S0 S1 S2 S3 S4 S5
- Python 网络爬虫实战:采集《电影天堂》上万部动作片电影
- 孙溟㠭艺术欣赏——坤(云南)
- 假如马丁·路德·金是程序员,他的梦想将会是......