传知代码-MSA+抑郁症模型总结(三)(论文复现)

2024-08-30 23:28

本文主要是介绍传知代码-MSA+抑郁症模型总结(三)(论文复现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码以及视频讲解

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

热门研究领域:情感计算的横向发展

随着社交网络的不断发展,近年来出现了多模态数据的热潮。越来越多的用户采用媒体形式的组合(例如文本加图像、文本加歌曲、文本加视频等)。来表达他们的态度和情绪。多模态情感分析(MSA)是从多模态信息中提取情感元素进行情感预测的一个热门研究课题。传统的文本情感分析依赖于词、短语以及它们之间的语义关系,不足以识别复杂的情感信息。随着面部表情和语调的加入,多模态信息(视觉、听觉和转录文本)提供了更生动的描述,并传达了更准确和丰富的情感信息。先前的研究证实,不同模式之间通常存在潜在的相互作用。下图显示了MSA的优势。比如,有些句子的情绪是模棱两可的,不同的情境下有各种各样的情绪。在引入相应的音频信息之后,可以更准确地预测情绪的极性。这些相互作用的有效建模仍然是一个开放的挑战。
在这里插入图片描述

同时,竞争激烈的市场和保持竞争领先的需要对组织在生产力、创新等方面提出了更多的要求。繁重的工作量、更紧迫的期限、不切实际的目标、更长的工作时间、工作不安全感和人际冲突等导致员工之间的紧张关系。这反过来又为组织内的员工创造了一个紧张的工作环境。超过一定限度的压力会对员工的工作效率、士气和积极性产生负面影响。它还导致各种生理和心理问题。长期的压力会导致失眠、抑郁和心脏病。最近的研究人员发现长期的压力和癌症之间存在正相关。国际劳工组织在2019年宣布,“压力,过长的工作时间和疾病,导致每年近280万工人死亡,另外3. 74亿人因工作受伤或生病”。早期诊断和治疗对于减少压力对员工健康的长期影响和改善工作环境条件至关重要。检测抑郁症的常规方法是由生理学家进行问卷访谈。但这种方法是定性的、耗时的和不私密的。没有保证员工提供真实的答案,很多时候这种方法并没有达到初步筛选的目标。但是,HRV(心率变异性)、ECG(心电图)、GSR(皮肤电反应)、血压、肌电图和EEG(脑电图)是客观的,但没有私密性,并且由于其能够推断私人健康信息,员工可能对这些测试有抵抗力。因此,在最近的工作中,已经研究了来自视频、音频和文本的抑郁症监测。基于视频的研究跟踪了嘴唇、头部、心脏、眨眼频率、凝视的分布、瞳孔的大小和眼睛在面部各个区域的运动。基于语音的方法提取诸如功率电平、LPCC、MPCC、倒谱系数等特征,并使用机器学习算法进行分类以强调。基于文本的方法基于文本的方法从文本中提取句法和语言特征,并使用机器学习分类器来检测重音。

在这里插入图片描述

我致力于对情感计算领域的经典模型进行分析、解读和总结,此外,由于现如今大多数的情感计算数据集都是基于英文语言开发的,我们计划在之后的整个系列文章中将中文数据集(SIMS, SIMSv2)应用在模型中,以开发适用于国人的情感计算分析模型,并应用在情感疾病(如抑郁症、自闭症)检测任务,为医学心理学等领域提供帮助,此外还加入了幽默检测数据集,在未来,我也计划加入更多小众数据集,以便检测更隐匿的情感,如嫉妒、嘲讽等,使得AI可以更好的服务于社会。

【注】 我们文章中所用到的数据集,都经过重新特征提取形成新的数据集特征文件(.pkl),另外该抑郁症数据集因为涉及患者隐私,需要向数据集原创者申请,申请和下载链接都放在了我们附件中的 readme文件中,感兴趣的小伙伴可以进行下载,谢谢支持!

一、概述

这篇文章,我开始介绍第三篇情感计算经典论文模型,他是ACMMM 2020的一篇多模态情感计算的论文 “MISA: Modality-Invariant and -Specific Representations for Multimodal Sentiment Analysis”,其中提出的模型是MISA;
此外,原创部分为加入了抑郁症数据集以实现抑郁症检测任务,以及在SIMS数据集和SIMV2数据集上进行实验;值得注意的是,我们还加入了幽默检测的任务;

二、论文地址

MISA: Modality-Invariant and -Specific Representations for Multimodal Sentiment Analysis

三、研究背景

多模态情感分析和抑郁症检测是一个活跃的研究领域,它利用多模态信号对用户生成的视频进行情感理解和抑郁症程度判断。解决这一问题的主要方法是发展先进的模态融合技术。然而,信号的异质性造成了分布模式的差距,构成了重大挑战。在本文中,我们的目标是学习有效的模态表示,以帮助融合的过程。

四、主要贡献

  • 提出MISA,一个简单而灵活的多模态学习框架,强调多模态表示学习作为多模态融合的前体。MISA学习modality-invariant和modality-specific表示,以提供多模态数据的全面和分解视图,从而帮助融合预测情感状态;
  • MSA任务的实验证明了MISA的强大功能,其中学习的表示帮助简单的融合策略超越复杂的最先进的模型。

五、模型结构和代码

1. 总体框架
如下图所示,MISA的功能可以分为两个主要阶段:模态表征学习和模态融合。
在这里插入图片描述

2. 模态表征学习

语言层面的表征。首先,对于每个模态 m ∈ { l , v , a } m\in \{l,v,a\} m{lva},把它的话语序列 U m ∈ R T m × d m U_m \in R^{T_m \times d_m} UmRTm×dm映射到一个固定大小的向量 u m ∈ R d h u_m \in R^{d_h} umRdh上。使用一个堆叠LSTM,它的端态隐藏表示与一个完全连接的密集层相结合,给出了 u m u_m um

u m = s L S T M ( U m ; θ m l s t m ) u_m = sLSTM(U_m; \theta^{lstm}_m) um=sLSTM(Um;θmlstm)

模态不变和特定的表征。现在将每个话语向量 u m u_m um投射到两个不同的表示。第一个是 modality-invariant组件,它学习一个具有分布相似性约束的公共子空间共享表示。该约束有助于最小化异质性间隙–这是多模融合的理想特性。第二个是特定于模态的组件,它捕获了该模态的独特特征。通过这篇论文,我们论证了模态不变和模态特定表示的存在为有效融合提供了一个整体的视角。学习这些表示法是该工作的首要目标。

以下为部分代码展示

if not self.config.use_cmd_sim:# discriminatorreversed_shared_code_t = ReverseLayerF.apply(self.utt_shared_t, self.config.reverse_grad_weight)reversed_shared_code_v = ReverseLayerF.apply(self.utt_shared_v, self.config.reverse_grad_weight)reversed_shared_code_a = ReverseLayerF.apply(self.utt_shared_a, self.config.reverse_grad_weight)self.domain_label_t = self.discriminator(reversed_shared_code_t)self.domain_label_v = self.discriminator(reversed_shared_code_v)self.domain_label_a = self.discriminator(reversed_shared_code_a)else:self.domain_label_t = Noneself.domain_label_v = Noneself.domain_label_a = Noneself.shared_or_private_p_t = self.sp_discriminator(self.utt_private_t)self.shared_or_private_p_v = self.sp_discriminator(self.utt_private_v)self.shared_or_private_p_a = self.sp_discriminator(self.utt_private_a)self.shared_or_private_s = self.sp_discriminator( (self.utt_shared_t + self.utt_shared_v + self.utt_shared_a)/3.0 )# For reconstructionself.reconstruct()

3. 模态融合
在将模态投影到它们各自的表示中之后,我们将它们融合到一个联合向量中,用于下游预测。我们设计了一个简单的融合机制,首先执行自注意-基于Transformer,然后是所有六个变换的模态向量的级联。

融合进程。首先,我们堆叠六个模态表示矩阵。然后,我们在这些表示上执行多头自注意,以使每个向量都知道其他跨模态(和跨子空间)表示。这样做允许每个表征从同伴表征中诱导潜在的信息,这些信息对总体情感取向是协同的。这种跨模态匹配在最近的跨模态学习方法中已经非常突出。

# Projecting to same sized space
self.utt_t_orig = utterance_t = self.project_t(utterance_t)
self.utt_v_orig = utterance_v = self.project_v(utterance_v)
self.utt_a_orig = utterance_a = self.project_a(utterance_a)
self.utt_private_t = self.private_t(utterance_t)
self.utt_private_v = self.private_v(utterance_v)
self.utt_private_a = self.private_a(utterance_a)
self.utt_shared_t = self.shared(utterance_t)
self.utt_shared_v = self.shared(utterance_v)
self.utt_shared_a = self.shared(utterance_a)

六、数据集介绍

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个不同的主题

3. AVEC2019: AVEC2019 DDS数据集是从患者临床访谈的视听记录中获得的。访谈由虚拟代理进行,以排除人为干扰。与上述两个数据集不同的是,AVEC2019中的每种模态都提供了几种不同的特征。例如,声学模态包括MFCC、eGeMaps以及由VGG和DenseNet提取的深度特征。在之前的研究中,发现MFCC和AU姿势分别是声学和视觉模态中两个最具鉴别力的特征。因此,为了简单和高效的目的,我们只使用MFCC和AU姿势特征来检测抑郁症。数据集用区间[0,24]内的PHQ-8评分进行注释,PHQ-8评分越大,抑郁倾向越严重。该基准数据集中有163个训练样本、56个验证样本和56个测试样本。

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

5. UR_FUNNY: 对于MHD,我们考虑最近提出的UR_FUNNY数据集。与情绪类似,幽默的产生和感知也是通过多通道进行的。因此,这个数据集提供了多模态的话语,作为从TED演讲中采样的笑点。它还为每个目标话语提供相关的上下文,并确保说话者和主题的多样性。每个目标话语被标记为幽默/非幽默实例的二元标签。

七、性能展示

  • 在情感计算任务中,可以看到MSIA模型性能超越其他模型,证明了其有效性;
    在这里插入图片描述

在这里插入图片描述

  • 抑郁症检测任务,以下是MISA模型在抑郁症数据集AVEC2019中的表现:
ModelCCCMAE
Baseline0.1116.37
EF0.34
Bert-CNN & Gated-CNN0.4036.11
Multi-scale Temporal Dilated CNN0.4304.39
MISA0.4385.35
  • SIMS数据集
    在这里插入图片描述

八、复现过程

在准备好数据集并调试代码后,进行下面的步骤,附件已经调通并修改,可直接正常运行;

1. 下载多模态情感分析集成包

pip install MMSA

2. 进行训练

$ python -m MMSA -d mosi/dosei/avec -m mmim -s 1111 -s 1112

九、运行过程

  1. 训练过程
    在这里插入图片描述

  2. 最终结果
    在这里插入图片描述

总结

1. 适用场景

  • 社交媒体情感分析: MISA模型适用于分析社交媒体平台上用户的多模态数据,包括文本、图像和音频,从而深入理解用户的情感倾向、态度和情绪变化。例如,可以用于监测社交媒体上的舆情、分析用户对特定事件或产品的反应等。

  • 情感驱动的内容推荐: 在内容推荐系统中,MISA模型可以根据用户的多模态数据,如观看历史、社交互动、文字评论等,推荐符合用户情感和兴趣的个性化内容,提升用户体验和内容吸引力。

  • 智能健康监测: MISA模型在智能健康监测领域具有潜力,可以通过分析用户的语音情绪、面部表情和文字记录来监测心理健康状态,包括抑郁倾向和情绪波动,为个体提供早期干预和支持。

  • 教育和人机交互: 在教育领域,MISA模型可以用于情感教育和个性化学习支持。通过分析学生的情感表达和反馈,提供定制化的学习体验和情感指导,增强教育效果和学习动机。

2. 项目特点

  • 多模态融合: MISA模型能够有效整合文本、图像和音频等多种数据源,充分利用不同模态之间的关联性和信息丰富度,提升情感分析的全面性和准确性。

  • 情感感知和表达建模: 通过先进的深度学习技术,MISA模型能够深入学习和模拟情感感知与表达过程,实现对复杂情感信息的准确捕捉和高效表示。

  • 自适应学习和个性化: MISA模型具备自适应学习能力,可以根据具体任务和用户需求调整情感建模策略,实现个性化的情感分析和反馈。

  • 跨领域应用能力: 由于其多模态分析的通用性和灵活性,MISA模型不仅适用于社交媒体分析和智能健康监测,还能应用于广告推荐、产品评价和人机交互等多个领域。

综上所述,MISA模型在多模态情感分析和智能应用领域展现出广泛的适用性和高效的技术特点,为实际应用场景提供了强大的分析和决策支持能力

源码下载

这篇关于传知代码-MSA+抑郁症模型总结(三)(论文复现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim