⌈ 传知代码 ⌋ 记忆注意力用于多模态情感计算!

news2025/1/11 14:15:39

💛前情提要💛

本文是传知代码平台中的相关前沿知识与技术的分享~

接下来我们即将进入一个全新的空间,对技术有一个全新的视角~

本文所涉及所有资源均在传知代码平台可获取

以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦!!!

以下内容干货满满,跟上步伐吧~


📌导航小助手📌

  • 💡本章重点
  • 🍞一. 概述
  • 🍞二. 研究背景
  • 🍞三.模型结构和代码
  • 🍞四. 数据集介绍
  • 🫓总结


💡本章重点

  • 记忆注意力用于多模态情感计算!

🍞一. 概述

近年来,社交媒体的快速扩张推动了用户生成内容的大幅增加,特别是视频。跨不同模态的自动情感分析已成为旨在增强人机交互的关键研究领域。情感分析最初专注于提取和分析通过文本传达的情感。然而,随着计算能力的提高和视听通信的兴起,多模态情感分析(MSA)已经出现。这种方法集成了文本,音频和视觉输入,以加深对人类情感的理解。MSA在教育、客户反馈分析、心理健康监测和个性化广告等多个领域都有应用,显著增强了我们在各种沟通形式中解释和应对情感线索的能力。多模态情感分析(MSA)试图整合来自视觉,听觉和文本来源的情感线索来预测说话者的情感状态或倾向。然而,这些模式的情绪信号可能会有微妙的变化。下图示出了MSA的好处,展示了添加视觉和音频信息可以提高在歧义句和不同上下文中情感极性预测的准确性。

在这里插入图片描述
此外,由于现如今大多数的情感计算数据集都是基于英文语言开发的,所以我加入了中文数据集(SIMS, SIMSv2)应用在模型中,以开发适用于国人的情感计算分析模型,在未来,我也计划加入更多小众数据集,以便检测更隐匿的情感,如嫉妒、嘲讽等,使得AI可以更好的服务于社会。


🍞二. 研究背景

随着多模态数据量的迅速增加,多模态情感分析(MSA)越来越受到关注。该方法通过整合不同数据模态间的信息,提高了情感极性提取的准确性,从而实现了信息的全面融合,提高了情感分析的精度。然而,当前的深度模型往往忽视了全局记忆信息,无法有效地辅助情感分析,因此我将介绍一种新的记忆注意力模块;此外现如今的研究表明,文本模态相对于其他模态拥有更丰富和准确的情感信息,因此,我提出了一个新的文本增强模块。


🍞三.模型结构和代码

1. 记忆注意力模块(EM)

记忆模块在多模态情感计算中起着关键作用,它允许模型通过注意机制根据查询动态地访问和整合记忆中的信息,从而增强特征的表达能力,使模型能够更准确地理解和捕捉复杂的情感内容。此外,EM可以存储和检索多模态数据中的关键信息,帮助模型减少噪声或不完整数据的不确定性,并提高情感分析任务的准确性和效率,并且通过动态更新和学习如何整合不同模态数据之间的关系,还使模型能够在训练后通过推广到以前看不见的数据来表现良好,保持高效和准确。同时,EM模块应用于所有三种模式(文本、视觉和声学)。

在这里插入图片描述

在这个阶段,我们拥有包含关键记忆信息的特征,用于后续的特征交互。

代码实现

