深度学习:注意力机制(Attention Mechanism)

注意力机制详解 注意力机制详解Attention机制由来Attention定义Encoder-Decoder框架存在问题:Attenion机制的引入Attention机制的类别Hard AttentionSoft AttentionGlobal AttentionLocal AttentionSelf AttentionMulti-head Attention附录—Transformer全局视角Tensor视角Encoder部分Self-AttentionSelf-Attention向量计算Self-Attention的矩 阅读详情
AI摘要

本文介绍了注意力机制在深度学习,尤其是NLP和计算机视觉中的关键作用,包括其基本原理、在自然语言处理和计算机视觉任务中的应用,以及如何通过Encoder-Decoder框架实现。重点讨论了加性模型、点积模型和双线性模型在注意力计算中的区别。

1 注意力机制概述

1.1 定义

注意力机制(Attention Mechanism)是深度学习领域中的一种重要技术,特别是在序列模型如自然语言处理(NLP)和计算机视觉中。它使模型能够聚焦于输入数据的重要部分,从而提高整体性能和效率。

1.2 基本原理

  • 聚焦关键信息: 注意力机制模仿人类的注意力过程,使模型能夠集中处理输入数据中的关键信息,同时忽略不太相关的部分。

  • 权重分配: 通过为输入数据的不同部分分配不同的权重(或注意力分数),模型能够识别最重要的信息。

1.3 应用领域

  • 自然语言处理(NLP): 在机器翻译、文本摘要、情感分析等任务中,注意力机制帮助模型关注文本的关键部分。

  • 计算机视觉: 在图像分类、目标检测和图像字幕生成等任务中,注意力机制使模型能够专注于图像的关键区域。

  • 语音识别: 注意力机制帮助模型关注语音信号的重要部分,提高语音识别的准确性。

1.4 优势

  • 提高性能: 通过集中处理重要信息,注意力机制可以提高模型的准确性和效率。

  • 提供可解释性: 注意力权重可以用来解释模型的决策过程,增加模型的透明度。

  • 灵活性强: 可以与多种模型结构结合,如循环神经网络(RNN)、卷积神经网络(CNN)和Transformer。

2 注意力机制分析

2.1 Encoder-Decoder框架

下面基于Encoder-Decoder框架对注意力机制深入分析,Encoder-Decoder框架的原理如下:

对于句子对<source,target>:

编码器对输入source进行编码,转换成中间语义向量C:

 

对于解码器Decoder,根据中间语义向量C和当前已生成的历史信息来生成下一时刻要生成的单词:

 

基本的Encoder-Decoder框架没有体现出注意力机制

把Decoder生成拆开来看:

f是非线性变换函数,在生成目标单词时,使用的语义向量C都是一样的,所以,source中任意单词对某个单词y_i来说,影响力都是相同的。

如果输入句子比较短,对于输出影响不是很大,但如果输入句子很长,这时所有的语义都通过一个语义向量C来表示,单词自身的信息会消失,很多细节信息会被丢失,最终的输出也会受到影响,所以要引入注意力机制。

2.2 经典注意力机制

在机器翻译中,比如输入source为Tom chase Jerry。输出想得到中文:汤姆 追逐 杰瑞。在翻译Jerry这个单词时,在普通Encoder-Decoder模型中,source里的每个单词对“杰瑞”贡献是相同的,但这样明显和实际不是很相符,在翻译“杰瑞”的时候,我们更关注的应该是"Jerry",对于另外两个单词,关注的会少一些。

引入Attention模型后,在生成“杰瑞“的时候,会体现出输入source的不同影响程度,比如:

每个概率代表了翻译当前单词“杰瑞”时注意力分配模型分配给不同英文单词的注意力大小。

在注意力机制中,对于target中每个单词都有一个对应source中单词的注意力概率。

由于注意力模型的加入,原来在生成target单词时候的中间语义C就不再是固定的,而是会根据注意力概率变化的C_{i},加入了注意力模型的Encoder-Decoder框架如下:

 生成target的过程就变成了如下形式:

每个C_i可能对应着不同的注意力分配概率分布,比如对于上面的英汉翻译来说,其对应的信息可能如下:

其中,f_2表示Encoder对输入英文单词的某种变换函数, 比如如果Encoder是用RNN模型的话,这个f_2函数的结果往往是某个时刻输入后隐层节点的状态值。g代表Encoder根据单词的中间表示合成整个句子中间语义表示的变换函数,一般g函数就是对构成元素的加权求和:

 

 其中,L_x代表输入句子Source的长度,a_i_j代表在Target输出第i个单词时,Source输入第j个单词的注意力分配系数;h_{ij}代表Source输入句子中第j个单词的语义编码。举例输出汤姆如下:

2.3 注意力分布

注意力分布α就是判断什么信息重要,什么信息不重要,分别赋予不同的权重。

如何计算α:

用X表示输入当输入 N 个向量 :[x1,...,xN],想要从中选出对于目标而言比较重要的信息,需要引入目标任务的表示,称为 查询向量(query vector),此时问题可以转换为考察输入的不同内容和查询向量之间的相关度,也就是对不同内容进行打分,赋予 与当前任务比较相关的部分 更大的权重,再通过一个softmax层得到分布,也就是输入信息的不同部分的权重。

注意力变量z∈[1, N]来表示被选择信息的索引位置,即z=i来表示选择了第i个输入信息,然后计算在给定了q和X的情况下,选择第i个输入信息的概率αi:

其中αi构成的概率向量就称为注意力分布(Attention Distribution)。s(xi , q)是注意力打分函数,有以下几种形式:

其中W、U和v是可学习的网络参数,d是输入信息的维度

加性模型引入了可学习的参数,将查询向量 q 和原始输入向量 h 映射到不同的向量空间后进行计算打分,显然相较于加性模型,点积模型具有更好的计算效率。

另外,当输入向量的维度比较高的时候,点积模型通常有比较大的方差,从而导致Softmax函数的梯度会比较小。因此缩放点积模型通过除以一个平方根项来平滑分数数值,也相当于平滑最终的注意力分布,缓解这个问题。

最后,双线性模型可以重塑为s(hi,q)=h^TWq=h^T(U^TV)q=(Uh)^T(Vq),即分别对查询向量 q 和原始输入向量 h 进行线性变换之后,再计算点积。相比点积模型,双线性模型在计算相似度时引入了非对称性。

形象表示打分函数:

如果Encoder-Decoder都采用RNN,框架如下:

那计算注意力分布概率值的过程如下:

h_i表示Source中单词 j 对应的隐层节点状态,H_i表示Target中单词 i 的隐层节点状态,注意力计算的是Target中单词 i 对Source中每个单词对齐可能性F(h_i,H_{i-1}),即打分函数。

 计算α,不只是编码器的隐藏状态作为输入,解码器的隐藏状态也要作为输入

可以结合下图理解:

2.4 加权分布 

对于软性注意力机制,就是每一个输入按各自权重加权平均,即把每个编码器隐状态xi 和对应的注意力分布相乘求和

用图像形象表示:

求和之和算出来的就是引入注意力机制的语义向量C_i,再将其输入到解码器中。

结合下图理解:

 这样Decoder的最终输出就会有选择性地关注应该关注的地方。

注意力机制(Attention Mechanism) 在当今的人工智能(AI)和机器学习(ML)领域,一个关键且日益受到重视的概念是“注意力机制”(Attention Mechanism)。这个概念源自于我们对人类大脑如何处理信息的理解,特别是在面对海量数据时,如何有效地筛选出关键信息。注意力机制在AI中的运用,类似于人类在观看一幅画作或阅读一篇文章时的注意力分配。我们的大脑天然就会被某些特定的信息所吸引,从而忽略掉其他较不重要的部分。这个机制使我们能够在复杂的环境中高效地处理信息,专注于最关键的部分。 阅读详情

相关推荐

深度学习——Squeeze-and-Excitation Networks

CVPR2018原论文:Squeeze-and-Excitation Networks 开源代码(caffe框架):https://github.com/hujie-frank/SENet 1.主要内容:提出了“Squeeze-and Excitation” (SE) block。SE模块能够根据卷积通道之间的相互依赖关系增强网络的特征表现能力,称为特征重校正。 ...

weixin_51352656的博客 862

【经典论文译读】Attention Is All You Need

主流的序列转换模型基于复杂的循环或卷积神经网络,这些网络包含编码器和解码器。性能最优的模型还通过注意力机制将编码器与解码器连接起来。我们提出了一种新的简单网络架构——Transformer,其完全基于注意力机制,彻底摒弃了循环和卷积操作。在两项机器翻译任务上的实验表明,这些模型不仅质量更优,而且具有更强的并行计算能力,训练所需时间也明显减少。我们的模型在 WMT 2014 英德翻译任务中取得了 28.4 的 BLEU 分数,相比现有最佳结果(包括集成模型)提升了超过 2 个 BLEU 值。

技术改变世界 4万+

深度学习模型--注意力机制(Attention Mechanism)

注意力机制(Attention Mechanism)是深度学习领域中的一种重要技术,最初在自然语言处理(NLP)任务中被提出和应用,如机器翻译、文本摘要等。

Amy_bj的博客 956

深度学习之注意力机制(Attention Mechanism)和Seq2Seq

