即插即用的3D神经元注意算法

在快速发展的人工智能领域,科技的进步往往源于对复杂问题的突破性解决方案。如今,我们正站在一种激动人心的技术创新的前沿——即插即用的3D神经元注意算法。这一前沿技术不仅为计算神经科学提供了全新的视角,也为人工智能的未来打开了新的大门,想象一下,在这个信息爆炸的时代,计算机能够像人类一样,精准地关注和处理多维度的数据,仿佛拥有了第三只眼睛来观察世界。

本文所涉及所有资源均在地址可获取

目录

概述

核心逻辑

复现过程

写在最后


概述

        本文提出了一种概念简单但非常有效的卷积神经网络注意模型。与现有的基于通道和空间的注意力模型相比,该模型在不增加参数的情况下,为一个层中的特征映射推断3D注意力权重.具体地说,作者基于一些著名的神经科学理论,提出了优化能量函数来确定每个神经元的重要性。之后,进一步推导了能量函数的快速闭式解,并表明该解可以在不到10行的代码中实现。该模块的另一个优点是,大多数算子是基于对所定义的能量函数的解来选择的,从而避免了太多的结构调整工作。对多种视觉任务的定量评价表明,该模型灵活有效地提高了多个ConvNets的表示能力。

        此外,我将该算法应用到了多模态情感计算和抑郁症检测任务中,利用该算法为每个单模态神经元生成一个3D权重,并提升后续inter-modal间的交互效率,同时,由于现如今大多数的情感计算数据集都是基于英文语言开发的,我还加入了中文多模态情感计算数据集(SIMS, SIMSv2)应用在模型中,以开发适用于国人的情感计算分析模型,并应用在情感疾病(如抑郁症、自闭症)检测任务,为医学心理学等领域提供帮助。

这篇文章,我讲解并复现了一篇经典有效的注意力算法 – SimAM,并将他应用在多模态情感计算和抑郁症检测任务中,此外,它还可以应用在多种任务中,比如计算机视觉,NLP等,原创部分为将该算法应用在了情感计算和抑郁症数据集以实现抑郁症检测任务,以及在图像分类(COCO,CIFAR10),SIMS数据集和SIMV2多种数据集上进行实验。

研究背景:卷积神经网络(ConvNets)在大规模数据集(例如,ImageNet)大大提升了许多视觉任务的性能,例如图像分类、目标检测和视频理解。多项研究表明,一个更好的ConvNet结构可以显著提高在各种问题上的性能。因此,构建一个强的ConvNet是视觉研究中的一个重要任务。现代的ConvNet通常有多个阶段,每个阶段都由几个块组成。这种块是由卷积、池化、激活等操作符或某种定制的元结构(本文称之为模块)构成的。

主要贡献:受人脑注意机制的启发,本文提出了一个具有全三维权重的注意模型,并设计了一个能量函数来计算权重;导出能量函数的封闭形式的解,其加速了权重计算并且允许整个模块的轻量形式;将提出的模块集成到一些著名的网络中,并在各种任务上对它们进行评估。我们的模块在精度、模型大小和速度方面与其他流行模块相比表现良好

核心逻辑

        为了成功地实现注意力,我们需要估计单个神经元的重要性。如何根据层中的特征图计算单个神经元的重要性?在视觉神经科学中,信息量最大的神经元通常是那些与周围神经元表现出不同放电模式的神经元。

此外,活跃的神经元还可以抑制周围神经元的活动,这种现象被称为空间抑制。换句话说,显示清楚的空间抑制效应的神经元应当被给予更高的优先级(即,重要性)。找到这些神经元的最简单的实现是测量一个目标神经元和其他神经元之间的线性可分性。基于这些神经科学的发现,我们为每个神经元定义了以下能量函数:

这里,t^=wtt+btt^=wt​t+bt​ 和 x^i=wtxi+btx^i​=wt​xi​+bt​ 是 tt 和 xixi​ 的线性变换,其中 tt 和 xixi​ 是输入特征 X∈RC×H×WX∈RC×H×W 中单个通道的目标神经元和其他神经元。ii 是空间维度上的索引,M=H×WM=H×W 是该通道上的神经元的数量。wtwt​ 和 btbt​ 是对变换的加权和偏置。等式(1)中的所有值都是标量。当 nn 等于 ytyt​ 并且所有其他 nxinxi​ 都是 yoyo​ 时,方程(1)达到最小值,其中 ytyt​ 和 yoyo​ 是两个不同的值。通过最小化该等式,等式(1)等效于找到目标神经元 tt 和同一通道中的所有其他神经元之间的线性可分性。为简单起见,我们采用二进制标签(即,1 和 -1),并且还将正则化器添加到等式(1)中。最终的能量函数由下式(2)给出:

