attention

【深度学习】 基于Keras的Attention机制代码实现及剖析——Dense+Attention 说明 大部分代码来源于网上,但网上的代码一下子可能难以入门或因版本原因报错,此处整理后进行详细分析。   参考的代码来源1:Attention mechanism Implementation for Keras.网上大部分代码都源于此,直接使用时注意Keras版本,若版本不对应,在merge处会报错,解决办法为:导入Multiply层并将attention_dense.py第17行的: att... 阅读详情

0、Background

之前已经看过BERT模型,一直没有深入研究,最近工作上遇到点问题,试着用BERT模型解决

0.1、BERT 模型

BERT的全称是Bidirectional Encoder Representation from Transformers,是Google2018年提出的预训练模型,即双向Transformer的Encoder,从名字上也可以知道,是基于transformer的双向编码表示,说的再直白些,就是一个词向量工具,不过比传统word2vec和ELMo效果好太多,其根本原因是加入了attention机制,使其不管在decode还是encode(self-attention)步骤都可以考虑上下文信息对正处理字符的贡献程度。模型的主要创新点都在pre-train方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation。

从模型全称可知,BERT模型是基于transformer的,所以要想深入理解BERT,首先要深度剖析Transformer

0.2、Transformer

研究发现,Transformer模型是受attention机制启发来编码输⼊序列并解码出输出序列的。Transformer抛弃了卷积神经⽹络和循环神经⽹络的架构。它在计算效率上⽐基于循环神经⽹络的编码器—解码器模型通常更具明显优势。至此,引出本篇博客的中心也就是BERT模型的核心:attention

1、Attention

我们知道,在attention机制出现之前,词向量都是采用encode-decode训练出来,解码器在各个时间步根据输入序列的相同编码信息来decode,不同的只是在编码方式上采用的网络结构不同而已。而Attention机制则不同,其核心思想是解码器在每一时间步对输入序列中不同时间步的编码信息分配不同的attention(即权重),这也是注意力机制的由来。

也就是说,解码器在每一时间步使用不同的背景变量(编码器对输入序列的编码)。记ct’是解码器在时间步t’的背景变量,那么解码器在该时间步的隐藏状态可以改写为:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N5XBPcIJ-1572228258668)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\1571383269518.png)]

这里的关键是如何计算背景变量ct’和如何使用它来更新隐藏状态st’。接下来分别介绍这两点。

1.1、计算背景变量

下图描绘了注意力机制如何为解码器在时间步2计算背景变量。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hrj60av6-1572228258675)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\1571383525824.png)]

1、函数a根据解码器在时间步1的隐藏状态和编码器在各个时间步隐藏状态计算softmax的输入。

2、softmax输出概率分布并对编码器各个时间步的隐藏状态做加权平均,从而得到背景变量。记编码器在时间步t的隐藏状态为ht,总时间步数为T,那么解码器在时间步t’的背景变量为所有编码器隐藏状态的加权平均:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BAnn6m5u-1572228258678)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\1571383841979.png)]

2、Attention的物理含义

一般在自然语言处理应用里会把Attention模型看作是输出Target句子中某个单词和输入Source句子每个单词的对齐模型,这是非常有道理的。

**目标句子生成的每个单词对应输入句子单词的概率分布可以理解为输入句子单词和这个目标生成单词的对齐概率,**这在机器翻译语境下是非常直观的:传统的统计机器翻译一般在做的过程中会专门有一个短语对齐的步骤,而注意力模型其实起的是相同的作用。

如果把Attention机制从上文讲述例子中的Encoder-Decoder框架中剥离,并进一步做抽象,可以更容易看懂Attention机制的本质思想。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gPMJGp3l-1572228258681)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\1571384473632.png)]

我们可以这样来看待Attention机制(参考图9):将Source中的构成元素想象成是由一系列的<Key,Value>数据对构成,此时给定Target中的某个元素Query,通过计算Query和各个Key的相似性或者相关性,得到每个Key对应Value的权重系数,然后对Value进行加权求和,即得到了最终的Attention数值。所以本质上Attention机制是对Source中元素的Value值进行加权求和,而Query和Key用来计算对应Value的权重系数。

至于Attention机制的具体计算过程,如果对目前大多数方法进行抽象的话,可以将其归纳为两个过程:第一个过程是根据Query和Key计算权重系数,第二个过程根据权重系数对Value进行加权求和。而第一个过程又可以细分为两个阶段:第一个阶段根据Query和Key计算两者的相似性或者相关性;第二个阶段对第一阶段的原始分值进行归一化处理;

3、Self-Attention模型