这篇文章整理有关注意力机制(Attention Mechanism )的知识,主要涉及以下几点内容: 1、注意力机制是为了解决什么问题而提出来的? 2、软性注意力机制的数学原理; 3、软性注意力机制、Encoder-Decoder框架与Seq2Seq 4、自注意力模型的原理。 一、注意力机制可以解决什么问题? 神经网络中的注意力机制(Attention Mechanis...

weixin_30485291的博客 6601

I2S时序及音频驱动

I2S、音频驱动

qq_41882586的博客 3948

从MySQL到数据仓库:手把手教你用Airflow实现自动化ETL流水线

本文详细介绍了如何利用Airflow构建从MySQL到数据仓库的自动化ETL流水线,涵盖增量抽取策略、PySpark转换优化和数据质量监控等实战细节。特别适合中小规模企业构建高效数据仓库,提升数据处理效率和质量。

rnn9storyteller的博客 829

[Deep Learning] 计算机视觉中的注意力机制 Attention mechanism

最近想要往网络里面加一些注意力机制的模块,从网上整理了一些资料,了解一下attention mechanism. 什么是Attention机制? 没有找到attention的准确定义,但是我理解的注意力机制是这样的: 当我们在看一个东西时,我们会把我们的注意力集中在某些部位,忽略其他部位,比如我们看见一个人的脸的时候,我们最关注的可能是他的眼睛,其次是他的鼻子。所以说,我们对于目标物体不同的部分分...

thunder_k的博客 2708

TI理想二极管在冗余电源中应用实例

深入探讨理想二极管如何提升冗余电源系统的效率与可靠性,通过实际应用案例展示其在电流隔离和自动切换中的优势,帮助工程师优化电源架构设计。

weixin_30653091的博客 991

深度学习:注意力机制(Attention Mechanism)

深入理解注意力机制:从人类认知到深度学习注意力机制(Attention Mechanism)是深度学习中一种模仿人类视觉和认知系统工作方式的技术。就像人类在观察复杂场景时会聚焦于重要部分而忽略次要信息一样,注意力机制让神经网络能够有选择地关注输入数据中最相关的部分。1.1 人类注意力类比想象你在阅读一篇文章时:• 你不会同时关注所有单词• 你会聚焦于关键词和重要句子• 根据上下文动态调整关注点• 忽略不相关的细节这正是注意力机制在神经网络中实现的功能!2.1 基本概念。

AI 音频小牛的博客 3119

告别Keil,在Windows上用VSCode + arm-none-eabi-gcc + Makefile搭建国产MCU开发环境(附JLink配置避坑)

本文详细介绍了如何在Windows上使用VSCode、arm-none-eabi-gcc和Makefile搭建国产MCU开发环境,替代传统的Keil和IAR。内容涵盖工具链配置、工程结构设计、Makefile编写、VSCode集成调试以及高效开发工作流,特别针对国产MCU如复旦微FM33系列提供了优化方案和避坑指南。

weixin_28729205的博客 435

添加odbc数据源时的一些问题和解决办法

pl/sql

Mr_Syh的博客 9644

一文彻底搞懂深度学习:注意力机制(Attention Mechanism)

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

star_nwe的博客 4万+

【用unity实现100个游戏之18】从零开始制作一个类CSGO/CS2、CF第一人称FPS射击游戏——基础篇1(附项目源码)

生存和射击游戏一直是我的最爱,说起3D最普遍的应该就是射击系统了,你可以在任何情况下加入射击功能,所以我写下了这篇FPS开发记录。希望对你有帮助。在这个项目中,你将学习如何设计和实现射击系统、武器系统、玩家控制、场景设计等方面的内容。通过这个项目,你将深入了解游戏开发中的许多核心概念和技术,并且在实践中不断提升自己。本项目将带你从零开始逐步实现一个完整的第一人称射击游戏,并且会逐步引入一些高级功能,如特效、声音等。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 5500

深度学习--注意力机制Attention Mechanism

注意力机制学习

QSHHH_的博客 1217

利用baostock获取上市公司财务指标

利用baostock获取上市公司的财务指标 1、导入模块,登录baostock import baostock as bs import pandas as pd import time # 登陆系统 lg = bs.login() # 显示登陆返回信息 print('login respond error_code:'+lg.error_code) print('login respond error_msg:'+lg.error_msg) 2、查询股票代码、行业板块 # 查询股票代码 rs=.

firefox_yau的博客 2099

麻辣香锅病毒分析

Spicy Hot Pot浏览器劫持病毒(麻辣香锅病毒)从2020年初被安全公司监测到,因其病毒模块带有MLXG_KM被安全行业代称麻辣香锅病毒。目前通过各种激活工具传播, 包括暴风激活、小马激活和KMS激活等诸多工具,疑似与下载站进行合作推广此类激活工具。Spicy Hot Pot 是一个浏览器劫持 Rootkit,它会将用户的主页更改为指向恶意软件操作员控制的页面,此外还会将内存转储从机器上传到预定义的服务器,并结合本地更新功能以确保其保持更新。通常浏览器劫持者会通过更改用户主页的恶意可执行文件或注册表

不忘初心,护天下安全! 4791

深度学习---注意力机制(Attention Mechanism)

**注意力机制**是深度学习中模拟人类注意力选择能力的关键技术,旨在从海量信息中筛选关键特征,解决长序列信息处理中的瓶颈问题(如RNN的梯度消失)。其核心思想是:对输入序列的不同部分分配不同权重,聚焦重要信息,抑制无关内容

MzKyle的博客 4126

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

深入理解深度学习——注意力机制(Attention Mechanism):自注意力(Self-attention)

想象一下,有了注意力机制之后,我们将词元序列输入注意力池化中, 以便同一组词元同时充当查询、键和值。具体来说,将比较的是卷积神经网络、循环神经网络和自注意力这几个架构的计算复杂性、顺序操作和最大路径长度。请注意,顺序操作会妨碍并行计算,而任意的序列位置组合之间的路径越短,则能更轻松地学习序列中的远距离依赖关系。总而言之,卷积神经网络和自注意力都拥有并行计算的优势, 而且自注意力的最大路径长度最短。但是因为其计算复杂度是关于序列长度的二次方,所以在很长的序列中计算会非常慢。而在自注意力中,查询、键和值都是。

冯·诺依曼 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

一文彻底搞懂深度学习 - 注意力机制(Attention Mechanism)

在深度学习中,注意力机制模仿了人类在处理信息时的选择性关注能力,允许模型在处理输入数据时动态地调整其注意力权重,从而突出重要信息并忽略不重要的信息。注意力机制通过计算查询向量(Query)、键向量(Key)之间的相似度来确定注意力权重,然后对值向量(Value)进行加权求和,得到最终的输出。Attention Mechanism一、注意力机制什么是注意力机制(Attention Mechanism)?注意力机制是一种允许模型在处理信息时专注于关键部分,忽略不相关信息,从而提高处理效率和准确性的机制。它模仿了

m0_59164304的博客 3352

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

深入理解深度学习——注意力机制(Attention Mechanism):基础知识

自主性的与非自主性的注意力提示解释了人类的注意力的方式, 下面来看看如何通过这两种注意力提示, 用神经网络来设计注意力机制的框架,首先,考虑一个相对简单的状况, 即只使用非自主性提示。如下图所示,可以通过设计注意力汇聚的方式, 便于给定的查询(自主性提示)与键(非自主性提示)进行匹配, 这将引导得出最匹配的值(感官输入)。注意力机制要从当今十分普及的双组件(Two-component)的框架开始讲起: 这个框架的出现可以追溯到19世纪90年代的威廉·詹姆斯, 他被认为是“美国心理学之父”。

冯·诺依曼 1万+

深入理解深度学习——注意力机制(Attention Mechanism):Bahdanau注意力

在为给定文本序列生成手写的挑战中, Graves设计了一种可微注意力模型, 将文本字符与更长的笔迹对齐, 其中对齐方式仅向一个方向移动。在预测词元时,如果不是所有输入词元都相关,模型将仅对齐(或参与)输入序列中与当前预测相关的部分。具体来说,循环神经网络编码器将长度可变的序列转换为固定形状的上下文变量, 然后循环神经网络解码器根据生成的词元和上下文变量按词元生成输出(目标)序列词元。然而,即使并非所有输入(源)词元都对解码某个词元都有用, 在每个解码步骤中仍使用编码相同的上下文变量。

冯·诺依曼 1万+

深入理解深度学习——注意力机制(Attention Mechanism):位置编码(Positional Encoding)

在处理词元序列时,循环神经网络是逐个的重复地处理词元的,而自注意力则因为并行计算而放弃了顺序操作。为了使用序列的顺序信息,通过在输入表示中添加位置编码(Positional Encoding)来注入绝对的或相对的位置信息。位置编码可以通过学习得到也可以直接固定得到。接下来描述的是基于正弦函数和余弦函数的固定位置编码。假设输入表示X∈Rn×d包含一个序列中n个词元的d维嵌入表示。位置编码使用相同形状的位置嵌入矩阵P∈Rn×d输出XP, 矩阵第i行、第2j列和2j1。

冯·诺依曼 1万+
上一篇: AI并行计算:CUDA和ROCm
下一篇: CLiB中文大模型能力评测榜单
源启智能
博客等级 码龄20年 3万+粉丝 285原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源启智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值