理论上,对于每个通道,我们有 MM 个能量函数。通过一些迭代求解器(如 SGD)来求解所有这些方程在计算上是非常繁重的。幸运的是,关于 wtwt​ 和 btbt​ 的方程 (2) 有一个快速的闭式解,可以通过以下方式轻松获得: 

μt​=M−11​∑i=1M−1​xi​ 和 σt2=1M−1∑i=1M−1(xi−μt)2σt2​=M−11​∑i=1M−1​(xi​−μt​)2 分别是在该通道中所有神经元(除了目标神经元tt)上的均值和方差。由于公式(3)和公式(4)的现有解是在单个通道上获得的,因此可以合理地假设单个通道中的所有像素都遵循相同的分布。基于这一假设,均值和方差可以在所有神经元上计算,并在该通道的所有神经元上重复使用。这样可以显著减少计算成本,避免为每个位置重复计算μμ 和 σσ。最终的最小能量可以通过以下公式计算: 

其中,μ^=1M∑i=1Mxiμ^​=M1​∑i=1M​xi​ 和 σ^2=1M∑i=1M(xi−μ^)2σ^2=M1​∑i=1M​(xi​−μ^​)2。公式 (5) 表明,能量 et∗et∗​ 越低,神经元 tt 就越能从周围的神经元中脱颖而出,对于视觉处理而言也更为重要。因此,每个神经元的重要性可以通过 1/et∗1/et∗​ 来表示。与我们的方法类似,研究了一个用于语义部分匹配的类似函数,但他们的方法需要计算一个大的协方差矩阵,这不适合用于深度神经网络。与不同的是,我们操作单个神经元,并将这种线性可分性集成到一个端到端框架中。此外,我们还从神经科学的角度提供了全面的理解。

截至目前,我们已经推导出一个能量函数并找出了每个神经元的重要性。根据 (Hillyard et al., 1998) 的研究,哺乳动物大脑中的注意力调节通常表现为对神经元反应的增益(即缩放)效应。因此,我们采用缩放操作而非加法来进行特征精炼。我们模块的整个精炼阶段为,其中 EE 将所有通道和空间维度上的 et∗et∗​ 进行汇总。为了限制 EE 中过大的值,使用了 sigmoid 函数。由于 sigmoid 函数是单调函数,这不会影响每个神经元的相对重要性:

复现过程

在情感计算任务中,可以看到加入 SimAM 算法后性能有了明显提升,证明了其有效性:

在下载附件并准备好数据集并调试代码后,进行下面的步骤,附件已经调通并修改,可直接正常运行,数据集准备下载附件中多种数据集已提取好的特征文件。把它放在"./dataset”目录。下载预训练语言模型 下载附件中SentiLARE语言模型文件,然后将它们放入"/pretrained-model / sentilare_model”目录:

pip install -r requirements.txt
$ python train.py

训练过程和最终结果如下所示:

近年来,注意力机制在深度学习中,尤其是在卷积神经网络(CNN)中的应用,取得了显著进展。传统的注意力模块,如SE(Squeeze-and-Excitation)模块和CBAM(Convolutional Block Attention Module),通过调整不同通道和空间位置的权重来增强CNN的特征表达能力。然而,这些方法通常依赖于复杂的结构设计和大量的参数,这在某些情况下会增加模型的计算成本,并且在实际应用中可能会受限,SimAM(Simple Attention Module) 是一种新型的注意力机制,旨在通过简化注意力模块的结构来减少计算复杂度,同时保持高效的特征增强能力。SimAM的核心特点包括:

1)参数无关:SimAM模块不引入任何额外的可训练参数。这意味着在模型的训练和推理过程中,SimAM不会增加计算成本或内存占用。

