计算机视觉与深度学习-循环神经网络与注意力机制-Attention(注意力机制)-【北邮鲁鹏】
目录
- 引出Attention
- 定义
- Attention-based model
- 通俗解释
- 应用在图像领域
- 图像字幕生成(image caption generation)
- 视频处理
序列到序列学习:输入和输出都是长度不同的序列
引出Attention
传统的机器翻译是,将“机器学习”四个字都学习之后,拿着最后一个编码的信息去进行翻译。但是有个问题,就是在进行翻译的时候,“学习”两个字对“机器”翻译成“machine”并没有什么帮助。我们希望在进行前两个字翻译的时候,包含的学习的信息只有“机器”这两个字。

就是很多时候,特别当序列很长很长的时候,最后一个总编码,里面可能把前面信息都丢掉了,如果我有一些注意力机制的时候,我在翻译不同的词的时候,用这序列里面不同的位置的那些不同的位置的字,那可能信息翻译的准确度就会更高一些。
定义
注意力机制(Attention Mechanism)是一种用于增强神经网络模型在处理序列数据时的能力的技术。它在序列到序列(Sequence-to-Sequence)任务中特别常见,如机器翻译、语音识别和摘要生成等任务。
在传统的序列模型中,模型会对整个输入序列进行编码,然后使用编码的固定长度向量进行解码。然而,这种固定长度向量无法充分表示长序列中的所有信息,尤其是对于较长的输入序列,容易出现信息丢失或模糊的问题。
注意力机制通过在解码过程中动态选择性地聚焦(focus)输入序列的特定部分,使模型能够根据输入序列的不同部分调整其关注和权重分配。它允许模型根据当前解码步骤的需要,动态地分配不同的注意力或权重给输入序列的不同位置,以捕捉关键信息。
一般而言,注意力机制包含以下几个关键组成部分:
-
查询(Query):在解码过程中,当前的解码器状态会被用作查询向量,表示当前要生成的目标序列的部分。
-
键(Keys)和值(Values):输入序列经过编码器后得到的键和值。键和值的数量与输入序列的长度相同。
-
注意力权重(Attention Weights):通过计算查询向量与每个输入序列位置的关联程度,得到对应的注意力权重。注意力权重表示了解码器在解码时应该关注输入序列中的哪些部分。
-
上下文向量(Context Vector):将注意力权重与值进行加权求和,得到一个上下文向量。上下文向量是对输入序列的加权汇总,用于提供给解码器更丰富的信息。
注意力机制的引入使模型能够根据输入序列的不同部分调整其关注和重要性,从而提升模型的表现能力。它在序列任务中广泛应用,并取得了显著的效果改进。
Attention-based model
基于注意力机制的模型(Attention-based model)是一种神经网络架构,通常采用编码器-解码器(Encoder-Decoder)框架。编码器负责处理输入序列,并生成表示输入信息的隐藏状态或嵌入向量。解码器根据编码器的表示和先前生成的标记,生成输出序列。
注意力机制使解码器能够动态地聚焦输入序列的不同部分,根据当前解码步骤自适应地选择性地关注相关信息。这使得模型能够有选择地关注输入序列的重要部分,为解码器提供更丰富的上下文信息。
以下是基于注意力机制的模型的高级概述:
-
编码器:输入序列经过编码器网络处理,可以是循环神经网络(RNN)、卷积神经网络(CNN)或Transformer。编码器将输入序列转化为隐藏状态或嵌入向量,捕捉输入信息。
-
解码器:解码器网络以编码器的隐藏状态或嵌入向量为输入,并生成输出序列。在每个解码步骤中,解码器使用注意力机制关注输入序列的不同部分,以确定最相关的信息。
-
注意力计算:注意力机制计算注意力权重,表示每个输入位置对当前解码步骤的重要性或相关性。注意力权重是根据解码器的隐藏状态和编码器的隐藏状态计算得出的。
-
上下文向量:利用注意力权重对编码器的隐藏状态进行加权求和,得到上下文向量。上下文向量提供给解码器一个对输入序列相关部分的汇总表示。
-
解码和下一个标记生成:上下文向量、解码器的隐藏状态和先前生成的标记一起,用于生成输出序列中的下一个标记。这个过程迭代地重复,直到生成完整的输出序列。
假设我们存在一个可学习的向量,叫做 z 0 z^0 z0,还是机器学习这四个字,我希望翻译“machine”,我希望这个单词里面就是“机”和“器”,这两个的特征。希望他两个特征作为我的输入。则使用 z 0 z^0 z0和这四个字的向量 h 1 , h 2 , h 3 , h 4 h^1,h^2,h^3,h^4 h1,h2,h3,h4进行匹配。然后输出一个 0 − 1 0 - 1 0−1的实数。

到我们真实做的时候,我们就直接算点乘,这个z向量,跟这个h向量,点乘,完了后得到一个值。

