【深度学习常见问题——Attention基础知识梳理】

2023-11-06

1. 注意力机制计算

注意力机制的计算公式如下:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V) = softmax(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk QKT)V
其基本流程为:将query和key之间两两计算相似度,依据相似度对各个value进行加权;
在这里插入图片描述
在这里,要求Q与K的单个向量是等长的,对这两个向量计算内积,也就是余弦相似度,如果两个向量正交,则内积为0,也就是不相关;反之,如果相关,则二者内积就会很大。
其中,key与query的计算方式不同,决定了这是什么类型的注意力机制。上述为scaled dot-product机制(有加性注意力和乘性注意力)。

2. d k \sqrt{d_k} dk 的意义

由于相似度计算时,如果计算用的向量维度比较长,则计算的值的绝对大小差距会很大,Softmax之后可能会出现有的值极度趋近1,其余值极度趋近0的情况。这会导致梯度比较小,不利于网络的训练。

3. Multi-Head作用

在这里插入图片描述
主要的动机在于:
1)乘性注意力中,没有可学习的参数;
2)用单头注意力获得一个高维向量(512),不如用多头注意力获得多个低维向量(64/32等)效果好,有些类似于CNN中的多通道数;
因此多头注意力主要进行了如下操作:
1)利用多组可学习的参数矩阵 W q , W k , W v W^q, W^k, W^v Wq,Wk,Wv,将 Q , K , V Q,K,V Q,K,V映射成低维向量;
2)对多组低维 Q , K , V Q,K,V Q,K,V向量进行注意力计算,得到多组注意力结果;
3)将多组注意力结果concat成高维向量并通过MLP,最后输出;

4. 位置编码

注意力机制本身不支持时序运算,所以将各个元素打乱会得到一样的注意力结果。为了增加时序信息,添加了余弦位置编码:
在这里插入图片描述
利用余弦编码的优势在于:
1)通过正余弦的取值,保证不同位置编码的唯一性
2)将位置向量的大小限制在 [ − 1 , 1 ] [-1,1] [1,1]之间,有利于网络收敛

5. Encoder与Decoder

在这里插入图片描述

二者的主要区别在于:
1)Encoder中只利用的自注意力和MLP,而Decoder还用到了互注意力模块;
2)Encoder的自注意力是不需要mask的,而Decoder的自注意力需要掩膜进行时序上的推理

6. LayerNorm

在这里插入图片描述

BatchNorm主要是对当前batch里的每个特征(通道)进行归一化操作,而LayerNorm主要是对一个样本本身进行归一化操作。
BN与LN的差异主要在计算均值和方差的时候体现:
1) 对于BN:句子本身可能是不等长的,对于特征做归一化,有些位置的特征可能是空缺的,就导致每个batch计算的均值、方差波动比较大,而且如果实际推理时出现一个之前从未出现过的超长向量,可能对应位置没有预先计算好的均值、方差
2.)对于LN:由于是对样本进行的归一化计算,则会避免上述波动大、推理训练无法对齐等问题

7. Self-attention与Cross-attention

在这里插入图片描述
自注意力:key, value, query来源均相同
互注意力:query与key, value来源不同

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【深度学习常见问题——Attention基础知识梳理】 的相关文章