Self Attention也经常被称为intra Attention(内部Attention),最近一年也获得了比较广泛的使用,比如Google最新的机器翻译模型内部大量采用了Self Attention模型。

在一般任务的Encoder-Decoder框架中,输入Source和输出Target内容是不一样的,比如对于英-中机器翻译来说,Source是英文句子,Target是对应的翻译出的中文句子,Attention机制发生在Target的元素Query和Source中的所有元素之间。**而Self Attention顾名思义,指的不是Target和Source之间的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力计算机制。**其具体计算过程是一样的,只是计算对象发生了变化而已,所以此处不再赘述其计算过程细节。

很明显,引入Self Attention后会更容易捕获句子中长距离的相互依赖的特征,因为如果是RNN或者LSTM,需要依次序序列计算,对于远距离的相互依赖的特征,要经过若干时间步步骤的信息累积才能将两者联系起来,而距离越远,有效捕获的可能性越小。

距离的相互依赖的特征,要经过若干时间步步骤的信息累积才能将两者联系起来,而距离越远,有效捕获的可能性越小。

但是Self Attention在计算过程中会直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,所以远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征。除此外,Self Attention对于增加计算的并行性也有直接帮助作用。这是为何Self Attention逐渐被广泛使用的主要原因。

【医学分割】attention-unet attention-unet主要的贡献就是提出了attention gate,它即插即用,可以直接集成到网络模型当中,作用在于抑制输入图像中的不相关区域,同时突出特定局部区域的显著特征,并且它用soft-attention 代替hard-attention,所以attention权重可以由网络学习,并且不需要额外的label,只增加少量的计算量。 : :一次选择一个图像的一个区域作为注意力,设成1,其他设为0。他是不能微分的,无法进行标准的反向传播,因此需要蒙特卡洛采样来计算各个反向传播阶段的精度。 考虑到 阅读详情

相关推荐

关于Attention、Self-Attention机制的理解

结合李宏毅老师机器学习2021——Self-Attention课程和网上查阅的资料,总结一下对Attention机制的理解 Attention机制就是权重分布 Attention机制的核心就是,决定整段输入的哪个部分需要更加关注。 Attention机制翻译中文就是注意力机制,这就和我们人类看图片、看自然语言是一样的,我们人读一句话是有自己的关注点,重点词汇的。比如我输入一张图,我让你判断这是一只鸟,那么鸟嘴、鸟爪等等patten是很重要的,而Attention机制就是给这些patten一个权重。再比如我

gailj 3222

关于Attention的超详细讲解

文章目录一、动物的视觉注意力二、快速理解Attention思想三、从Encoder-Decoder框架中理解为什么要有Attention机制四、Attention思想步骤五、Self-Attention5.1 Self-Attention的计算步骤5.2 根据代码进一步理解Q、K、V5.3 再来一个例子理解六、缩放点积中为什么要除以根号dk6.1 为什么比较大的输入会使得softmax的梯度变得很小?6.2 维度与点积大小的关系是怎么样的,为什么使用维度的根号来放缩?七、Multi-Head Attenti

WGS. 2万+

注意力机制的分类 | Soft Attention和Hard Attention

在前面两节的内容中我们已经介绍了注意力机制的实现原理,在这节内容中我们讲一讲有关于注意力机制的几个变种: Soft Attention和Hard Attention 我们常用的Attention即为Soft Attention,每个权重取值范围为[0,1] 对于Hard Attention来说,每个key的注意力只会取0或者1,也就是说我们只会令某几个特定的key有注意力,且权重均为1。 Global Attention和Local Attention 一般不特殊说明的话,我们采用的Attention都是G

Ftwhale的博客 1万+

史上最直白之Attention详解(原理+代码)

Attention机制笔者认为是Transformer模型中最出彩的设计,本文希望可以更好的帮助大家理解Attention机制究竟是如何在模型中起作用的

weixin_44048622的博客 8327

attention介绍

Attention 正在被越来越广泛的得到应用。 Attention 到底有什么特别之处?他的原理和本质是什么?Attention都有哪些类型?本文将详细讲解Attention的方方面面。 Attention 的本质是什么 Attention(注意力)机制如果浅层的理解,跟他的名字非常匹配。他的核心逻辑就是「从关注全部到关注重点」。 Attention 机制很像人类看图片的逻辑,当我们看一张图片的...

qq_41558173的博客 2760

avantage软件简单数据处理教程

avantage软件简单数据处理教程以及详细步骤。

一文搞定注意力机制(Attention)

