深度学习(5)---自注意力机制

文章目录

  • 1. 输入与输出
  • 2. Self-attention
    • 2.1 介绍
    • 2.2 运作过程
    • 2.3 矩阵相乘理解运作过程
  • 3. 位置编码
  • 4. Truncated Self-attention
    • 4.1 概述
    • 4.2 和CNN对比
    • 4.3 和RNN对比


1. 输入与输出

 1. 一般情况下在简单模型中我们输入一个向量,输出结果可能是一个数值或者一个类别。但是在复杂的模型中我们一般会输入一组向量,那么输出结果可能是一组数值或一组类别。

在这里插入图片描述

 2. 一句话、一段语音、一张图等都可以转换成一组向量。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

 3. 输入一组向量,一般输出结果有3种情况:(1) N对N;(2) N对1;(3) N对M。我们这里着重讲第1种。
:Seq2Seq(Sequence to Sequence,序列到序列模型)是循环神经网络模型的变种,包括编码器(Encoder)和解码器(Decoder)两部分。Seq2Seq模型是输出的长度不确定时采用的模型,这种情况一般是在机器翻译的任务中出现,将一句中文翻译成英文,那么这句英文的长度有可能会比中文短,也有可能会比中文长,所以输出的长度就不确定了。

在这里插入图片描述

2. Self-attention

2.1 介绍

 1. 有时候我们输入转化后的一组向量之间会有关联。比如 “I saw a saw-----我看见一把锯子” 这句话,对于传统的模型,可能会将第一个 saw 和第二个 saw 输出相同的结果,但事实上两个 saw 是完全不一样的意义,第一个 saw 意思是"看见",而第二个 saw 意思是"锯子"。

 2. 所以出现了自注意力机制(Self-attention)模型来解决上述这个问题。对于输入 Seg 中向量不确定多的情况,Self-attention会考虑所有向量。Self-attention的输入是一组向量,输出也是一组向量,但考虑了整个 Seq 产生的。

在这里插入图片描述

 3. 当然,Self-attention也可以使用多次。:其实Self-attention是Transformer模型中的关键组件。

在这里插入图片描述

2.2 运作过程

 1. Self-attention对于每一个的输出结果都是综合考虑了所有的输入。我们接下来以输入 a 1 a^1 a1 输出 b 1 b^1 b1 为例来讲解,其他的过程类似。

在这里插入图片描述

 2. 步骤(1):对于输入向量 a 1 a^1 a1,Self-attention首先会判断向量 a 1 a^1 a1 与其他向量的关联性。对两个向量的关联程度,Self-attention会给出一个数值 α α α
 求关联性 α α α 的方法很多。比如点积法:将两个向量分别乘以权重矩阵,再进行点积;点积和相加法:将两个向量分别乘以权重矩阵,结果进行相加后再与权重矩阵进行点积。:我们常用下面图片中左边的方法。

在这里插入图片描述

在这里插入图片描述

 3. 步骤(2):计算出每个的关联性 α α α,再用 s o f t m a x softmax softmax 函数得到 α ′ α' α:这里不一定用 s o f t m a x softmax softmax 函数,也可以用其他的激活函数。

在这里插入图片描述

在这里插入图片描述

 4. 步骤(3):然后再将所有向量 v ∗ α v * α vα,再求和得到 b b b

在这里插入图片描述

 5. 类似的,得到 b 2 b^2 b2 也是一样的过程。

在这里插入图片描述

2.3 矩阵相乘理解运作过程

在这里插入图片描述

在这里插入图片描述

3. 位置编码

 1. 在人类的语言中,单词的位置与顺序定义了语法,也影响着语义。无法捕获的单词顺序会导致我们很难理解一句话的含义,如下图所示。

在这里插入图片描述

在这里插入图片描述

 2. 我们知道自注意力机制是Transformer模型中的关键组件,但是Transformer中的自注意力机制无法捕捉输入元素序列的顺序。因此我们需要一种方法将单词的顺序合并到Transformer架构中,于是位置编码应运而生。

 3. 目前,主流的位置编码方法主要分为绝对位置编码与相对位置编码两大类。其中绝对位置编码的作用方式是告知Transformer架构每个元素在输入序列中的位置,类似于为输入序列的每个元素打一个 “位置标签” 标明其绝对位置。而相对位置编码则是作用于自注意力机制,告知Transformer架构两两元素之间的距离。如下图所示。

在这里插入图片描述

 4. 由于相对位置编码作用于自注意力机制,所以我们这里介绍一下相对位置编码。相对位置编码中,一般我们会在一组输入向量中的每个位置加一个位置向量 e e e,然后把 e e e 加到 a a a 上。

在这里插入图片描述

4. Truncated Self-attention

4.1 概述

 1. Truncated Self-attention(缩减的自注意力机制)只看自己和前后一个向量之间的attention。
 计算方法:只计算矩阵中蓝色部分值,其余灰色的不用计算(填0)。
 问题:相当于只关联sequence中相邻的token,失去了Attention的全局性,和CNN的效果就比较相似了,只有局部感受野。

在这里插入图片描述

 2. 例如对于长序列的语音问题,转换成输入向量后数量很大,这个时候我们可以只取一小段范围。 因为有时候关注一小段范围就可以得到我们想要的输出结果。

在这里插入图片描述

4.2 和CNN对比

 自注意力机制和CNN在处理图像问题时,有一些显著的区别。
 CNN,即卷积神经网络,可以看作是简化版的自注意力机制。在CNN中,每个神经元只考虑一个感受野里的信息,而感受野的大小和范围是人工设定的。然而,自注意力机制考虑整张图片的信息,相当于每个神经元自动学习如何确定其感受野。在自注意力机制中,感受野是通过注意力机制算法自动学出来的。

 具体来说,自注意力机制中,模型会用attention机制去找出相关的像素;而在CNN中,每个神经元只考虑一个固定感受野里的像素。此外,在处理大量数据时,自注意力机制表现得更好,而在训练数据较少时,CNN表现得更好。

 总的来说,自注意力机制和CNN在处理图像问题时各有优势。自注意力机制能够更好地处理大量数据,而CNN在处理少量数据时表现较好。在实际应用中,需要根据具体任务和数据量来选择使用哪种模型。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.3 和RNN对比

 自注意力机制和RNN(循环神经网络)在自然语言处理和其他序列处理任务中都有广泛应用,但它们之间存在一些关键区别。
 (1) 上下文处理:RNN在处理序列时,通常按照顺序逐个处理输入元素,因此其对于上下文的处理主要依赖于之前的隐藏状态。这意味着RNN在处理当前元素时,只能考虑到该元素之前的上下文信息。相比之下,自注意力机制能够同时处理整个序列,直接关联并考虑所有的上下文信息,而不仅仅局限于当前元素之前的部分。

 (2) 并行计算:由于RNN的顺序处理特性,其计算通常是顺序进行的,这限制了其并行计算的能力。而自注意力机制的计算可以并行进行,因为所有的输入元素都是同时处理的,这有助于提高计算效率。

 (3) 输入顺序:RNN对输入序列的顺序是敏感的,因为顺序的改变会影响隐藏状态的计算。而自注意力机制本身对输入序列的顺序是不敏感的,因为其在计算注意力权重时并不考虑元素的位置信息。然而,为了在需要的情况下捕捉序列的顺序信息,可以在自注意力机制中引入位置编码。

 (4) 长期依赖问题:RNN在处理长序列时,可能会遇到梯度消失或梯度爆炸的问题,这使得网络难以学习到长期依赖关系。虽然一些改进的RNN变体(如LSTM和GRU)能够在一定程度上缓解这个问题,但自注意力机制由于其全局上下文处理的能力,通常能够更好地处理长期依赖关系。

 总的来说,自注意力机制和RNN在序列处理任务中各有优势。自注意力机制能够更好地处理全局上下文和长期依赖关系,并具有并行计算的优势;而RNN则更适合处理具有明确顺序关系的序列数据。在实际应用中,可以根据具体任务的需求选择合适的模型或结合两者以充分利用其优势。

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

