深度学习| 注意力机制

注意力机制

  • 为什么需要注意力机制
    • Seq2Seq问题
    • Transfomer
  • Attention注意力机制
  • 分类
    • 软硬注意力
    • 注意力域

为什么需要注意力机制

这个可以从NLP的Seq2Seq问题来慢慢理解。

Seq2Seq问题

Seq2Seq(Sequence to Sequence):早期很多模型中,样本特征维度通常都是一致的。但是在机器翻译中,输入和输出的长度都是不固定的,例如输入英文“school”会输出中文“学校”,输入一个单词却输出两个汉字。如何解决这种输入输出特征维度可变的情况,并可以把一个序列直接转换到另一个序列,这就是Seq2Seq要解决的问题。

经典的Seq2Seq模型:使用的是两个循环神经网络(Recurrent Neural Network,RNN),下面是其的Encoder-Decoder结构图。编码器将输入序列转换为一个固定长度的向量表示,解码器将该向量转换为长度不固定的输出序列。

在这里插入图片描述

Encoder部分是一个多输入单输出的RNN结构,把词向量x依次输入到Encoder,隐藏神经元A输入是由当前输入x和上一个隐藏神经元的输出组成,最后输出最后一个隐藏神经元的输出作为Decoder的输入。这样的Encoder结构可以模拟人类的阅读顺序去读取序列化数据,只保留最后一个隐藏状态,相当于将把整个序列浓缩在了一起。

Decoder结构和Encoder结构几乎是一样的,不同的地方在于输入的x是前面的结果。如果是训练阶段那么输入的x就是前面输出的label(标准答案),如果是测试阶段那么输入的 x ∗ x^* x就是前面输出的结果。这样Decoder结构也可以模拟人类说话的顺序,输出不同长度的序列。
在这里插入图片描述
存在的问题:当使用RNN处理长文本序列的时候,会出现两个问题。首先,第一个问题就是其顺序结构导致无法捕捉长序列上下文信息。Decoder做预测非常依赖于Encoder最后的输出,但是如果句子过长,Encoder最后的输出状态会忘记前面的句子内容,也就是信息丢失。第二个问题就是并行处理序列困难。因为RNN的内部循环结构,所以只能顺序处理序列,无法对序列整体进行并行计算。

补充:Seq2Seq是一个端到端(end-to-end)的网络模型,所谓的端到端神经网络是指能够直接从原始数据中提取特征并输出最终结果的模型,不需要显式地进行手动特征提取或分步骤处理。

Transfomer

Transfomer:Transfomer的核心就是Attention注意力机制,在RNN的Encoder-Decoder基础上加入了注意力机制,能实现长序列的并行处理,从而来解决前面提到RNN的两个问题。

为什么能解决RNN处理长文本序列的问题:加入Attention注意力机制后的Seq2Seq模型,不会忘记原始输入句子信息,而且Decoder也能够知道句子中哪些词比较重要,但是会增加额外的计算量。

应用:除了前面提到的自然语言处理(Natural Language Processing,NLP),Transfomer还在计算机视觉(Computer Vision,CV)中也有所应用。卷积神经网络(Convolutional Neural Network,CNN)作为计算机视觉领域中一个热门的研究方向,非常擅长特征提取,但是其更关注局部的信息。CNN的核心是卷积,而Transformer的核心是自注意力机制。自注意力机制允许模型从图像中任意位置获取信息,更好地处理长距离依赖关系。而CNN则需要在多层卷积之后,才能将图片中距离比较远的像素点关联起来。

Attention注意力机制

Attention介绍:就是模仿人的注意力机制设计,人看到一个东西,会把注意力放在需要关注的地方,把其它无关的信息过滤掉。下面的图是人类看到图片注意力热力图。
在这里插入图片描述

Attention原理:在Seq2Seq模型介绍的时候,会发现Encoder只会把最后一个隐藏状态输出,对于前面隐藏状态全部都舍弃了,而Attention做得就是把舍弃掉的隐藏信息给利用起来。在Seq2Seq举的翻译例子中,把“Hellow world”翻译为“哈喽世界”,“Hellow”对“哈”、“喽”、“世”和“界”每个字的贡献都是一致,但是实际上“Hellow”应该对“哈”和“喽”的贡献要多些,而对“世”和“界”的贡献要少些。如何分配这些贡献程度并得到合适的向量传递给Decoder,这就是Attention要实现的,主要是用在Encoder部分。

Attention机制
Attention机制的核心就是QKV。

Q(Query):Query包含了读者的问题的信息。
K(Key):Key与Value相关联,Key是原始信息所对应的关键性信息,相当于对原始信息做了某种转换得到的词向量。
V(Value):Value理解为原始捕捉到的信息,不受到任何注意力的干扰。

计算步骤:

  • Query和Key进行相似度计算,得到Attention Score。
  • 对Attention Score进行Softmax归一化,得到权值矩阵,相当于每个贡献程度。
  • 权重矩阵与Value进行加权求和计算。