注意力机制是指人类的神经系统在面对复杂的感知信息时,通过选择性的关注和集中注意力来处理特定的刺激。注意力机制可以帮助我们过滤掉不相关或无用的信息,并专注于重要的刺激、任务或目标。这种机制可以通过自主调控或受到外界环境的影响而发生变化。例如,注意力可以集中于一个特定的刺激或任务,也可以在多个刺激之间进行转移和分配。注意力机制在认知过程中起着重要的作用,影响感知、思维、决策和行为等方面的表现。基于注意力机制的深度学习,核心在于让机器学会去感知数据中的重要和不重要的部分。

markconca的博客 3万+

LM Studio 模型加载与转换实战指南:从GGUF格式到本地部署

本文提供了使用LM Studio加载与转换GGUF格式大语言模型的完整实战指南。详细阐述了为何GGUF格式是本地部署的最佳选择,并逐步指导用户如何将非GGUF模型(如Transformers格式)转换为GGUF格式,以及在LM Studio中进行加载、配置GPU卸载等关键优化,最终实现流畅的本地离线对话体验。

weixin_29061425的博客 921

一文看懂 Attention(本质原理+3大优点+5大类型)

Attention 正在被越来越广泛的得到应用。尤其是 BERT 火爆了之后。 Attention 到底有什么特别之处?他的原理和本质是什么?Attention都有哪些类型?本文将详细讲解Attention的方方面面。 Attention 的本质是什么 Attention(注意力)机制如果浅层的理解,跟他的名字非常匹配。他的核心逻辑就是「从关注全部到关注重点」。 Attention的本质 Attention 机制很像人类看图片的逻辑,当我们...

guozhihao12345的博客 4346

正负数据如何归一化_生信干货 | LC-MS代谢组学QI软件下机数据代谢物筛选和归一化如何做?...

上海·2019第一届多层组学前言技术发展华东区客户研讨会倒计时1天LC-MS非靶向代谢组学数据下机啦~~拿到一堆数据怎么办?不会高端代码,也不会自己写脚本,我怎么处理数据?​本期小编带来了LC-MS非靶向代谢组学下机数据处理实用干货,包括:下机定性结果表格的解析、代谢物筛选如何做?以及定量数据如何做归一化?实用干货,赶紧来抢~~话不多说,赶紧来学习吧~~非靶向LC-MS代谢组学的分析流程LC-MS...

weixin_36441329的博客 2983

Vscode+ROS/ROS2 开发调试基于ROS/ROS2应用环境配置

在ROS操作系统开发应用程序时,我们常常需要调试代码,验证程序的正确性。但是在用rosrun或者roslaunch启动节点后,若程序运行过程中发生错误而导致发生出错停止工作,这时候终端并不会输出具体的信息指出在何处发生了错误,具体错误的原因又是什么。往往仅仅是core dump 或者segmentation fault 等等一类的模糊提示。

Chasinglight的博客 5800

注意力(Attention)机制详解(附代码)

Attention机制是深度学习中的一种技术,特别是在自然语言处理(NLP)和计算机视觉领域中得到了广泛的应用。它的核心思想是模仿人类的注意力机制,即人类在处理信息时会集中注意力在某些关键部分上,而忽略其他不那么重要的信息。在机器学习模型中,这可以帮助模型更好地捕捉到输入数据中的关键信息。

大摆王的博客 1万+

关于图像傅里叶变换得到的频谱图的通俗理解