【一站解决您的问题】mac 利用命令升级nodejs、npm、安装Nodejs的多版本管理器n、nodejs下载地址

一:下载nodejs 官网地址,点击下载稳定版 https://nodejs.org/en 如果官网下载特别慢,可以点击这个地址下载 点击这里 https://nodejs.cn/download/current/ 安装完成后,就包含了nodejs 和 npm。此时您的版本就是下载安装的版本…

数字频率合成器dds的量化性能分析matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 DDS的基本原理 4.2 DDS的量化性能分析 5.完整工程文件 1.课题概述 数字频率合成器dds的量化性能分析matlab仿真,分别定义累加器位宽,截位位宽,模拟DAC位宽等&…

制冷系统吸排气管路的设计

吸气管路的设计 由于流动产生的阻力损失,导致压缩机吸气口处的压力低于蒸发器出口处的压力。当吸气压力降低时,回气比容增大,压缩机的排气量减少,机组制冷量将会有损失。同时吸气管中还要维持足够高的制冷剂流速以使冷冻油能顺利返回压缩机。…

走出大模型部署新手村!小明这样用魔搭×函数计算

作者:拓山 前文介绍了魔搭 ModelScope 社区模型服务 SwingDeploy 服务。开发者可以将模型从魔搭社区的模型库一键部署至阿里云函数计算,当选择模型并部署时,系统会选择对应的机器配置。按需使用可以在根据工作负载动态的减少资源&#xff0c…

如何在WordPress网站中添加多语言搜索(2种简单方法)

您想在WordPress网站中添加多语言搜索吗? 如果您有一个多语言 WordPress 网站,那么添加多语言搜索功能可以帮助用户通过使用自己的语言进行搜索来更快地找到信息。 在本文中,我们将向您展示如何在 WordPress 中轻松添加多语言搜索&#xff…

C#,入门教程(31)——预处理指令的基础知识与使用方法

上一篇: C#,入门教程(30)——扎好程序的笼子,错误处理 try catchhttps://blog.csdn.net/beijinghorn/article/details/124182386 Visual Studio、C#编译器以及C#语法所支持的预处理指令,绝对是天才设计。 编译程序的时候会发现&am…

EasyRecovery2024易恢复专业免费可靠的国产数据恢复软件

EasyRecovery TM (易恢复中国)是由全球著名数据厂商Ontrack 出品的一款数据文件恢复软件。支持恢复不同存储介质数据:硬盘、光盘、U盘/移动硬盘、数码相机、Raid文件恢复等,能恢复包括文档、表格、图片、音视频等各种文件。 Easy…

Docker Ipvlan l3s模式说明