2)基于神经科学的动机:SimAM的设计灵感来自于神经科学,尤其是对单个神经元行为的模拟。它通过计算每个神经元在特征图中的“响应强度”来确定该位置的重要性。响应强度的计算基于输入特征的均方误差(MSE),模拟了神经元对输入刺激的响应。

3)简单的实现:SimAM通过简单的数学运算(如均方误差和Sigmoid函数)来计算注意力分数,这使得它易于实现,并且能够与现有的CNN架构无缝集成。

4)增强特征表示:SimAM能够有效地增强重要的特征表示,从而提高模型在图像分类、目标检测等任务中的表现。

写在最后

        在深入探讨即插即用的3D神经元注意算法后,我们可以清晰地看到,这一技术正将人工智能的未来推向一个全新的高度。通过在三维空间中实现高度精准的感知与分析,这一算法不仅突破了传统二维数据处理的局限,还开创了无数可能性,使计算机能够以更接近人类思维的方式理解和处理复杂信息,即插即用的3D神经元注意算法的出现,标志着人工智能领域的一次深刻变革。从医疗影像分析到虚拟现实体验,从自动驾驶到智能机器人,这一技术正以令人瞩目的速度重新定义着我们与技术互动的方式。它不仅为我们提供了更为精确的数据处理能力,也为各行业带来了革命性的应用前景。

详细复现过程的项目源码、数据和预训练好的模型可从该文章下方附件获取。

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

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

相关文章

Python教程(十四):Requests模块详解

目录 专栏列表前言:安装 Requests查看包安装情况: RESTful 介绍RESTful API设计原则示例 基本用法1. 查询ID为1的用户(GET)2. 创建新用户(POST)3. 更新ID 为 1 的用户(PUT)4. 删除ID…

18. 基于ES实战海量数据检索

18. 基于ES实战海量数据检索 一. 概述二. Elasticsearch 全文检索1. 分布式搜索引擎2. 搜索引擎种类3. 倒排索引三. elastic使用1. 官网介绍2. docker安装3. elasticsearch-head工具4. 分词与内置分词4.1 内置分词器(了解即可)4.2 `IK`中文分词器三. 整合SpringCloud1. 基础配置…

计算函数(c语言)

1.描述 //小乐乐学会了自定义函数,BoBo老师给他出了个问题,根据以下公式计算m的值。 // //其中 max3函数为计算三个数的最大值,如: max3(1, 2, 3) 返回结果为3。 //输入描述: //一行,输入三个整数&#xff…

视频汇聚/安防综合管理系统EasyCVR非管理员账户能调用分配给其他用户的通道是什么原因?

视频汇聚/安防综合管理系统EasyCVR视频监控平台,作为一款智能视频监控综合管理平台,凭借其强大的视频融合汇聚能力和灵活的视频能力,在各行各业的应用中发挥着越来越重要的作用。平台不仅具备视频资源管理、设备管理、用户管理、网络管理和安…

超精细CG杰作:8K壁纸级官方艺术插画,展现极致美丽与细节的汉服女孩

极致精美的数字艺术杰作:8K壁纸级别的官方插画,展现超高清细节与和谐统一的美感,女孩的精致面容与眼神在光影下熠熠生辉,汉服主题下的超高分辨率作品,文件巨大,细节丰富,令人惊叹。 正向提示词…

Android gradle 构建

Understanding Tasks - Gradle task kapt 是 Kotlin 语言的注解处理器,它是 Android Studio 中用于处理 Kotlin 注解的工具。它通过在编译期间生成代码来增强 Kotlin 代码的功能。需要 Kotlin 编译器来解析和处理注解;使用 APT 来生成代码&#xff0c…

【初阶数据结构】链表(附题)

目录 一、顺序表的问题及思考 二、单链表 2.1链表的概念及结构 2.2.单链表的实现 2.2.1.节点的定义 2.2.2.链表的打印 2.2.3.头部插入删除/尾部插入删除 a.创建节点 b.尾插 c.头插 d.尾删 e.头删 2.2.4.查找数据 2.2.5.在指定位置之前插入数据 2.2.6删除pos节点 …

每日OJ_牛客_DP3跳台阶扩展问题

目录 DP3跳台阶扩展问题 题解代码1(dp) 题解代码2(找规律) DP3跳台阶扩展问题 跳台阶扩展问题_牛客题霸_牛客网 题解代码1(dp) 假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法…