看过一个比较好的比喻,可以把Attention过程比作我们在浏览器搜索文章的过程。
Value相当于浏览器里面所有的文章,Key相当于每个文章对应的标题,标题是从文章张提炼的,而Query相当于我们输入到浏览器中的问题。Attention搜索过后,就会对每个文章和问题匹配度进行一个得分,来对原来的文章筛查。
总结QKV:Query相当于问题,Value相当于一组答案,Key相当于该答案所对应问题的关键字

分类

软硬注意力

软注意力(Soft Attention):加权图像的每个像素。 高相关性区域乘以较大的权重,而低相关性区域标记为较小的权重。注意力模块相对于输入是可微的,所以通过标准的反向传播方法进行训练。
大多数软注意力模块都不会改变输出尺寸,从而可以很灵活的插入到卷积网络的各个部分。但会增加训练参数,从而导致计算成本有所提高。

硬注意力(Hard Attention):一次选择一个图像的一个区域作为注意力,设成1,其他设为0。通常是不可微的,硬注意力相对软注意力更难训练,不能反向传播,但是可以借助如强化学习的手段去学习。

注意力域

注意力机制中的模型结构分为三大注意力域来分析。
主要是:空间域(spatial domain),通道域(channel domain),混合域(mixed domain)。

  • 空间域:将图片中的的空间域信息做对应的空间变换,从而能将关键的信息提取出来。对空间进行掩码的生成,进行打分,代表是Spatial Attention Module。
  • 通道域:类似于给每个通道上的信号都增加一个权重,来代表该通道与关键信息的相关度的话,这个权重越大,则表示相关度越高。对通道生成掩码mask,进行打分,代表是SEnet, Channel Attention Module。
  • 混合域:空间域的注意力是忽略了通道域中的信息,将每个通道中的图片特征同等处理,这种做法会将空间域变换方法局限在原始图片特征提取阶段,应用在神经网络层其他层的可解释性不强。代表主要是BAM(Bottleneck Attention Module)和CBAM(Convolutional Block Attention Module)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/828398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据赋能(67)——概念:数据变现

数据变现是指通过某种方式将数据转化为实际的收益或绩效。数据变现的方式多种多样,可以根据不同的应用场景和业务需求进行选择和组合。 数据变现的主要方式如下: 数据销售与租赁 组织直接出售原始数据或经过处理、整合后的数据给需要的组织或个人。组织…

Redis分布式锁 - 基于Jedis和LUA的分布式锁

先基于单机模式,基于Jedis手工造轮子实现自己的分布式锁。 首先看两个命令: Redis 分布式锁机制,主要借助 setnx 和 expire 两个命令完成。 setnx命令: setnx 是 set if not exists 的简写。将 key 的值设为 value ,当且仅当…

uniapp问题归类

最近使用uniapp中,遇到了一些问题,这边mark下。 1. 启动页变形 设置启动页的时候发现在部分android手机上启动页被拉伸了,最后看了下官方建议使用9.png图 生成9.png地址,推荐图片大小为1080x2340 uniapp推荐官方地址传送门 我…

【Linux驱动层】iTOP-RK3568学习之路(四):杂项设备驱动框架

一、杂项设备驱动简介 在 Linux 中,把无法归类的五花八门的设备定义成杂项设备。相较于字符设备,杂项设备有以下两个优点: (1)节省主设备号:杂项设备的主设备号固定为 10,而字符设备不管是动态分配还是静态分配设备号,都会消耗一…