看到Docker Ipvlan中有三种模式L2、L3、L3S模式,查阅了L3S,记录如下: 起因 Docker链接: IPvlan network driver 概念 注释说明(摘选自: ipvlan-l3s模式) L3S mode与L3 mode 的区别在于启用了iptables (conn-track…

服务优雅下线

服务优雅下线 问题背景描述 运维同事反馈上线滚动发布,旧实例接收的请求发生业务中断,没有处理完成, 为保证服务质量,期望发布时旧实例将已有请求处理完成再回收。先说可能会带来的影响:业务处理中断 导致数据不完整…

开源项目CuteSqlite开发笔记(八):Windows 64位/32位使用GetWindowLongPtr钩子函数

需求描述 在开发CuteSqlite的时候, 有一个功能需要实现,鼠标移到WTL::CStatic上后,发送消息通知CToolTipCtrl弹出。 遇到问题 WTL::CStatic控件没有相应 WM_MOUSEMOVE 消息,需要返回一个HTCLIENT消息来让窗口处理函数执行 WM_MO…

【QT+QGIS跨平台编译】之六:【LZMA+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、lzma介绍二、文件下载三、文件分析四、pro文件五、编译实践一、lzma介绍 LZMA(Lempel-Ziv-Markov chain-Algorithm的缩写),是一个Deflate和LZ77算法改良和优化后的压缩算法。 libLzma是基于LZMA压缩算法封装的开源库。2001年被首次应用于7-Zip压缩工具中,是 …

点亮流水灯

目录 1.water_led 2.tb_water_led 50MHZ一个周期是20ns,0.5秒就是20ns0.02um0.00002ms0.000_00002s。0.5/0.000_00002s25_000_000个时钟周期,表示要从0计数到24_999_999 LED灯是低电平点亮,前0.5秒点亮第一个LED灯,当检测到脉冲信号点亮第二…

关于缓存 db redis local 取舍之道

文章目录 前言一、影响因素二、db or redis or local1.db2.redis3. local 三、redisson 和 CaffeineCache 封装3.1 redisson3.1.1 maven3.1.2 封装3.1.3 使用 3.2 CaffeineCache3.1.1 maven3.1.2 封装3.1.3 使用 总结 前言 让我们来聊一下数据缓存,它是如何为我们带…

【C/C++】C/C++编程——为什么学习 C++?

当提到C的时候,很多人会觉得语法复杂、学习曲线陡峭,并且好像与C语言还有点"纠缠不清"。尽管如此,C仍然是当今世界上最受欢迎和最有影响力的编程语言之一。特别是在当今快速发展的人工智能(AI)领域&#xff…

vue3前端开发,如何引入element-plus前端框架及配置参数

vue3前端开发,如何引入element-plus前端框架及配置参数!这是一个简单的教程,帮助大家快速在自己的项目中引入element-plus框架。 主要是介绍的引入流程和参数的配置情况。 如图,这个就是elment-plus前端框架里面的一个主按钮展示。表示我们配…

NodeJs 第二十章 代理

在计算机网络中,代理是一种中间服务,能够代理用户与网络资源之间的通信。代理服务器可以缓存网页内容、过滤网络流量或隐藏用户的真实IP地址等功能。 在日常开发中,我们接触最多的是客户端发送ajax到服务端。但是服务端并不是 node &#xf…

pod 报错Failed to connect to github.com port 443

pod 报错Failed to connect to github.com port 443 1、排查代理问题1.1、查找网络代理1.2、修改 Git 的代理 2、排查DNS解析问题2.1、查找 ip地址2.2、修改 host 文件 1、排查代理问题 1.1、查找网络代理 打开 设置 --> 网络与Internet --> 查找代理 1.2、修改 Git …

k8s中服务器容器tcp连接数量优化

netty的http1服务器在运行一段时间后会无法提供服务,返回客户端socket hang up 使用apipost测试抓包显示三次握手后被reset 修改net/core/somaxconn 登录容器,cat /proc/sys/net/core/somaxconn显示128,对于一个服务器来说,这个…

PLAN方法:解决 GAN 生成医学图像 Latent 空间中的隐私保护方法

PLAN方法:解决 GAN 生成医学图像 Latent 空间中的隐私保护方法 PLAN 原理StyleGAN 生成视网膜图k-SALSA 生成视网膜图PLAN方法 生成视网膜图 总结 PLAN 原理 论文:https://arxiv.org/abs/2307.02984 代码:https://github.com/perceivelab/P…

vulhub之redis篇

CVE-2022-0543 | redis的远程代码执行漏洞 简介 CVE-2022-0543 该 Redis 沙盒逃逸漏洞影响 Debian 系的 Linux 发行版本,并非 Redis 本身漏洞, 漏洞形成原因在于系统补丁加载了一些redis源码注释了的代码 原理分析 redis一直有一个攻击面,就是在用户连接redis后,可以通过ev…