矩阵中的最大得分(Lc3148)——动态规划

给你一个由 正整数 组成、大小为 m x n 的矩阵 grid。你可以从矩阵中的任一单元格移动到另一个位于正下方或正右侧的任意单元格(不必相邻)。从值为 c1 的单元格移动到值为 c2 的单元格的得分为 c2 - c1 。 你可以从 任一 单元格开始,并且必须…

Spring由哪些模块组成?

Spring由哪些模块组成? 简单描述则是主要由以下几个模块组成: Spring框架采用的是分层架构,它一系列的功能要素被分成20个模块,这些模块大体分为Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programmi…

Spring:IOC的详解☞Bean的实例化、Bean的生命周期

1、Bean基础配置 bean的基础配置&#xff1a; <bean id"" class""/> Bean的别名&#xff1a;name属性 Bean的作用范围&#xff1a;scope配置 使用bean的scope属性可以控制bean的创建是否为单例&#xff1a; singleton 默认为单例prototype 为非单…

ES6 (一)——ES6 简介及环境搭建

目录 简介 环境搭建 可以在 Node.js 环境中运行 ES6 webpack 入口 (entry) loader 插件 (plugins) 利用 webpack 搭建应用 gulp 如何使用&#xff1f; 简介 ES6&#xff0c; 全称 ECMAScript 6.0 &#xff0c;是 JavaScript 的下一个版本标准&#xff0c;2015.06 发版…

Python 如何创建和解析 XML 文件

XML&#xff08;可扩展标记语言&#xff09;是一种广泛使用的标记语言&#xff0c;主要用于存储和传输数据。它具有结构化、层次化的特点&#xff0c;常被用作数据交换格式。Python 提供了多种工具和库来处理 XML 文件&#xff0c;包括创建、解析和操作 XML 文档。 一、XML 简…

Ubuntu24.04使用SRS 搭建 RTMP流媒体服务器

一、简介 SRS(Simple Realtime Server)是一个简单高效的实时视频服务器&#xff0c; 是国人写的一款非常优秀的开源流媒体服务器软件&#xff0c;可用于直播/录播/视频客服等多种场景&#xff0c;其定位是运营级的互联网直播服务器集群。支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28…

手撕C++入门基础

1.C介绍 C课程包括&#xff1a;C语法、STL、高阶数据结构 C参考文档&#xff1a;Reference - C Reference C 参考手册 - cppreference.com cppreference.com C兼容之前学习的C语言 2.C的第一个程序 打印hello world #define _CRT_SECURE_NO_WARNINGS 1 // test.cpp // …

甄选系列“论软件开发过程RUP及其应用”,软考高级论文,系统架构设计师论文

论文真题 RUP(Rational Unified Process)是IBM公司的一款软件开发过程产品,它提出了一整套以UML为基础的开发准则,用以指导软件开发人员以UML为基础进行软件开发。RUP汲取了各种面向对象分析与设计方法的精华,提供了一个普遍的软件过程框架,可以适应不同的软件系统、应用…

http request-02-Ajax XHR 的替代方案-fetch 标准

http 请求系列 http request-01-XMLHttpRequest XHR 简单介绍 http request-01-XMLHttpRequest XHR 标准 Ajax 详解-01-AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;入门介绍 Ajax XHR 的替代方案-fetch Ajax XHR 的替代方案-fetch 标准 Ajax 的替代方案…

06、stm32 引脚输入

一、配置 二、代码 /* USER CODE BEGIN WHILE */while (1){/** 引脚默认上拉 高电平 按键按下 读取到低电平* */if(HAL_GPIO_ReadPin(GPIOB,KEY_Pin) GPIO_PIN_RESET ){HAL_Delay(20);if(HAL_GPIO_ReadPin(GPIOB,KEY_Pin) GPIO_PIN_RESET ){HAL_GPIO_TogglePin(GPIOC,LED_P…

【C++】智能指针详解

一、从new和delete谈起 在C中&#xff0c;可以使用new和delete关键字进行对象的创建和销毁&#xff0c;new一个对象实际上是在堆上分配内存&#xff0c;而new出来的对象也要自己用delete释放&#xff0c;从而回收内存&#xff0c;否则会造成内存的泄露。由程序员自己new来分配…