注意力机制:认知模型与计算机应用

视觉 注意力机制——通道注意力、空间注意力、自注意力 本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。 阅读详情

注意力机制:认知模型与计算机应用

“注意力机制”在风靡计算机神经网络设计之前,首先是一种被广泛接受的人类认知方法。本调研文稿将首先从人类认知出发,讨论几种经典的人类注意力模型,和人类脑的研究的进展;然后我们将讨论计算机领域对“注意力”概念的借用与实现,从NLP,CV,RL三大领域说明目前计算机模拟和应用attention的方法。

 

1. 基于注意的认知模型

几乎所有的注意力模型都基于一个假设,外界存在大量的,超出了人们大脑处理能力的信息,而人们需要选择性的处理这些内容。

1.1 经典的注意力模型

1.1.1 基于视觉选择的注意力模型

视觉选择模型是一类最直观的注意力模型,关系到当前我们在观察什么。

聚光灯假设是最早期的视觉选择模型,这种模型认为,注意力仿佛认知系统中的聚光灯,处于聚光灯中心位置的信息被最细致的处理,而聚光灯外的信息则被忽略。人能够灵活的决定这个聚光灯的指向。

Treisman & Gelade(1980)提出了一种特征整合模型。他们认为模式识别具有两个阶段。在第一个阶段,信息得到统一的并行处理,形成所谓的“特征地图”;而在第二个阶段,也即“特征整合”阶段,需要人主动控制自己的注意力而辨认出客体。

Desimone & Duncan 提出了偏向竞争模型。他们将聚光灯模型形容成基于位置(location-based)的的注意力,而特征整合则是基于客体的(object-based)。他们认为大脑的不同皮层应用到了不同的注意力方式,视觉任务的完成需要两者的协调

1.1.2 基于信息选择的注意力模型

基于信息选择的注意力模型主要考虑除视觉选择外的其他信息选择,主要是时序的线性信息如何被有效的组织利用。“过滤器”为其中的一大类经典模型,这类方法认为注意力机制,就像是一把筛子从当前(或过去累积的记忆中)筛选出重要信息进入高级分析阶段。

Donald Eric Broadbent(1958)提出了早期选择模型,也称过滤器模型,单通道模型。早期选择式的过滤器直接在感知阶段进行信息的选择性录入。过滤器选择信息<新异、较强、具有生物意义刺激、受人期待的信息>进入高级分析阶段,其余暂存于某种记忆中,并迅速衰退。

Anne Marie Treisman(1960, 1964)提出衰减的多通道模型。衰减的理论依赖于早期选择模型。但是Anne注意到,残存于记忆中的迅速衰减的记忆在之后的时刻可能被唤起,这意味着,如果人的认知是以类过滤器的方式存在,那么必然不只有一个过滤器在其中起到作用。人的认知中同时存在多个感知通道,这些通道具有不同的兴奋阈限。

J. Anthony Deutsch & Diana Deustch(1963)在前两者的基础之上又提出了晚期选择模型。他确实赞同多通道的存在,并且同时认为,所有通道的信息都会进入高级分析,而注意力作用于对所有通道信息的重要性整合。

Johnston&Heinz(1978)所提出的多态模型设想了一个更为灵活的注意力系统。他将认知分为三个阶段,而注意力会根据实际任务在其中工作。1.感觉阶段:物理特征得到加工,建立感觉表征(过滤器模型);2.语义阶段:构建起刺激的语义表征。比感觉加工付出更多努力;3.意识阶段:感觉表征或语义表征进入意识(后期选择模型)。

Neisser(1976)等提出的图式模型是一类更为特殊的信息选择模型。不同于信息在不同通道的过滤,图式模型强调了信息对于图式的激活,图式又对隐含信息进行反向激活的过程。图式模型不仅是知识的统一表示方式,也是组织经验的机制。对象和关系未被填充的空架构,简单图式可以作为对象被嵌入到复杂图式;图式中的空插槽具有默认值,可以通过上下文填写;不同领域的概念可以通过图式联系。

1.1.3 基于注意力分配的模型

基于注意力分配的模型将注意力考虑为一种资源,通过分配这种资源,可以更好的完成任务。