z 0 z^0 z0与四个h向量点乘后,得到四个值。然后使用softmax进行概率化,这四个数值概率化后总和为一,我们希望这个总和以后得到这样一组权重。这四个权值分别拿来跟四个字的向量进行相乘,我的总向量就是由权值和他对应的编码相乘。
因此在翻译“machine”的时候,特征里面只包含 h 1 , h 2 h^1,h^2 h1,h2。
同理,再把 z 1 z^1 z1拿出来,跟四个h向量进行点乘,也能得到一组权值。

因此在翻译“learning”的时候,特征里面只包含 h 3 , h 4 h^3,h^4 h3,h4。

当然最后这个在这种预测任务里面 ,还是要加一个终止符。
就输入来说, c 0 c^0 c0和 c 1 c^1 c1就跟我们原来不一样,原来是把混合到最后一个时刻的都拿出来 ,现在不一样,最后一个时刻确实是包含着前面时刻,但是我不光用最后一个时刻,我还用前面这时刻的,只用attation了以后,我这个时候就更注重前面时刻的信息。
注重在我关注的哪个点。我就注重哪个点的信息
通俗解释
当我们处理信息时,往往需要选择性地关注某些部分而忽略其他部分。类比于人类的注意力,注意力机制就是一种模拟人类关注力的技术。
想象一下,当你在听某个人说话时,你会将注意力集中在他们的声音和表情上,而忽略其他背景噪音或其他人的讲话。这种集中注意力的能力使你能够更好地理解他们说的话并作出适当的回应。
在计算机模型中,注意力机制的作用类似。当模型处理序列数据时,比如一句话或一段文本,注意力机制能够帮助模型选择性地关注输入序列的不同部分,根据当前任务的需要给予不同部分不同的重要性。
具体而言,注意力机制通过计算每个输入位置与当前处理步骤的关联程度,得到对应的权重。这些权重表示了模型在解决当前问题时应该关注输入序列的哪些部分。根据这些权重,模型可以动态地调整对输入序列不同位置的关注程度,以捕捉到关键的信息。
注意力机制的好处是它能够帮助模型更好地处理长序列或复杂的信息。通过集中关注重要的部分,模型能够更准确地理解输入并做出更好的预测或生成结果。
应用在图像领域
图像字幕生成(image caption generation)

这一段文字产生可以用时序的,但是这个地方的这个特征,图像用cnn,可能提到一个特征,那时候这两个东西连接不到一起去 。使用attention机制。比如women这个单词,这个里面想跟图像的存在women这块区域有关,而跟其他那些地方没关。
怎么实现呢 ?
我们把图像打成六个区块或者八个或者16个或者24个或者64个区块,每个区块去提取一个特征,把这些特征按位置放起来 ,就得到了也是一个时序的东西。

有了时序,使用 z 0 z^0 z0跟这个可以做match,match完了以后。z0跟这个所有特征做match得到一个权重。然后这个权重,就是由这些特征每个不同的图像位置的权重跟他的特征累加起来的。 然后去预测第一个单词

那反过来,第一个单词通过这几个权重,就能看出来这第一个单词跟图像的位置有关系
同理 z 1 z^1 z1继续进行match后预测

通过看这个单词看到的权重,就知道这个单词跟哪个区域相关。

当然权重不是只有一或者零,有的地方亮就是表示跟他相关度高,这暗的地方表示相关度低。
飞盘已经能知道,这个单词是靠图像的亮这块区域做的决定,狗是靠图像的这块区域做的
还有一些错误的,翻译都翻译错的了。

视频处理
把图像的一个视频序列,把图像的每一帧当做一个特征,每一帧是提取10个特征。
当把这个时间序列和这个语言序列,跟我的这个图像的时间序列就做对齐的时候,就做这种注意力相关的时候,发现单词和视频的某些帧有对应。

相关文章:
计算机视觉与深度学习-循环神经网络与注意力机制-Attention(注意力机制)-【北邮鲁鹏】
目录 引出Attention定义Attention-based model通俗解释应用在图像领域图像字幕生成(image caption generation)视频处理 序列到序列学习:输入和输出都是长度不同的序列 引出Attention 传统的机器翻译是,将“机器学习”四个字都学…...
Centos7安装wps无法打开及字体缺失的问题解决
在centos7上安装了最新的wps2019版本的wps-office-11.1.0.11704-1.x86_64.rpm,生成了桌面图标并信任,可以新建文件,但是软件无法打开。在终端执行如下命令,用命令行启动wps: cd /opt/kingsoft/wps-office/office6/ ./…...
华为OD机试真题-会议接待-2023年OD统一考试(B卷)
题目描述: 某组织举行会议,来了多个代表团同时到达,接待处只有一辆汽车,可以同时接待多个代表团,为了提高车辆利用率,请帮接待员计算可以坐满车的接待方案,输出方案数量。 约束: 1、一个团只能上一辆车,并且代表团人数(代表团数量小于30,每个代表团人数小于30)小于…...
mysql explain学习记录
参考了公司内相关博客,实践并记录下,为后面分析并优化索引做准备。 MySQL explain命令是查看MySQL查询优化器如何执行查询的主要方法,可以很好的分析SQL语句的执行情况。 每当遇到执行慢(在业务角度)的SQL,…...
电压放大电路的作用有哪些(电压放大器)
电压放大电路是电子电路中常见且重要的组件,其主要作用是将输入信号的电压放大到所需的输出电压级别,并保持输入信号的形状和准确度。电压放大电路广泛应用于各种电子设备和系统中,具有以下几个重要的作用: 信号放大:电…...
编译opencv-3.4.5 [交叉编译]
在unbuntu20.04环境下编译opencv3.4.5, cmake 版本:3.27.4 gcc 版本:11.4.0 g版本:11.4.0 在此环境下编译opencv4.5.4正常。 1. 编译时遇到的问题 (1) Built target libprotobuf make: *** [Makefile:163…...
Canal 实现MySQL与Elasticsearch7数据同步
1 工作原理 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump协议 MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal ) canal 解析 binary log 对象(原始为 byte 流) 优点&…...
网络安全攻防对抗之隐藏通信隧道技术整理
完成内网信息收集工作后,渗透测试人员需要判断流量是否出得去、进得来。隐藏通信隧道技术常用于在访问受限的网络环境中追踪数据流向和在非受信任的网络中实现安全的数据传输。 一、隐藏通信隧道基础知识 (一)隐藏通信隧道概述 一般的网络通…...
读书笔记:多Transformer的双向编码器表示法(Bert)-2
多Transformer的双向编码器表示法 Bidirectional Encoder Representations from Transformers,即Bert; 第2章 了解Bert模型(掩码语言模型构建和下句预测) 文本嵌入模型Bert,在许多自然语言处理任务上表现优秀&#…...
Python 基于PyCharm断点调试
视频版教程 Python3零基础7天入门实战视频教程 PyCharm Debug(断点调试)可以帮助开发者在代码运行时进行实时的调试和错误排查,提高代码开发效率和代码质量。 准备一段代码 def add(num1, num2):return num1 num2if __name__ __main__:f…...
spring security auth2.0实现
OAuth 2.0 的认证/授权流程 jwt只是认证中的一步 4中角色 资源拥有者(resource owner)、客户端(client 第三方)、授权服务器(authorization server)和资源服务器(resource server)。…...
MySQL(6)LOCK和MVCC
一、锁的分类 按照锁的属性:读锁、写锁、共享锁、排它锁、悲观锁、乐观锁 按照锁的范围:表锁、页锁、间隙锁、临键锁、行锁 按照锁的作用:意向锁、意向共享锁、意向排它锁、IS锁、IX锁 二、MySQL为什么要有锁 锁是计算机协调多个进程或线程并…...
最新IDE流行度最新排名(每月更新)
2023年09月IDE流行度最新排名 顶级IDE排名是通过分析在谷歌上搜索IDE下载页面的频率而创建的 一个IDE被搜索的次数越多,这个IDE就被认为越受欢迎。原始数据来自谷歌Trends 如果您相信集体智慧,Top IDE索引可以帮助您决定在软件开发项目中使用哪个IDE …...
I2C的上拉电阻如何计算?
说明: 1、本文只说明I2C上拉电阻的最小值如何计算。 2、I2C最小值和最大值计算的详细原理可以参考这篇文章:https://mp.weixin.qq.com/s/ZvJJ0rPRd_STULj8g1H81A。 3、I2C最小值的计算方式比较简单,在实际应用中计算出最小值,然后…...
Centos下安装 oracle11g 博客2
[oraclewangmengyuan database]$ ./runInstaller -silent -responseFile /home/oracle/database/response/db_install.rsp -ignorePrereq ./runInstaller -silent -responseFile /home/oracle/database/response/db_install.rsp -ignorePrereq 正在启动 Oracle Universal Insta…...
记一次逆向某医院挂号软件的经历
背景 最近家里娃需要挂专家号的儿保,奈何专家号实在过于抢手,身为程序员的我也没有其他的社会资源渠道可以去弄个号,只能发挥自己的技术力量来解决这个问题了。 出师不利 首先把应用安装到我已经 Root 过的 Pixel 3 上面,点击应…...
Canal实现Mysql数据同步至Redis、Elasticsearch
文章目录 1.Canal简介1.1 MySQL主备复制原理1.2 canal工作原理 2.开启MySQL Binlog3.安装Canal3.1 下载Canal3.2 修改配置文件3.3 启动和关闭 4.SpringCloud集成Canal4.1 Canal数据结构是支持IPv4的路由协议,为了让OSPF协议支持IPv6,技术人员开发了OSPFv3(OSPF版本3)。 无论是OSPFv2还是OSPFv…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