class ExternalMemory(nn.Module):
    def __init__(self, text_dim, mem_size):
        super(ExternalMemory, self).__init__()
        self.text_dim = text_dim
        self.mem_size = mem_size
        
        # 外部记忆矩阵
        self.memory = nn.Parameter(torch.randn(mem_size, text_dim))
        
        # Linear transformations
        self.query_transform = nn.Linear(text_dim, text_dim)
        self.key_transform = nn.Linear(text_dim, text_dim)
        self.value_transform = nn.Linear(text_dim, text_dim)
        
    def forward(self, query):
        # 将输入的查询向量query进行线性变换,得到变换后的查询向量。这个变换的目的是将查询向量调整到与记忆矩阵相同的维度,以便进行后续的注意力计算。
        query = self.query_transform(query)  # (batch_size, text_dim)
        # 使用self.key_transform(self.memory)和self.value_transform(self.memory)分别对外部记忆矩阵进行键和值的线性变换,
        # 得到变换后的键矩阵和值矩阵。这些变换将外部记忆中的每个条目映射到与查询向量相同的空间。
        key = self.key_transform(self.memory)  # (mem_size, text_dim)
        value = self.value_transform(self.memory)  # (mem_size, text_dim)
        
        # 通过矩阵乘法torch.matmul(query, key.t())计算查询向量与每个键之间的点积注意力分数。
        # 这里使用了缩放点积注意力机制,通过除以math.sqrt(self.text_dim)来缩放注意力分数,其中self.text_dim是查询和键的维度大小
        scores = torch.matmul(query, key.t()) / math.sqrt(self.text_dim)  # (batch_size, mem_size)

        # 对注意力分数应用softmax函数F.softmax(scores, dim=-1),得到注意力权重,表示每个外部记忆条目对查询的重要性。
        attention_weights = F.softmax(scores, dim=-1)  # (batch_size, mem_size)
        
        # 使用注意力权重对值矩阵进行加权求和,计算加权平均值。weighted_sum表示基于注意力机制加权后的记忆信息.
        weighted_sum = torch.matmul(attention_weights.unsqueeze(1), value.unsqueeze(0))  # (batch_size, 1, text_dim)
        weighted_sum = weighted_sum.squeeze(1)  # (batch_size, text_dim)
        
        return weighted_sum

2. 文本增强模块

模块的核心组件是跨模态嵌入单元。该单元利用跨模态注意力机制捕捉长程非文本情感信息,并生成基于文本的非语言嵌入。嵌入层的参数是可学习的,用于将经过特征转换策略处理后的非文本索引向量映射到高维空间,进而生成文本模态对非文本模态的注意力权重矩阵。换句话说,这一单元通过复杂的神经网络结构,有效地整合了不同模态之间的信息交互,从而提升了情感分析任务的多模态处理能力。

训练开始阶段,由于语言表征和非语言表征处于不同的特征空间,它们之间的相关性通常较低。因此,注意力权重矩阵中的元素可能较小。为了更有效地学习模型参数,研究者在应用 softmax 函数之前使用超参数来缩放这些注意力权重矩阵。

基于注意力权重矩阵,可以生成基于文本的非语言向量。将基于文本的声学嵌入和基于文本的视觉嵌入结合起来,形成非语言增强嵌入。最后,通过整合非语言增强嵌入来更新文本的表示。因此,该模块的提出旨在为文本提供非语言上下文信息,通过增加非语言增强嵌入来调整文本表示,使其在语义上更加准确和丰富。


🍞四. 数据集介绍

  1. CMU-MOSI: 它是一个多模态数据集,包括文本、视觉和声学模态。它来自Youtube上的93个电影评论视频。这些视频被剪辑成2199个片段。每个片段都标注了[-3,3]范围内的情感强度。该数据集分为三个部分,训练集(1,284段)、验证集(229段)和测试集(686段)。

  2. CMU-MOSEI: 它类似于CMU-MOSI,但规模更大。它包含了来自在线视频网站的23,453个注释视频片段,涵盖了250个不同的主题和1000个不同的演讲者。CMU-MOSEI中的样本被标记为[-3,3]范围内的情感强度和6种基本情绪。因此,CMU-MOSEI可用于情感分析和情感识别任务。

  3. SIMS/SIMSV2: CH-SIMS数据集是一个中文多模态情感分析数据集,为每种模态提供了详细的标注。该数据集包括2281个精选视频片段,这些片段来自各种电影、电视剧和综艺节目,每个样本都被赋予了情感分数,范围从-1(极度负面)到1(极度正面)

性能展示

在情感计算任务中,通过对比实验和消融实验,可以看到我们的模块使得模型性能明显提高,证明了其有效性;

1. 对比实验:

在这里插入图片描述

2. Case Study:

在这里插入图片描述

运行过程

  • 训练过程

在这里插入图片描述

  • 最终结果

在这里插入图片描述


🫓总结

综上,我们基本了解了“一项全新的技术啦” 🍭 ~~

恭喜你的内功又双叒叕得到了提高!!!

感谢你们的阅读😆

后续还会继续更新💓,欢迎持续关注📌哟~

💫如果有错误❌,欢迎指正呀💫

✨如果觉得收获满满,可以点点赞👍支持一下哟~✨

【传知科技 – 了解更多新知识】

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

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

相关文章

【TS】TypeScript数组类型:掌握数据集合的类型安全

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 TypeScript数组类型:掌握数据集合的类型安全引言1. TypeScript数组类…

Three.js结合物理引擎实现掉落效果

<template> </template><script setup> import * as THREE from three import gsap from gsap //导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入 dat.gui import { GUI } from three/addons/libs/lil-gui…

好用的抠图软件在哪里找?这篇文章就有几款好用的抠图工具

在图像处理的世界中&#xff0c;抠图技术无疑是一项至关重要的技能。 无论是设计师、摄影师还是普通的图像编辑爱好者&#xff0c;都可能需要从一张图片中精确地分离出某个对象或元素。但是&#xff0c;手动抠图不仅耗时而且技术要求高&#xff0c;这时候&#xff0c;一款优秀…

PTrade常见问题系列17

是否支持量化帐号的指定服务器分发? 是否可以支持部分量化帐号不根据原有分发规则&#xff0c;而是直接指定分发&#xff1f; 1、若需要增加VIP服务器专用于新增的帐号进行分配&#xff0c;可以参考【量化】量化Nginx用户指定服务器处理步骤.docx&#xff1b; 2、若所有服务…

【音视频之SDL2】Windows配置SDL2项目模板

文章目录 前言 SDL2 简介核心功能 Windows配置SDL2项目模板下载SDL2编译好的文件VS配置SDL2 测试代码效果展示 总结 前言 在开发跨平台的音视频应用程序时&#xff0c;SDL2&#xff08;Simple DirectMedia Layer 2&#xff09;是一个备受欢迎的选择。SDL2 是一个开源库&#x…

“AI+”时代,人工智能前景怎么样?

随着“互联网”到“AI”的转型&#xff0c;时代发展迎来了新的阶段。 在政策、技术和市场的三重驱动之下&#xff0c;人工智能正在快速响应各领域的广泛诉求。虽然人工智能的兴起“打消”了一些传统领域的念想&#xff0c;但同时也开辟了更加多元化的市场。 当下互联网大厂人…

AgentBench: Evaluating LLMs As Agents

AgentBench: Evaluating LLMs As Agents Github&#xff1a; https://github.com/THUDM/AgentBench 榜单&#xff1a;https://llmbench.ai/agent/data demos&#xff1a;https://llmbench.ai/agent/demo 备注&#xff1a;该论文介绍为AgentBench v0.2版本 一、介绍 现如今&am…

计算机网络01

文章目录 浏览器输入URL后发生了什么&#xff1f;Linux 系统是如何收发网络包的&#xff1f;Linux 网络协议栈Linux 接收网络包的流程Linux 发送网络包的流程 浏览器输入URL后发生了什么&#xff1f; URL解析 当在浏览器中输入URL后&#xff0c;浏览器首先对拿到的URL进行识别…

sdwan

分支互联网络解决方案 - 华为企业业务 分支互联网络解决方案 随着5G、AI、物联网等新兴技术与云紧密结合&#xff0c;企业业务智能化和云化加速。 企业分支WAN流量激增&#xff0c;传统以MPLS专线为主的广域互联网络难以支撑业务发展。SD-WAN成为应对云时代的必然选择。 SD…

将 magma example 改写成 cusolver example eqrf