Danial Kahneman(1973)提出资源分配/限制模型,这种模型考虑到并行任务具有不同的价值,从而将认知能力不均匀的分派给不同的任务。

Schneider&Shiffrin(1977)提出双加工理论。控制性加工(注意性加工):需要应用注意的加工,容量有限,可灵活地用于变化着的环境;自动加工:不受人控制的加工,不可避免,无须注意,没有容量限制,高度有效性,且一旦形成难以改变。

我们能够注意到,注意力机制的本质就是对所接受到的信息的选择性激活。这个选择可能会出现信息处理的各个阶段,一方面是为了避免不重要信息的干扰,另一方面是为了更高效率的发挥认知网络本身所具有的能力。

 

1.2 脑科学研究中的attention

 

脑神经科学较新的研究成果更深地揭示了注意力机制在激活,选择和控制方面起到的作用。尽管都涉及到信息的选择,不同的注意力很可能涉及到了相对独立的脑回路。其中警报引起的注意力更多地侧重对新异信息反应,既关心所处状态(任务)的变化;而定向和执行中的注意力,更多的涉及到对于任务相关信息的选择。总之,注意力是一种与意识密切相关的信息选择,恰当的注意力意味着最佳的激活水平,从而允许人们自如的控制自己的行动。

一份更新的工作借助强化学习解释了人类认知中注意力机制的角色。它同样赞成注意力具有约束维数的重要意义,同时特征的价值驱动注意力的转移,而人类的注意力主要由额顶页网络活动有关。文章在关于人类决策时脑活动的分析具有一个重要的发现:人们在做选择时,偏向注意“高价值”的特征;而在学习时,更关注“高不确定性”的特征。

 

 

2. 计算机实现

目前注意力机制已经在计算机上得到了广泛的应用,在大量的实现中,注意力被表现为“门”的形式,这个“门”能决定信息是否能够通过,从而决定这个信息是否能够参与到后期的高级决策中。门控机制,早在注意力被明确提出应用在计算机深度网络中,就以早见雏形,从非线性激活函数,到池化方法,再到LSTM的设计,都可见其身影。后来提出的很多注意力方法本质都是是计算策略更为复杂的门。

 

下文按照NLP,CV,RL的三大分类,分别介绍了attention在不同领域的实现与应用。值得注意的是,不同分类的方法之间存在继承和发展关系。

 

2.1 文本处理任务

 

机器翻译任务中attention的应用使得Decoder端的输入能够同时与多个encoder端输出的信息产生联系,

c_{i}=\sum_{j=1}^{T_{x}} \alpha_{i j} h_{j},
而不仅仅和单一隐状态有关,达到了更好的翻译效果。但是,由于attention依赖于RNN产生隐状态,因此此类的attention方法往往具有较高的时间消耗。

 

Query-aware注意力机制其实非常类似于数据库的查询。encoder端时间上连续的隐状态提供key,Decoder端提供query,

a_{ij} = \mathrm{Attention}(query_i, key_j).
<query, key> 的抽象是给了过去依赖RNN传递隐层信息的attention方法提供了并行化的处理方式。

 

2.1.1 软注意力机制

 

基于RNN的注意力模型首先出现于文本翻译,文章率先提出了软注意力模型(Soft Attention Model, RAM),它利用attention方法作为中间节点整合encoder信息到decoder输入端,

 

e_{i j}=a\left(s_{i-1}, h_{j}\right),\\ \alpha_{i j}=\frac{\exp \left(e_{i j}\right)}{\sum_{k=1}^{T_{x}} \exp \left(e_{i k}\right)}.
其中,encoder端到decoder端都使用了RNN结构。

2.1.2 全局注意力和局部注意力

 

文献将上文的RAM方式归纳为全局注意力(Global Attention Model, GAM)方式,并提出三类打分函数,


在此基础上,模型还预测了对齐位置p_{t},

p_{t}=S \cdot \operatorname{sigmoid}\left(\boldsymbol{v}_{p}^{\top} \tanh \left(\boldsymbol{W}_{\boldsymbol{p}} \boldsymbol{h}_{t}\right)\right).
这就是作者提出局部注意力机制(Local Attention Model, LAM),

\boldsymbol{a}_{t}(s)=\operatorname{align}\left(\boldsymbol{h}_{t}, \overline{\boldsymbol{h}}_{s}\right) \exp \left(-\frac{\left(s-p_{t}\right)^{2}}{2 \sigma^{2}}\right).
从而通过这样的方法,作者将软注意力与硬注意力机制结合,而且减少encoder端的重复计算。

2.1.3 基于Query的attention

 

针对句子理解问题,文献提出了Query-aware注意力机制,每个Query实际上都是只我们希望从句子中探知得到的某种属性。从而,网络分别计算内容端输出和查询端输出,又把这两者的输出整合成两个矩阵,Query2Context和Contex2Query,之后的计算在此基础上进行。

 

文献正是利用了这一点提出了Scaled Dot-Product Attention (SDTA)方式,

\text { Attention }(Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V.
通过这种方式进行attention计算,而不在依赖RNN网络,提高了计算销量。同时作者还提出了自注意力方案,这是由于在作者的结构中Qurey矩阵,Key矩阵,和Value矩阵可以源自同样的信息域(而不同于上文具有文本域和查询域)。在SDT注意力机制的基础上,作者进一步提出了多头注意力(Multi-Head Attention, MHA),这种方式允许了attention从信息结构不同的源信息域中提取信息。

 

2.2 视觉任务

视觉任务中attention也有大量应用,第一类方法和上文的局部注意力机制有关,通过RNN网络迭代生成关注位置,这类方法主要面向是图像解释任务;第二类方法则不需要利用RNN提供额外信息。

2.2.1 利用RNN的视觉注意力方法

 

文章是第一篇在图像领域使用基于RNN的attention方法的工作。参考了人的眼动扫描图片进行观察的方法,文献通过RNN结构传递下次观察位置。

 

工作提出RA-CNN网络,利用类似的工作每次生成attention位置并放大,达到了很好的图像识别效果。

 

一个图像解释的工作 考虑了类似的注意力方式,然而,不是生成一个位置,而是生成与位置有关的图像蒙版。如上图,该工作同时可视化了软注意力机制和硬注意力机制的效果。文章提出SCA-CNN针对图片解释问题,不仅考虑空间注意力也考虑通道注意力。

 

一个图像理解的研究也用到了相似query-aware的结构。此外,这个工作还应用了Bottom-Up 和 Top-down attention。其中Bottom-Up attention利用Fast R CNN从图像本身提取特征,而Top-down attention则是利用Question端LSTM产生的隐状态得到soft attention。

2.2.2 其他视觉注意力方法

 

文章提出带注意力的残差学习(Residual Attention Learning, ARL),如图每个带注意力残差模块分为两支,左支为软遮罩支,右支为特征提取支。作者提出了三种方案对左支进行约束,以此分别对应混合注意力,通道注意力,位置注意力:

 

 

f_{1}\left(x_{i, c}\right)=\frac{1}{1+\exp \left(-x_{i, c}\right)}\\ f_{2}\left(x_{i, c}\right)=\frac{x_{i, c}}{\left\|x_{i}\right\|}\\ f_{3}\left(x_{i, c}\right)=\frac{1}{1+\exp \left(-\left(x_{i, c}-\operatorname{mean}_{c}\right) / \operatorname{std}_{c}\right)}
实验证明了混合注意力具有最优的结果。

 

文章提出 SENets 从通道之间的关系来提高网络性能,记每个通道c根据其卷积核参数v_c具有输出u_c,作者首先通过Squeeze 函数进行全局嵌入,

z_{c}=\mathbf{F}_{s q}\left(\mathbf{u}_{c}\right)=\frac{1}{H \times W} \sum_{i=1}^{H} \sum_{j=1}^{W} u_{c}(i, j).
而后使用Excitation 函数利用z_c,

\mathbf{s}=\mathbf{F}_{e x}(\mathbf{z}, \mathbf{W})=\sigma(g(\mathbf{z}, \mathbf{W}))=\sigma\left(\mathbf{W}_{2} \delta\left(\mathbf{W}_{1} \mathbf{z}\right)\right).
这个过程可以被可视为上图的过程。

 

文章通过整合最值池化和平均池化得到通道注意力和空间注意力方法,并在图像识别任务上具有好的表现。与之不同,文章提出了并行进行通道注意力和空间注意力的方法。

2.3 强化学习任务

2.3.1 有模型学习

 

工作在有模型强化学习上实验了强化学习机制的效果,该工作提出的fRL+decay是有模型强化学习方法,注意力被设计为特征的权重,根据

\phi_{d}=\frac{1}{z}\left[\sum_{f \in d} p\left(f=f^{*} | \mathcal{D}_{1: t-1}\right)\right]^{\alpha}.
而值根据,

V(S)=\sum_{d=1}^{3} w\left(f_{d}\right) \phi_{d},
这里的符号表示和一般强化学习中的方式略有不同,S带值一个选项,V(S)则表示该选项价值,D为特征维数。该工作的结果显示注意力机制可以帮助我们决策时提炼关键特征,从而指导高维环境的强化学习的任务并在某种程度上避免维数灾难。

 

受贝叶斯认知模型的启发,工作在fRL+attention的模型基础上加入了对任务结构的假设,而这个假设通过有偏向的注意力作用于分离的特征。

2.3.2 无模型单智能体强化学习

 

单智能体强化学习部分除了深入结合认知科学研究的工作,文章利用关系核,也就是由多头自注意力网络(MHA),来学习图像内实体的内部关系。该工作在高维复杂游戏如星际争霸挖矿游戏,推箱子任务上取得了很好的成绩。

2.3.3 多智能体强化学习

多智能体强化学习任务表现出了比单智能认为更为严重的维数灾难问题,因此,他们中的很多也使用了注意力机制,目的是从智能体的角度约简维数。此处列举两个工作的主要区别是:ATOC采取了基于RNN的注意力模型(AM),目的是为了从公共信道高效取得信息;MAAC利用了多头注意力(MHA)而提高了效果。

之后的工作也主要利用MHA形成智能体之间的复杂关系通道。这里的两篇工作都具有两层attention结构。其中,DGN利用MHA搭建了图卷积网络;而GA-AC/Comm 先后利用了硬注意力和软注意力方法,从而达到更好的约简。

 

 

参考文献

1 Cognitive Neuroscience of Attention, AIMS Neuroscience, 2015

2 Dynamic Interaction between Reinforcement Learning and Attention in Multidimensional Environments, Neuron, 2017

3 Neural machine translation by jointly learning to align and translate, ICLR,2015

4 Effective Approaches to Attention-based Neural Machine Translation, arXiv, 2015

5 Bidirectional attention flow for machine comprehension, ICLR, 2017

6 Attention Is All You Need, NIPS, 2017

7 recurrent models of visual attention, NIPS, 2014

8 Look Closer to See Better: Recurrent Attention Convolutional Neural Network for Fine-Grained Image Recognition, CVPR, 2017

9 Show, Attend and Tell: Neural Image Caption Generation with Visual Attention,  ICML, 2015

10 SCA-CNN: Spatial and channel-wise attention in convolutional networks for image captioning, CVPR, 2017

11 Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering, CVPR, 2018

12 Residual Attention Network for Image Classification, CVPR,2017

13 Squeeze-and-Excitation Networks, CVPR,2018

14 CBAM: Convolutional Block Attention Module, CVPR, 2018

15 Dual Attention Network for Scene Segmentation, CVPR, 2019

16 Reinforcement Learning in Multidimensional Environments Relies on Attention Mechanisms, Journal of Neuroscience, 2015

17 Holistic Reinforcement Learning: The Role of Structure and Attention, Trends in cognitive sciences,  2019

18 Relational deep reinforcement learning, arXiv, 2018

19 Learning Attentional Communication for Multi-Agent Cooperation, NIPS, 2018

20 Actor-Attention-Critic for Multi-Agent Reinforcement Learning, arXiv, 2018

21 Graph Convolutional Reinforcement Learning for Multi-Agent Cooperation, arXiv, 2018

22 Multi-Agent Game Abstraction via Graph Attention Neural Network, AAAI, 2020

TI MSPM0G3507 循迹小车强制寻黑线代码一 一个基于MSPM0微控制器的循迹小车控制系统。系统通过8路循迹传感器检测黑线位置偏差,使用PID算法计算电机控制量。主程序初始化中断、PWM等外设,在按键触发后进入循迹模式。传感器数据处理函数根据检测到的黑线位置返回偏差值(-7到7),PID控制器根据偏差调整左右电机速度。系统还包含限幅处理、中断服务等模块,实现稳定的自动循迹功能。代码结构清晰,展示了嵌入式系统中传感器数据处理、电机控制和PID算法的典型实现方式。 阅读详情

相关推荐

全志V3S开发板实战:从零构建嵌入式Linux系统

本文提供了一份针对全志V3S开发板(如LicheePi Zero)的零基础教程,详细指导如何从零开始构建嵌入式Linux系统。内容涵盖编译环境搭建、交叉工具链配置、U-Boot引导程序编译与烧录、Linux内核定制与编译,以及使用Buildroot构建根文件系统,最终实现系统成功启动,帮助开发者深入理解嵌入式系统构建全流程。

tensor9flow的博客 575

Attention

Attention 1.1认知神经学中的注意力 注意力一般分为两种:一种是自上而下的有意识的注意力,称为聚焦式 (Focus)注意力。聚焦式注意力是指有预定目的、依赖任务的、主动有意识地 聚焦于某一对象的注意力。 另一种是自下而上的无意识的注意力,称为基于显著性(Saliency-Based)的注意力。 基于显著性的注意力是由外界刺激驱动的注意,不需要主动干预,也和任务无关。 一个和注意力有关的例...

s1434088958的博客 999

利用Python暴力破解邻居家WiFi密码

如觉得博主文章写的不错或对你有所帮助的话,还望大家多多支持呀!

weixin_45841831的博客 6万+

【AI不惑境】计算机视觉中注意力机制原理及其模型发展和应用

大家好,这是专栏《AI不惑境》的第七篇文章,讲述计算机视觉中的注意力(attention)机制。进入到不惑境界,就是向高手迈进的开始了,在这个境界需要自己独立思考。如果说...

hacker_long的专栏 5103

GD32F450以太网(2-2): PHY芯片IP101GR介绍

IP101是台湾省九阳电子公司生产制造的,符合IEEE 802.3/802.3u标准单端口快速以太网收发器100Mbps和10Mbps操作,它支持自动MDI/MDIX功能,简化网络安装和减少系统维护成本。支持Auto MDI/MDIX已内置4个49.9欧的精密电阻支持中断功能支持 MII/RMII 接口超低功耗

Zhichao_Zhang的博客 1万+

手把手教你搭建Howland电流源:从原理图到实测避坑指南(附Python数据分析)

本文详细介绍了Howland电流源的设计与实现,从原理图到实测避坑指南,涵盖电阻匹配、运放选择和PCB布局等关键环节。通过Python数据分析,展示了如何优化电路性能并解决常见问题,适合电子工程师和爱好者参考。

weixin_29291069的博客 636

【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解

一文带你读懂注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制,超详细的讲解,小白也能看得懂!

路人贾的博客 17万+

halcon C++编程 第4讲 HObject/HImage Mat相互转换(tcy)

网上有很多相互转换程序,但并不知那个正确,本文对相互转换后的结果和原对象比较是否相同判断转换是否正确。经测试ok.本文包括转换代码及测试是否相同。 1.转换程序: /************************************ HObject转为Mat:time:2021/3/16 V1.0 *************************************/ cv::Mat HalconClass::HObjectToMat(const HalconCpp::HObject&..

tcy-阿春 4937

通俗易懂理解通道注意力机制(CAM)与空间注意力机制(SAM)

通俗易懂理解通道注意力机制(CAM)与空间注意力机制(SAM)

IT菜鸟 12万+

Multisim仿真电路:(十二)MOS管缓启动电路设计与优化

本文详细介绍了基于Multisim的MOS管缓启动电路设计与优化方法。通过分析米勒平台效应,探讨RC参数选择、多级设计和有源电路等技巧,有效抑制冲击电流并优化开关损耗。文章结合仿真实例,提供实用的设计策略和实际应用注意事项,帮助工程师提升电源管理系统的可靠性。

pytorch8learner的博客 237

Unity零基础到进阶 ☀️| Unity中的 GC及优化 超级全面解析 ☆(ゝω・)v 建议收藏!

介绍: 在游戏运行的时候,数据主要存储在内存中,当游戏的数据在不需要的时候,存储当前数据的内存就可以被回收以再次使用。内存垃圾是指当前废弃数据所占用的内存,垃圾回收(GC)是指将废弃的内存重新回收再次使用的过程。 Unity中将垃圾回收当作内存管理的一部分,如果游戏中废弃数据占用内存较大,则游戏的性能会受到极大影响,此时垃圾回收会成为游戏性能的一大障碍点。 本文我们主要学习垃圾回收的机制,垃圾回收如何被触发以及如何提GC收效率来提高游戏的性能。 Unity内存管理机制简介 要想了解垃圾回收如何工作以及何时被

努力前行,总会成为自己心中的那道光 6万+

自注意力机制_每日一读:基于情感融合和多维自注意力机制的微博文本情感分析...

从今天开始,我会将每天的阅读笔记上传至公众号,因本人水平有限,如存在错误之处,还请批评指正3.基于情感融合和多维自注意力机制的微博文本情感分析3.1论文信息中国民航大学电子信息与自动化学院,韩萍,孙佳慧,方 澄,贾云飞计算机应用,2019年归档:WPS网盘\我的云文档\论文汇报\毕业论文\论文部分\短文本情感分析算法部分\参考文献3.2论文重点研究目的:作者认为在处理微博文本时,将表情符...

weixin_39740272的博客 812

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

基于注意力机制卷积神经网络结合门控循环单元Attention-CNN-GRU实现数据多维输入单输出预测附matlab代码

负荷预测在电网运行中至关重要,准确的负荷预测可以提高电网的稳定性和经济性。本文提出了一种基于注意力机制卷积神经网络结合门控循环单元(Attention-CNN-GRU)的负荷回归预测模型。该模型利用卷积神经网络提取负荷序列中的局部特征,并通过注意力机制赋予不同的特征权重,突出重要特征。同时,模型采用门控循环单元处理序列信息,捕捉负荷序列中的长期依赖关系。实验结果表明,该模型在多个数据集上取得了优异的预测性能,优于传统方法和现有深度学习模型。引言。

m0_57702748的博客 1566

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

目标检测论文解读复现之十二:基于注意力机制和上下文信息的目标检测算法

针对目标检测过程中存在小目标漏检问题,提出一种基于注意力机制和多尺度上下文信息的改进YOLOv5目标检测算法。

m0_70388905的博客 2674

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【GRU-Attention预测】基于门控循环单元融合注意力机制的数据分类预测研究(Matlab代码实现)

具体来说,GRU-Attention模型的输入是时间序列数据,经过GRU层进行特征提取和编码,然后通过注意力机制对GRU的输出进行加权求和,得到最终的分类预测结果。通过利用GRU网络进行时间序列数据的编码和特征提取,并结合注意力机制动态调整不同时间步的权重,GRU-Attention模型能够更好地捕捉时间序列数据中的关键信息,从而实现准确的数据分类预测。在GRU-Attention模型中,注意力机制被应用于GRU的输出层,以加强模型对关键时间步的关注。博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

weixin_46039719的博客 1262

【GRU-Attention预测】基于门控循环单元融合注意力机制的多变量时间序列预测研究(Matlab代码实现)

2]林靖皓,秦亮曦,苏永秀,等.基于自注意力机制的双向门控循环单元和卷积神经网络的芒果产量预测[J].计算机应用, 2020, 40(S01):5.DOI:10.11772/j.issn.1001-9081.2019091537.实验结果表明,GRU-Attention预测方法在多个时间序列数据集上均取得了优于其他方法的预测准确性和稳定性,证明了该方法的有效性和实用性。3. 引入注意力机制:将隐状态序列输入到注意力机制中,根据注意力权重自适应地选择和加权输入序列中的相关信息。行百里者,半于九十。

Ke_Yan_She的博客 208

基于粒子群优化双向门控循环单元融合注意力机制PSO-BiGRU-Attention的多变量时间序列预测MATLAB实现

随着人工智能和大数据技术的不断发展,时间序列预测在金融、气象、交通等领域中扮演着越来越重要的角色。而多变量时间序列预测则更能够反映真实世界中的复杂关系和相互影响。在过去的研究中,传统的时间序列预测方法往往难以有效捕捉到多变量之间的非线性关系和长期依赖关系,因此需要更加先进的模型来解决这一问题。在这样的背景下,粒子群优化(Particle Swarm Optimization, PSO)算法作为一种新型的智能优化算法,被引入到时间序列预测中。

matlab_dingdang的博客 1197

基于多头注意力机制时间卷积网络-双向门控循环单元TCN-BIGRU-Multihead-Attention实现数据回归预测附matlab代码

本文提出了一种基于多头注意力机制的时间卷积网络-双向门控循环单元(TCN-BIGRU-Multihead Attention)模型,用于数据回归预测。该模型结合了时间卷积网络和双向门控循环单元的优势,并引入多头注意力机制来增强模型对长期依赖关系的建模能力。实验结果表明,该模型在多个数据集上取得了优异的性能,优于传统的时间序列预测模型。

qq_59747472的博客 1073

基于MATLAB实现粒子群优化双向门控循环单元融合注意力机制PSO-BiGRU-Attention的多变量时间序列预测

随着人工智能和大数据技术的不断发展,时间序列预测在金融、气象、交通等领域中扮演着越来越重要的角色。而多变量时间序列预测则更能够反映真实世界中的复杂关系和相互影响。在过去的研究中,传统的时间序列预测方法往往难以有效捕捉到多变量之间的非线性关系和长期依赖关系,因此需要更加先进的模型来解决这一问题。在这样的背景下,粒子群优化(Particle Swarm Optimization, PSO)算法作为一种新型的智能优化算法,被引入到时间序列预测中。

m0_60703264的博客 991

KOA-CNN-GRU-selfAttention分类预测 | Matlab实现开普勒算法优化注意力机制卷积神经网络结合门控循环单元多特征分类预测(自注意力机制)

本文提出了一种基于开普勒算法优化注意力机制卷积神经网络结合门控循环单元(KOA-Attention-CNN-GRU)的模型,用于数据多维输入分类预测。该模型首先利用开普勒算法优化注意力机制,对输入数据进行特征提取和增强。然后,利用卷积神经网络进一步提取数据特征,并利用门控循环单元对时间序列数据进行建模。最后,利用全连接层对提取的特征进行分类。实验结果表明,该模型在多个数据集上取得了良好的分类效果,优于其他现有方法。随着数据量的不断增长,数据多维输入分类预测任务变得越来越重要。

m0_57702748的博客 949

Matlab基于注意力机制融合门控循环单元数据GRU-Attention分类预测

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。????个人主页:Matlab科研工作室????个人信条:格物致知。❤️ 内容介绍在机器学习和深度学习领域,分类问题一直是一个重要的研究方向。分类任务的目标是将输入数据分为不同的类别,以便能够对未知数据进行准确的分类。在这个博文中,我们将介...

m0_60703264的博客 383

TCN-BiGRU-Multihead-Attention预测 | Matlab实现多头注意力机制多变量时间序列预测

本文提出了一种基于多头注意力机制的时间卷积网络-双向门控循环单元(TCN-BIGRU-Multihead Attention)模型,用于数据回归预测。该模型结合了时间卷积网络和双向门控循环单元的优势,并引入多头注意力机制来增强模型对长期依赖关系的建模能力。实验结果表明,该模型在多个数据集上取得了优异的性能,优于传统的时间序列预测模型。

m0_57702748的博客 871
上一篇: 强化学习第二版(翻译)第一章 导论 第六节 小结 1.6 Summary
下一篇: 强化学习策略梯度梳理1 - REINFORCE(附代码)
ThousandsOfWind
博客等级 码龄11年 21粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值