傅里叶变换过程: 经过傅里叶变化且频谱居中化处理的频谱图: 1.如果将图像某一行上的灰度变化看作是一个离散信号,那么整张图像可以看作是一个分布在二维平面上的信号,因此图像可看作是空间域信号。傅里叶变换则是将图像灰度分布(空间域信号)变换到了频域上,给我们提供了观察图像的另一个视角。 2.图像的频谱图(频谱居中后)的中心点是频率最低点,以该点为圆心,不同半径的上的点表示不同的频率。这里的图像频率是指对应原图像中的某灰度曲线变化的快慢(这么说不严谨,但是按照上面第1点的角度,似乎也可以这么理解

daimashiren的博客 2万+

attention机制、self-attention、channel attention、spatial attention、multi-head attention、transformer

attention机制觉得是通过连接实现的

Leon_winter的博客 1万+

SoC验证新思路:除了UVM仿真,你还可以试试Cadence JasperGold的形式化验证

本文深入探讨了Cadence JasperGold形式化验证在SoC设计中的创新应用,对比传统UVM仿真验证,详细解析了其数学穷尽性验证优势。通过实战案例展示了JasperGold在总线协议、时钟域交叉等关键场景的验证方法,并提供了混合验证流程设计与效能优化方案,帮助工程师提升验证效率30%以上。

weixin_30566063的博客 121

DDR5中的On-Die Termination(ODT)详解:电阻值支持及其背后的秘密

DDR5支持多档ODT电阻值,范围从40Ω到480Ω,均基于240Ω标准参考电阻RZQR_{ZQ}RZQ​。不同电阻档位对应不同的信号负载和功耗需求。校准电压点关键,常用0.8×VDD进行精准调校。CA信号间ODT匹配必须严格控制,保证命令总线稳定。选择合适的ODT值是高速内存设计中不可忽视的细节。

weixin_43199439的博客 2099

Self -Attention、Multi-Head Attention、Cross-Attention

Transformer 与 RNN 不同,可以比较好地并行训练。Transformer 本身是不能利用单词的顺序信息的,因此需要在输入中添加位置 Embedding,否则 Transformer 就是一个词袋模型了。Transformer 的重点是 Self-Attention 结构,其中用到的 Q, K, V矩阵通过输出进行线性变换得到。

大鹏的专栏 7万+

【Kubernetes】怎么根据pod找到关联的deployment呢

在文章中我们删除pod需要删除deployment,那么怎么根据pod找到关联的deployment呢。

九师兄 505

基于Keras的attention实战

要点: 该教程为基于Kears的Attention实战,环境配置: Wn10+CPU i7-6700 Pycharm 2018 python 3.6 numpy 1.14.5 Keras 2.0.2 Matplotlib 2.2.2 强调:各种库的版本型号一定要配置对,因为Keras以及Tensorflow升级更新比较频繁,很多函数更新后要么更换了名字,要么没有这个函数了...

小亮Machine Learning 2万+

使用Simulink进行四足机器人的非线性动力学建模与仿真

四足机器人的运动包含多个自由度(DOF),包括腿部的摆动和支撑阶段的动力学特性。由于存在接触力、摩擦以及不同地形的影响,四足机器人的动力学行为呈现出高度的非线性特征。因此,构建准确的非线性动力学模型对于研究机器人的运动学和动力学特性至关重要。定义代表机器人状态的变量,如位置、速度、角度和角速度。matlab深色版本通过本指南,我们介绍了如何基于Simulink搭建一个四足机器人的非线性动力学模型,并进行了详细分析。

xiaoheshang_123的博客 311

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Attention 和 Self-Attention 总结

Attention 和 Self-Attention 总结

安静的软件工程师 2127

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VQA中的attention机制

近年来,attention机制在深度学习领域受到了越来越多的关注。从数学的形式上看,attention机制只是简单地对输入项根据重要程度分配不同的加权参数,但这一机制模拟了人脑的认知模式,即根据实际需求而将有限的注意力聚焦于事物的关键部分,从而大大加强了神经网络的理解能力。 由于VQA涉及对图像和文字的深度理解,attention机制在VQA领域自然成了一大利器。于是这周就将attention机制...

bxg1065283526的博客 3734

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

soft attention、hard attention、 local attention结构

1、attention 理解方式 理解 : key 与 query生成权重 α ,α 与value 生成 attention value 注意:在tensorflow中 seq2seq + attention 的 attention 的 key 与 value 是相同的,都是解码器的输...

鲨鱼儿的博客 1万+

Attention、Self-attention、Multi-head attention、Cross attention

attention广泛指的输入和输出之间的的权重关系。传统的Attention机制发生在和之间。在一般任务的Encoder−Decoder框架中,输入Source和输出Target内容是不一样的,比如对于英 - 中机器翻译来说,Source是英文句子,Target是对应的翻译出的中文句子。

weixin_43186779的博客 1203

Attention 机制

文章目录Attention 的本质是什么Attention 的3大优点Attention 的原理Attention 的 N 种类型 转载来源:https://easyai.tech/ai-definition/attention/ Attention 正在被越来越广泛的得到应用。尤其是 BERT 火爆了之后。 Attention 到底有什么特别之处?他的原理和本质是什么?Attention都有哪些类型?本文将详细讲解Attention的方方面面。 Attention 的本质是什么 Attention(注意

郝伟老师的博客——大数据、并行计算与人工智能时代 2458

Attention 与Hierarchical Attention Networks 原理

Attention 与Hierarchical Attention Networks1. Attention 注意力机制1.1 什么是Attention?1.2 加入Attention的动机1.3 Attention 原理1.3.1 Encoder-Decoder框架1.3.2 Attention模型1.3.2.1 Soft Attention模型参考链接2. Hierarchical Atte...

qq_36047533的博客 3573
上一篇: 深入浅出话表示学习:从Word2vec到Elmo,再到GPT,最后到BERT
下一篇: BERT踩坑实录
卡布达打小怪兽_Cheer
博客等级 码龄11年 69粉丝 50原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值