【leetcode面试经典150题】71. 对称二叉树(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

Golang | Leetcode Golang题解之第48题旋转图像

题目&#xff1a; 题解&#xff1a; func rotate(matrix [][]int) {n : len(matrix)// 水平翻转for i : 0; i < n/2; i {matrix[i], matrix[n-1-i] matrix[n-1-i], matrix[i]}// 主对角线翻转for i : 0; i < n; i {for j : 0; j < i; j {matrix[i][j], matrix[j][i]…

Nuxt3项目如何通过开启ssr让网页实现seo自由!

nuxt.config开启ssr # nuxt.config.tsexport default defineNuxtConfig({// 是否开启SSRssr: true }) 终端运行 npm run generate generate 预渲染应用程序的每个路由&#xff0c;并将结果存储为纯HTML文件。 "scripts": {"generate": "nuxt genera…

【Git教程】(十七)发行版交付 — 概述及使用要求,执行过程及其实现,替代解决方案 ~

Git教程 发行版交付 1️⃣ 概述2️⃣ 使用要求3️⃣ 执行过程及其实现3.1 预备阶段&#xff1a;创建 stable 分支3.2 预备并创建发行版3.3 创建补丁 4️⃣ 替代解决方案 对于每个项目或产品来说&#xff0c;发布版本的创建都需要一定的时间&#xff0c;其具体过程因各公司或组…

C++ Qt QMainWindow实现无边框窗口自定义标题栏可拖拽移动拉伸改变窗口大小

本篇博客介绍C Qt QMainWindow实现无边框窗口&#xff0c;适用于win10/win11系统。 QMainWindow相对于QWidget多了dockedwidget功能&#xff0c;跟多人可能更喜欢用QMainWindow做主窗口&#xff0c;如果不需要dockedwidget功能&#xff0c;QMainWindow与QWidget做主窗口基本无…

MATLAB实现蚁群算法栅格路径优化

蚁群算法是一种模拟自然界中蚂蚁觅食行为的优化算法&#xff0c;常用于解决路径规划问题。在栅格路径优化中&#xff0c;蚁群算法可以帮助找到从起点到终点的最优路径。以下是蚁群算法栅格路径优化的基本流程步骤&#xff1a; 初始化参数&#xff1a; (1)设置蚂蚁数量&#xff…

linux的“>”和“>>”

在Linux中&#xff0c;>和>>都是用于文件重定向的操作符&#xff0c;它们用于将命令的输出发送到文件中。 > 用于创建一个新文件或覆盖现有文件的内容。当你执行一个如 command > file.txt 的命令时&#xff0c;如果 file.txt 文件存在&#xff0c;它的内容将被…

2024最新版JavaScript逆向爬虫教程-------基础篇之深入JavaScript运行原理以及内存管理

目录 一、JavaScript运行原理1.1 前端需要掌握的三大技术1.2 为什么要学习JavaScript1.3 浏览器的工作原理1.4 浏览器的内核1.5 浏览器渲染过程1.6 认识JavaScript引擎1.7 V8引擎以及JavaScript的执行过程1.8 V8引擎执行过程 二、JavaScript的执行过程2.1 初始化全局对象2.2 执…

OriginPro作图之箱线图

前言 箱线图(Box-plot) 又称为盒须图、盒式图或箱线图&#xff0c;是一种用作显示一组数据分散情况资料的统计图。因型状如箱子而得名。 本文将结合实例阐述其意义和绘图过程。 箱线图简介 箱线图(Boxplot) 也称箱须图( Box-whisker Plot)&#xff0c;是利用数据中的五个统计量…

ffmpeg的安装以及使用

1.FFmpeg 的主要功能和特性&#xff1a; 格式转换&#xff1a;FFmpeg 可以将一个媒体文件从一种格式转换为另一种格式&#xff0c;支持几乎所有常见的音频和视频格式&#xff0c;包括 MP4、AVI、MKV、MOV、FLV、MP3、AAC 等。视频处理&#xff1a;FFmpeg 可以进行视频编码、解…

ArcGIS无法开始编辑TIN!开始编辑TIN显示灰色

ArcGIS无法开始编辑TIN&#xff01;开始编辑TIN显示灰色&#xff1f; 解决方案&#xff01; 1、确认自定义——扩展模块中空间分析、3D分析模块勾选。 2、确认以上后&#xff0c;还是不能编辑的话&#xff0c;我们可以调出 3D分析分析工具条&#xff0c;你就会发现。TIN编辑工…

Window + Ubuntu 双系统无Ubuntu Bios 启动项

文章目录 安装硬盘位置不重要&#xff01;&#xff01;&#xff01;&#xff08;但是我安装在了第二张HDD&#xff09;问题是多盘分位置会导致磁盘主分区变成了简单卷 Bios Ubuntu 启动项修复参考Ubuntu安装U盘进入Try Ubuntu 使用Terminal修复完提示Disable Secure Boot进入Te…

【存储】cosbench对象存储测试工具

目录 简略说明 原理 用法 详细说明 简介 用法 一 安装 二 简单验证 三 编写配置文件 四 提交配置文件下IO 五 测试结果查看 结果概览 查看详情 每秒钟的io情况查看 工作负载配置 参数配置&#xff08;controller和driver&#xff09; 查看错误的方法和错误记录 查看错误的方法 …

【匹配】匈牙利匹配算法

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 匈牙利匹配算法 1. 正文 1.1 基础概念 二分图 顶点分为两个集合&#xff0c;集合间顶点相连&#xff0c;集合内点不相连 匹配 一个匹配就是一个边的…

Oracle Linux 8.8 一键安装 Oracle 11GR2 RAC(231017)

前言 Oracle 一键安装脚本&#xff0c;演示 Oracle Linux 8.8 一键安装 Oracle 11GR2 RAC&#xff08;231017&#xff09;过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&…

代理IP干货:如何正确使用防范风险?

在今天的数字时代&#xff0c;代理IP地址已成为互联网世界中不可或缺的一部分。无论您是寻求绕过地理限制、保护个人隐私还是执行网络任务&#xff0c;代理IP地址都发挥着关键作用。我们将为您探讨代理IP地址的重要性以及如何防范潜在的风险和威胁。 一、代理IP地址的潜在风险 …