1&#xff0c;简单安装Magma 1.1 下载编译 OpenBLAS $ git clone https://github.com/OpenMathLib/OpenBLAS.git $ cd OpenBLAS/ $ make -j DEBUG1 $ make install PREFIX/home/hipper/ex_magma/local_d/OpenBLAS/1.2 下载编译 magma $ git clone https://bitbucket.org/icl…

专业且免费的重复文件查找与删除工具,文本,图片,音频和视频等

AllDup是一款专业的重复文件查找与删除工具。作为一款免费软件&#xff0c;AllDup以其出色的功能和简洁的操作界面广受欢迎。它不仅可以有效地识别和删除电脑硬盘以及外部设备如USB闪存驱动器中的重复文件&#xff0c;还能对多媒体文件如图片、音频和视频等进行特殊处理&#x…

GUI图形化界面操作(下部)

目录 ​编辑 前言 Swing 窗口 注意点 新增的组件 进度条组件 开关按钮 多面板和分割面板 多面板 分割面板 ​编辑 选项窗口 对话框带三个选项是&#xff0c;否&#xff0c;取消。 对话框提示输入文本: 前言 修炼中&#xff0c;该篇文章为俺很久前的学习笔记 Swi…

Tomcat的安装配置教程

一、服务器的安装 tomcat官方安装网站&#xff1a;http://tomcat.apache.org/ 点击选择想要安装的版本 选择与本机的字节匹配的压缩包进行安装 二、 环境配置 打开系统 进行高级系统配置 配置环境变量 新建系统变量 增加新变量&#xff0c;复制tomcat文件的安装路径为…

HTML,CSS,JavaScript实现——井字棋游戏

和大家分享一个经典的游戏项目——井字棋游戏。这个项目不仅能带你回味童年的乐趣&#xff0c;还能帮助你练习 HTML、CSS 和 JavaScript 编程。 项目介绍 井字棋游戏是一个两人对战游戏&#xff0c;玩家轮流在一个3x3的网格上标记 X 或 O。先将三个标记连成一条直线&#xff…

彻底解决Google浏览器自动删除下载文件或下载失败

需求背景 最近发现在阿里巴巴国际站聊天过程中,客户发的文件或软件,Goole浏览器居然无法下载,或者下载一会就提示失败,莫名其妙。错误提示如下:仔细看发现是【已拦截未经验证的下载内容】。 解决方案: 1、打开浏览器设置 2、打开隐私安全 3、配置安全浏览 4、配置完成-…

面试:CUDA Tiling 和 CPU tiling 技术详解

目录 一、CUDA Tiling 和 CPU Tiling 技术概述 &#xff08;一&#xff09;技术原理 &#xff08;二&#xff09;应用场景 &#xff08;三&#xff09;优势和劣势 二、Tiling 技术在深度学习中的应用 三、Tiling 技术的缺点 一、CUDA Tiling 和 CPU Tiling 技术概述 Til…

介绍五款广受好评的企业级加密软件

在当今信息化时代&#xff0c;数据安全已成为企业管理的重要环节。随着网络攻击和数据泄露事件的频繁发生&#xff0c;如何有效保护企业数据不被泄露&#xff0c;成为各大企业关注的焦点。加密软件作为一种有效的防护工具&#xff0c;通过对数据进行加密处理&#xff0c;确保敏…

react中使用Redux管理token以及token持久化

1.安装插件 npm i reduxjs/toolkit react-redux 2.新建状态管理文件 在src下新建store文件夹&#xff0c;store文件夹下新建模块文件夹(modules)和入口文件&#xff08;index.js&#xff09;&#xff0c;modules文件夹下新建setToken.js文件 3.配置setToken.js import { cr…

梅卡曼德 Mech-Eye 工业级3D相机

自研高性能工业级3D相机&#xff0c;精度高、速度快、抗环境光、成像质量高&#xff0c;可对各类材质物体生成高质量3D点云数据。产品线完整&#xff0c;满足远/中/近不同距离下对于抗环境光、高精度、大视野、高速度、小体积的需求。