随机推荐

  • EduCoder_web实训作业--交互元素

    第一关 A C B A B 第二关
  • 重装Ubuntu18.04双系统

    重装Ubuntu18 04双系统 1 检查电脑设备 2 Ubuntu18 04 下载 3 下载UltraISO 3 1 win10遇到无法连接虚拟磁盘服务解决方法 4 安装Ubuntu系统 1 检查电脑设备 https www cnblog
  • RSA的数学运算步骤

    原创文章 绝非抄袭 叙述一下我学了很久的一个RSA公钥加密 很多地方在用的一种安全的加密方法 以前只知道那种老式电报的加密 两边各拿一个对照表 什么数字对什么字 倒是很好理解 算是对称加密 在学校的时候就讨论过很长时间的公钥加密 一直理解不
  • Huffman-哈夫曼编码算法详解

    1 概述 背景 哈夫曼编码是广泛地用于数据文件压缩的十分有效的编码方法 其压缩率通常在20 90 之间 哈夫曼编码算法用字符在文件中出现的频率表来建立一 个用0 1串表示各字符的最优表示方式 给出现频率高的字符较短的编码 出现频率较低的字符
  • Linux系统之ifconfig命令的基本使用

    Linux系统之ifconfig命令的基本使用 一 ifconfig命令介绍 1 ifconfig简介 2 ifconfig注意事项 3 ifconfig命令特点 二 ifconfig命令的使用方法 1 查看ifconfig的帮助信息 2
  • LeetCode 之 剑指 Offer 11. 旋转数组的最小数字(Java)

    文章目录 LeetCode 之 剑指 Offer 11 旋转数组的最小数字 Java 一 题目 二 解题思路 三 代码 LeetCode 之 剑指 Offer 11 旋转数组的最小数字 Java 一 题目 剑指 Offer 11 旋转数组的
  • 机器视觉之霍夫变换提取直线

    机器视觉之霍夫变换提取直线 import cv2 as cv import numpy as np img cv imread home local EUROPRO guoliang wang OpenCV opencv samples d
  • 使用Visual Studio Profiler分析程序性能

    Profiler 是 Visual Studio 中集成的性能分析工具 它主要用于分析程序中所有函数调用所占的耗费时间 它提供了Sample和Instrumentation两种检测方式 能够生成简洁易读的报告 它只适用于Team Suit版
  • 怎样修改linux时区

    怎样修改linux时区 如果你的 Linux 系统时区配置不正确 必需要手动调整到正确的当地时区 NTP 对时间的同步处理只计算当地时间与 UTC 时间的偏移量 因此配置一个 NTP 对时间进行同步并不能解决时区不正确的问题 所以大家在用了
  • vue项目,ie11 浏览器报 Promise 未定义的错误

    报错 description Promise 未定义 message Promise 未定义 name ReferenceEr number 2146823279 stack ReferenceEr 解决办法 1 npm install b
  • AIDL实现跨APP通信(双向通信)

    某天 接到了一人任务要在两个app互相传递一些消息 上网查了以后发现有几种方式 第一是广播 第二是AIDL 由于初出茅庐全不会就选择了AIDL 下面简单粗暴的开始贴代码好了 也是得到了网上的一些借鉴 若有雷同 嗯你懂的 1 我们需要先建立A
  • SVN出现:原始内容“XXXX“不存在

    缘由 偶然一次在工作期间 策划的svn出现了 原始内容 XXXX 不存在 的提示 无论是用清理 还是还原都无效 由于是第一次遇到所以记录一下解决过程 分析 从提示上看大致可知是某个文件不存在了 估计是异常操作svn导致一些文件丢失 据网上资
  • Python中的for循环

    Python中的for循环 在Python编程语言中 for循环是一种常用的迭代结构 用于遍历可迭代对象 iterable 它允许我们按照指定的方式重复执行一系列操作 直到满足退出条件 在本文中 我们将详细介绍for循环的使用方式 并提供相
  • 快速排序的优化及其与qsort的比较

    快速排序是用的最多的一种排序方法 编程珠玑 在第十一章 排序 中讨论了快速排序的几个版本 其实版本的不同 都是体现在partition函数上 partition版本1 其实就是 算法导论 给出的版本 很好理解 int partition1
  • 在main函数实现两个数的输入并用函数实现两个数的值相换(两种方法实现)

    在main函数实现两个数的输入并用函数实现两个数的值相换 1 方法一 void f int x int y 定义 声明函数 int t 临时变量 t x x y y t 关于汉诺塔这个是最简单的算法 include
  • python lambda函数排序_python笔记-lambda函数、sorted函数、map函数

    1 lambda函数 又称匿名函数 示例如下 def f x return x 2 print f 4 16 g lambda x x 2 print g 4 16 2 map函数 print map lambda x x 2 range
  • 分布式任务调度(XXL-JOB)

    什么是分布式任务调度 任务调度顾名思义 就是对任务的调度 它是指系统为了完成特定业务 基于给定时间点 给定时间间隔或者给定执行次数自动执行任务 通常任务调度的程序是集成在应用中的 比如 优惠卷服务中包括了定时发放优惠卷的的调度程序 结算服务
  • 减小android button的大小

    当我们仅需要按钮的大小恰当包裹其中文本的大小 尽可能减小多余的空白空间 第一种方式 我们可以直接设置button属性 minHeight和minWidth android minHeight 0dp android minWidth 0dp
  • 工业通信网络结构

    工业通信网络结构 工业通信网络包含所谓的工业现场总线 局域网 公网等概念 这些概念在物理环境下并不是界线分明的 是一种主观上的分类 在物理环境下 目前工业网络结构都是设备与双绞线之间的通信 可以互相通信的设备与双绞线的集合称为网络 当网络中
  • 【深度学习常见问题——Attention基础知识梳理】

    这里写目录标题 1 注意力机制计算 2 d k sqrt d k dk