传知代码-让机器感受你的情绪!(论文复现)

2024-09-03 22:44

本文主要是介绍传知代码-让机器感受你的情绪!(论文复现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码以及视频讲解

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

让计算机理解你的情绪!

随着近年来社交媒体的快速增长,社交媒体上的用户生成内容(例如视频)的量大幅增加。不同模态的自动情感分析有利于人机交互,并吸引了大量的研究兴趣。多模态情感分析(MSA)旨在捕获和整合来自不同相关模态的情感信息,以预测说话者的情感状态或倾向。通常,我们可以从视频中获得三种形式:视觉,声学和文本。情感分析是一个重要的研究领域,旨在从人类话语中提取和融合情感信息。由于人类情感的多样性,多模态分析往往比单一模态分析更准确。为了补充相关模态之间的信息,一种有效的方法是执行跨模态交互。最近,基于transformer的框架已经显示出强大的捕获长范围依赖关系的能力,从而引入了几种基于transformer的多模态处理方法。
在这里插入图片描述

经过我对模型结构的修改和特征提取方法的改进,新模型的性能得到了很大的提升(3.22%)!证明了改进的有效性!

[注]:文中的使用的数据进行了重新提取,以适应当前复现和改进的模型,其中模型文件在附件中,数据、预训练模型在附件中的readme文件中都附上了下载链接,喜欢的朋友可以下载讨论!

一、概述

这篇文章我复现了一篇经典情感计算的论文 ‘TensorFormer: ATensor-Based Multimodal Transformer for Multimodal Sentiment Analysis and Depression Detection’,并加入其他模块进行了优化,以及不同的特征提取方法,获得了不错的效果;

二、主要贡献

  1. 提出TesnorFormer,一种新的基于张量的多模态Transformer,用于MSA任务。与以往的多模态工作相比,TensorFormer可以更有效地交换全局跨模态信息;
  2. 提出了一个注意力张量,基于张量的跨模态注意力机制。注意张量不仅考虑了不同模态的特点,而且同时与所有相关模态进行交互;
  3. 我个人采用了不同的特征提取方式 – SentiLARE;
  4. 加入了Multi-head CrossAttention模块和LSTM模块,增强了交互和模态时间信息的提取。
    在这里插入图片描述

三、模型结构和改进

1. 总体框架
下图为模型总体框架,主要包含特征提取,Global Cross-Modality Interaction(TensorFormer Block,Attention Tenson),Parallel Feed-Forward以及输出层:
在这里插入图片描述

2. Global Cross-Modality Interaction
为了执行全面的跨模态交互,设计了TensorFormer,其基本块结构如下图所示。出于通用性和可扩展性考虑,我们将输入模态特征表示为 X t X_t Xt (text)、 X a X_a Xa (acoustic)和 X v X_v Xv (visual),以说明TensorFormer的结构。在信息交换之前,采用线性变换将特征投影到相同的维度中。TensorFormer块中有两个主要模块,全局交叉注意模块和并行前馈模块。全局交叉注意模块旨在执行完整的模态交互。该模块的核心组件是注意力张量及其相应的查询,旨在全面,同时计算跨模态注意力分数。并行前馈模块由多个分支组成,用于处理相应模态的通道信息。

在这里插入图片描述

3. Attention Tensor
TensorFormer的全局交叉注意力机制的关键思想是注意力张量,一个包含重要信息以及所有模式的相关信息的张量。为了生成注意力张量,我们首先对输入特征执行平均池化,以获得预期特征,然后应用笛卡尔积来生成注意力张量;
在这里插入图片描述

4. Attention forGlobal Cross-Modality Interaction
注意力张量包含来自所有相关模态的综合信息。每个模态都可以从 A A A 查询注意力分数, A A A 包含所有其他模态的信息。在这里,我们首先提出了详细的说明,在传统的QKV方式,然后得出一个更简单的演示查询过程。
在这里插入图片描述

5. Parallel Feed-Forward
TensorFormer块的并行前馈结构由相应模态的三个并行分支组成。对于每个模态,前馈模块旨在按通道方式处理特征,并且由两个线性变换组成;
在这里插入图片描述

6. 主要改进
- SentiLARE: 我采用SentiLARE作为语言模型,其利用包括词性和单词情感极性在内的语言知识来学习情感感知的语言表示。下面是作者根据SentiLARE的设置进行的步骤:

给定一个单词序列,首先通过Stanford Log-Linear词性(POS)标记器学习其词性序列,并通过SentiwordNet学习单词级情感极性序列。然后,使用预训练语言模型的分词器获取词标索引序列。这个序列作为输入,产生一个初步的增强语言知识表示。更新后的文本表示将作为第(i+1)层的输入,并通过SentiLARE中的剩余层进行处理。每一层的输出将是具有视觉和听觉信息的文本主导的高级情感表示。最后,将这些文本表示输入到分类头中,以获取情感强度。

因此,新的模型通过将非语言增强嵌入集成到预训练语言模型中,有助于生成更富有情感感知的语言表示。这种方法能够在文本表示中有效地整合视觉和听觉信息,从而提升情感分析等任务的性能。

- 多头注意力交互: 我在构造 TensorFormer之前,先对uni-modal进行一次交互,对视频和声学特征加入以文本为主导的多头注意力,主要起到一下作用:

  1. 优化信息融合: 多头注意力机制可以帮助模型更有效地整合来自不同模态(如文本、图像、音频等)的信息,特别是在模态间的互动过程中,确保每种信息都得到适当的重视和融合。

  2. 提升文本相关性: 由于文本数据通常提供最直接和详细的情感表达,以文本为主导的多头注意力可以确保模型在情感分析中更准确地捕捉和理解文本内容的情感色彩和情绪。

  3. 增强模型鲁棒性: 通过以文本为中心的多头注意力交互,可以减少其他模态(如视觉或声音)可能受到的信息偏置,从而提高模型在不同数据场景下的鲁棒性和泛化能力。

  4. 解决信息遗漏问题: 有时其他模态的信息可能被文本模态所掩盖或忽视,以文本为主导的多头注意力可以帮助平衡各模态间的贡献,减少信息遗漏和偏置。

综上所述,引入以文本为主导的多头注意力交互有助于在多模态情感分析中充分利用文本信息的优势,并通过有效的信息整合提升模型的性能和鲁棒性。

visual_ = self.cross_ATT_visual(text_embedding, visual_, visual_)acoustic_ = self.cross_ATT_acoustic(text_embedding, acoustic_, acoustic_)

在这里插入图片描述

- LSTM: 在TensorFormer交互之后,我为最终的融合模态加入了LSTM,具有以下几个优点:

  1. 时序建模能力强: LSTM 是一种能够捕捉时间序列信息的循环神经网络(RNN)变种。在多模态情感计算中,不同模态的数据可能存在时间上的依赖关系,比如语音的情感表达可能会受到人脸表情变化的影响,而LSTM能够有效地处理这种时序信息,提高模型对情感变化的准确性。

  2. 处理序列数据: 多模态情感计算中的数据通常是序列数据,例如连续的语音信号或视频帧序列。LSTM能够逐步学习和记忆这些序列数据中的长期依赖关系,从而更好地理解和分析多模态数据的情感表达。

  3. 特征融合与表示学习: 在多模态情感计算中,不同模态的数据往往具有不同的特征表示形式,如文本的词向量、图像的卷积特征、语音的声学特征等。通过LSTM,可以将不同模态的特征有效地融合在一起,学习到更加综合和丰富的表示,有助于提高情感分类或回归任务的性能。

  4. 上下文理解能力: LSTM作为一种能够捕捉上下文信息的模型,可以更好地理解不同模态数据之间的上下文关系。在情感计算中,上下文信息(如对话的历史记录、视频中的动作顺序等)对于情感的理解至关重要,LSTM能够帮助模型更好地从上下文中推断和分析情感表达。

  5. 模型泛化能力: LSTM由于其能够处理变长序列并且有较强的泛化能力,因此在不同场景和数据条件下,都能够比较好地适应和推广。这使得基于LSTM的多模态情感计算模型在实际应用中更为稳健和可靠。

综上所述,将LSTM引入多模态情感计算中,能够充分利用其强大的时序建模能力和特征融合能力,从而提高情感计算任务的精确度和效果,特别是在处理多模态数据时能够更好地捕捉数据之间的复杂关系和动态变化。

四、数据集和预训练模型介绍

1. CMU-MOSI: CMU-MOSI数据集是MSA研究中流行的基准数据集。该数据集是YouTube独白的集合,演讲者在其中表达他们对电影等主题的看法。MOSI共有93个视频,跨越89个远距离扬声器,包含2198个主观话语视频片段。这些话语被手动注释为[-3,3]之间的连续意见评分,其中-3/+3表示强烈的消极/积极情绪;

2. CMU-MOSEI: CMU-MOSEI数据集是对MOSI的改进,具有更多的话语数量,样本,扬声器和主题的更大多样性。该数据集包含23453个带注释的视频片段(话语),来自5000个视频,1000个不同的扬声器和250个不同的主题。

五、性能展示

  1. 原文性能:
    在这里插入图片描述

  2. 在我们的改进后,我们的性能提高了3.22%,这个性能的提升是非常客观的!
    在这里插入图片描述

六、复现过程

1. 数据集准备
下载MOSI和MOSEI数据集已提取好的特征文件(.pkl)。把它放在"./dataset”目录。

2. 下载预训练语言模型
下载SentiLARE语言模型文件,然后将它们放入"/pretrained-model / sentilare_model”目录。

3. 下载需要的包

pip install -r requirements.txt

4. 训练+测试

python train.py

在这里插入图片描述

源码下载

这篇关于传知代码-让机器感受你的情绪!(论文复现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134264

相关文章

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快