自用~~笔记~~~

李沐《动手学习深度学习》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相关推荐

  1. 深入理解注意力机制(Attention Mechanism)和Seq2Seq

    学习本部分默认大家对RNN神经网络已经深入理解了,这是基础,同时理解什么是时间序列,尤其RNN的常用展开形式进行画图,这个必须理解了. 这篇文章整理有关注意力机制(Attention Mechanis ...

  2. 注意力机制(Attention Mechanism)-ECANet

    引言 神经网络中的注意力机制(Attention Mechanism)是在计算能力有限的情况下,将计算资源分配给更重要的任务,同时解决信息超载问题的一种资源分配方案.在神经网络学习中,一般而言模型的参 ...

  3. 在RNN模型中引入注意力机制(Attention)

    此前的文章介绍过Seq2seq模型,并将其用于机器翻译.Seq2seq模型的一个问题在于随着输入句子越来越长,更早输入的单词就很大可能会被忘掉.于是,随着输入句子中单词数变多,翻译质量就会很快劣化.改 ...

  4. 注意力机制(Attention Mechanism)-SENet

    引言 神经网络中的注意力机制(Attention Mechanism)是在计算能力有限的情况下,将计算资源分配给更重要的任务,同时解决信息超载问题的一种资源分配方案.在神经网络学习中,一般而言模型的参 ...

  5. 深入理解深度学习——注意力机制(Attention Mechanism):带掩码的多头注意力(Masked Multi-head Attention)

    分类目录:<深入理解深度学习>总目录 相关文章: ·注意力机制(AttentionMechanism):基础知识 ·注意力机制(AttentionMechanism):注意力汇聚与Nada ...

  6. 深入理解深度学习——注意力机制(Attention Mechanism):注意力评分函数(Attention Scoring Function)

    分类目录:<深入理解深度学习>总目录 相关文章: ·注意力机制(AttentionMechanism):基础知识 ·注意力机制(AttentionMechanism):注意力汇聚与Nada ...

  7. 注意力机制~Attention Mechanism

    目录 背景 1. Attention Function 2. Scaled Dot-Product Attention 3. Multi-attention --> Q, K=V 4. self ...

  8. 深度学习【注意力机制(Attention)原理和实现】

    文章目录 一 Attention的原理和实现 1. Attention的介绍 2. Attenion的实现机制 2.1 Attention的实现过程 2.2 不同Attention的介绍 2.2.1 ...

  9. 注意力机制(Attention)

    注意力机制分类 包括软注意力机制(Soft Attention)和硬注意力机制(Hard Attention). 硬注意力机制指随机选择某个信息作为需要注意的目标,是一个随机过程,不方便用梯度反向传播 ...

  10. 注意力机制(attention)学习记录(二)

    前面曾经记录过注意力机制的学习过程,今天则是在学习的过程中对其有了其他的理解,便将其记录下来. Attention Model 概述 深度学习里的Attention model其实模拟的是人脑的注意力 ...

最新文章

  1. android 获取资源文件 r.drawable中的图片转换为drawable、bitmap
  2. Java高并发编程:同步工具类
  3. Android Studio实现简单的QQ应用
  4. 编译原理完整学习笔记(六):语义分析和中间代码生成
  5. How to make an app
  6. Window 平台下添加 tree 命令
  7. DOS窗口查找电脑端口占用情况
  8. Python分析《三国演义》中的社交网络
  9. 【Java】【MySnake】仿贪吃蛇小游戏开源代码(持续更新)
  10. Python爬虫-QQ音乐下载(详解)
  11. 写公众号一个月关注量破900,聊聊我的感受
  12. 【解题报告】openjudge Freda的越野跑 数据结构与算法mooc 内排序
  13. 西安80转2000坐标参数_ERDAS中自定义坐标系的方法(转自百度,仅供参考)
  14. lqc_使用SNAT、DNAT策略实现网关应用
  15. 直接修改Jar包class文件方法
  16. c语言做bs架构_BS架构技术方案 Technology
  17. java s1 s2 s3 s4_电源管理中的S0 S1 S2 S3 S4 S5
  18. Python 网络爬虫实战:采集《电影天堂》上万部动作片电影
  19. 孙溟㠭艺术欣赏——坤(云南)
  20. 假如马丁·路德·金是程序员,他的梦想将会是......

热门文章

  1. window.print()打印页面 宽度为1000
  2. 计算机学院的方阵口号,运动会开幕式各学院方阵口号
  3. 仿照网易云界面做的Flask网页音乐播放器(豪华版)
  4. 风电场人员定位解决方案分享
  5. 会声会影安装问题(安装完成无法打开显示停止运行)
  6. 高德离线地图TMS服务教程
  7. PHOTOSHOP MAC快捷键
  8. 数据库备份方案及容灾备份(Mysql,SqlServer,Oracle)
  9. vs studio2019解决下载慢的问题
  10. 体验有奖 | 3步玩转云原生数仓AnalyticDB MySQL电商行业数据分析场景