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

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的最终输出就会有选择性地关注应该关注的地方。

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

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

相关文章

孩子都能学会的FPGA:第二十五课——用FPGA实现频率计

&#xff08;原创声明&#xff1a;该文是作者的原创&#xff0c;面向对象是FPGA入门者&#xff0c;后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门&#xff0c;作者不光让大家知其然&#xff0c;还要让大家知其所以然&#xff01;每个工程作者都搭建了全自动化的仿…

基于SpringBoot+maven+Mybatis+html慢性病报销系统(源码+数据库)

一、项目简介 本项目是一套基于SpringBootmavenMybatishtml慢性病报销系统&#xff0c;主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目可以直接作为bishe使用。 项目都经过严格调试&a…

二十一章(网络通信)

计算机网络实现了多台计算机间的互联&#xff0c;使得它们彼此之间能够进行数据交流。网络应用程序就是在已连接的不同计算机上运行的程序&#xff0c;这些程序借助于网络协议&#xff0c;相互之间可以交换数据。编写网络应用程序前&#xff0c;首先必须明确所要使用的网络协议…

C++_命名空间(namespace)

目录 1、namespace的重要性 2、 namespace的定义及作用 2.1 作用域限定符 3、命名空间域与全局域的关系 4、命名空间的嵌套 5、展开命名空间的方法 5.1 特定展开 5.1 部分展开 5.2 全部展开 结语&#xff1a; 前言&#xff1a; C作为c语言的“升级版”&#xff0c;其在…

快速排序的新用法

普通快排 简介 快速排序是一种高效的排序算法&#xff0c;利用分治的思想进行排序。它的基本原理是在待排序的n个数据中任取一个数据为分区标准&#xff0c;把所有小于该排序码的数据移到左边&#xff0c;把所有大于该排序码的数据移到右边&#xff0c;中间放所选记录&#x…

Spring 之 @Cacheable 缓存使用教程

1、Cacheable 指定使用缓存 定义个 Controller &#xff0c;在方法上加上注解 Cacheable&#xff0c;配置要使用哪些缓存&#xff0c;比如 myMapCache 表示一级缓存是 Map&#xff0c;myRedisCache 表示二级缓存是 Redis。并配置缓存 key。 key 由 SPEL 表达式组成&#xff0c…

异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测

异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测 目录 异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测效果一览基本介绍模型准备模型设计参考资料效果一览 基本介绍 训练一个双向 LSTM 自动编码器来检测机器是否正常工作。 自动编码器接受…

CleanMyMac X2024最新版本软件实用性测评

信大多数MAC用户都较为了解&#xff0c;Mac虽然有着许多亮点的性能&#xff0c;但是让用户叫苦不迭的还其硬盘空间小的特色&#xff0c;至于很多人因为文件堆积以及软件缓存等&#xff0c;造成系统空间内存不够使用的情况。于是清理工具就成为了大多数MAC用户使用频率较高的实用…

二十一章网络通信

计算机网络实现了多台计算机间的互联&#xff0c;使得它们彼此之间能够进行数据交流。网络应用程序就是在已连接的不同计算机上运行的程序&#xff0c;这些程序借助于网络协议&#xff0c;相互之间可以交换数据。编写网络应用程序前&#xff0c;首先必须明确所要使用的网络协议…

数据采集工具的大全【都是免费值得收藏】

数据是推动业务成功的关键之一。为了获取准确、全面的信息&#xff0c;数据采集成为了许多企业和个人的必备工作。本文将专注于数据采集工具&#xff0c;探讨其在全网和指定网站采集方面的优势&#xff0c;为大家提供对比分析&#xff0c;以帮助大家找到最适合的数据采集利器。…

算法复习——6种排序方法的简单回顾

算法复习——6种排序方法的简单回顾 常见排序方法&#xff1a;冒泡排序、选择排序、插入排序、堆排序、归并排序、快速排序的简单回顾 冒泡排序 重复“从序列右边开始比较相邻两个数字的大小,再根据结果交换两个数字的位置” 在冒泡排序中&#xff0c;第 1 轮需要比较 n - 1…

Tair(1):Tair介绍

1 介绍 ​ 在Tair出现之前的很长一段时间里&#xff0c;像redis、memcache这些知名NoSql数据库是不支持分布式的&#xff0c;在这样的背景下&#xff0c;由淘宝网自主开发并在2010.6开源的一个高性能、高扩展、高可靠分布式缓存&#xff0c;类似map的key/value结构&#xff0c…

使用单例模式+观察者模式实现参数配置实时更新

使用vector存储观察者列表 #include <iostream> #include <vector> #include <functional> #include <algorithm>// 配置参数结构体 struct MyConfigStruct {int parameter1;std::string parameter2; };class Config { public:using Observer std::f…

hive 命令行中使用 replace 和nvl2 函数报错

1.有时候在命令行的情况下使用 replace 函数时会报错 这个时候可以使用 translate 代替 2.有时候使用 nvl2() 函数的时候会报错 这个时候可以用 case when 来代替

【Spring 源码】 深入理解 Bean 定义之 BeanDefinition

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

两数之和问题

更好的阅读体验请点击 两数之和。 题目&#xff1a;两数之和 ​ 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 ​ 你可以假设每种输入只会对应一个答案。但是&#xff…

MetricBeat监控Redis

目录 一、安装部署 二、开启Redis监控模块 三、编辑Redis配置文件 四、启动Metricbeat 五、查看监控图表 一、安装部署 metriceat的安装部署参考章节&#xff1a; 监控组件>Metricbeat安装使用&#xff0c;这里不再赘述。 二、开启Redis监控模块 进入metricbeat安装目录…

【每日一题】出租车的最大盈利

文章目录 Tag题目来源解题思路方法一&#xff1a;递归方法二&#xff1a;递归记录数组记忆化搜索方法三&#xff1a;动态规划&#xff08;递推&#xff09; 写在最后 Tag 【递归】【记忆化搜索】【动态规划】【数组】【2023-12-08】 题目来源 2008. 出租车的最大盈利 解题思路…

【EI会议征稿中】2024年第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)

2024年第四届人工智能、自动化与高性能计算国际会议&#xff08;AIAHPC 2024&#xff09; 2024 4th International Conference on Artificial Intelligence, Automation and High Performance Computing 2024第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)将于20…

蓝桥杯从零开始备战(Python组)---基础知识篇

第一次尝试报名蓝桥杯的Python组&#xff0c;好好备战&#xff0c;希望省赛可以拿奖&#xff01;目前是整理了一些Python的常用函数和常用内置库&#xff0c;后面可能会开始刷题&#xff0c;如果有比较需要记住的知识点&#xff0c;会再写一篇刷题篇 一、输入输出 1.输入字符…