首页 > 其他分享 >【论文笔记】基于不完整数据的鲁棒多模态情感分析

【论文笔记】基于不完整数据的鲁棒多模态情感分析

时间:2024-11-11 14:16:21浏览次数:3  
标签:模态 特征 数据 样本 笔记 主导 鲁棒 LNLN

背景

在现实世界的多模态情感检测中,由于存在大量的不完整的数据,影响了模型在判断情感时的准确性和鲁棒性,为了解决这一问题,本文提出了一个出了一种新颖的网络结构——Language-dominated Noise-resistant Learning Network (LNLN),旨在解决数据不完整性问题,在MSA中语言模态通常包含丰富的情感信息,本文将其视为主导模态,并提出了一种创新的以语言为主导的抗噪声学习网络(LNLN),以实现稳健的MSA。

模型

如图中所示,初始步骤涉及形成具有随机数据缺失的多模态输入,一旦输入准备好,LNLN首先使用嵌入层来统一每个模态的维度,确保统一性。语言作为MSA中的主导模态,从而特别设计的主导模态校正(DMC)模块采用对抗学习和动态加权增强策略来减轻噪声影响。该模块首先增强从语言模态计算出的主导特征的质量,然后将它们与辅助模态(视觉和音频)在基于主导模态的多模态学习(DMML)模块中进行集成,以实现有效的多模态融合和分类。这个过程显著增强了LNLN在各种噪声水平下的鲁棒性。此外,为了提高网络对细粒度情感分析的能力,实现了一个简单的重建器(Reconstructor)来重建缺失数据,进一步提升系统的鲁棒性。

数据输入

对于每个样本中每个模态的信息,随机擦除了不同比例的信息(从0%到100%)。具体来说,对于视觉和音频模态,分别采用OpenFace和Librosa来进行特征数据的获取,之后用零填充被擦除的信息。对于语言模态,用[UNK]填充被擦除的信息,这表示BERT中的未知词,此过程用向量表示为:

U^{0}_{l},U^{0}_{v},U^{0}_{a}\rightarrow U^{1}_{l},U^{1}_{v},U^{1}_{a}

其中m∈{l,v,a}m∈{l,v,a}表示模态类型(l代表语言,v代表视觉,a代表音频)。我们应用随机数据缺失,从而形成噪声污染的多模态输入。

模态嵌入

采用一个线性层和具有两个Transformer编码层的嵌入编码器实现,H^{0}_{l}H^{0}_{v}H^{0}_{a}是在训练过程中自动初始化并更新的,模态嵌入(Modality Embedding)的作用是将不同模态的原始数据转换为一种统一的、高维的特征表示,这种表示能够捕捉到每个模态中的关键信息和上下文。

自适应超模态学习

此模块用于从视觉和音频模态中学习超模态表示,由语言模态主导。考虑到由于随机数据缺失,语言模态(即主导模态)可能会受到严重干扰,作者设计了一个主导模态校正(DMC)模块来生成代理主导特征H^{1}_{p}并构建校正后的主导特征H^{1}_{d}(后面会提到)。

具体来说,学习不同尺度上校正后的主导表示​的过程可以描述为:

H^{i}_{d}=E^{i}_{m}(H^{i-1}_d)

其中i∈{2,3}表示自适应超模态学习模块的第i层,E^{i}_{m}是第i个Transformer编码层,H^{i}_{d}\in R^{T\times d}是不同尺度上校正后的主导特征。为了学习超模态表示,使用校正后的主导特征和音频/视觉特征来计算查询和键/值,可以简要地写成如下:

H^{i}_{hyper}=H^{i-1}_{hyper}+MHA(H^{i}_{d},H^{1}_{a})+MHA(H^{i}_{d},H^{1}_{v})

其中MHA(⋅⋅)代表多头注意力,H^{i}_{hyper}\in R^{T\times d}是超模态特征。注意,特征H^{0}_{hyper}\in R^{T\times d}是一个随机初始化的向量。

多模态融合与预测

在获得了H^{3}_{d}H^{3}_{hyper}之后,采用一个深度为4层的Transformer编码器,并在其中集成了一个分类器,用于多模态融合和情感预测:

\hat{y}=CrossTransformer(H^{3}_{d},H^{3}_{hyper})

其中,y^​是情感预测的结果。

主导模态校正(DMC)

该模块由两个步骤组成,即主导模态的完整性检查和使用对抗学习生成代理主导特征。

完整性检查

该模块采用了一个2层的Transfromer编码器和一个分类器组合而成。例如,如果主导模态的缺失率为0.3,则完整性预测标签为0.7。这个完整性预测w可以按如下方式获得:

w=E_{cc}(Concat(H_{cc},H^{1}_{l}))

使用如下损失函数进行优化:

L_{cc}=\frac{1}{N_{b}}\sum^ {N_{b}-1}_{k=0}(w_{k}-\hat{w_{k}})^{2}

其中Nb​是训练集中样本的数量,w^k是第k个样本的完整性标签。

代理主导特征生成

将视频模态特征H^{1}_{v},和音频模态特征H^{1}_{a},以及随机初始化特征H^{0}_{p}传入代理主导特征生成器中,该模块采用两层Transformer编码器组成,这个设置生成了代理主导特征H^{1}_{p}\in R^{T\times d}旨在补充和纠正主导模态。校正后的主导特征 H^{1}_{d}\in R^{T\times d}是通过结合H^{1}_{p}​和H^{1}_{l}语言特征,结合预测的完整性w加权计算得出的:

H^{1}_{p}=E_{DFG}(Concat(H^{0}_{p},H^{1}_{a},H^{1}_{v}))_{\theta _{DFG}}

H^{1}_{d}=(1-w)\cdot H^{1}_{p}+w\cdot H^{1}_{l}

其中\theta _{DFG}​表示代理主导特征生成器E_{DFG}的参数。

作者还构建了一个有效性鉴别器D。这个鉴别器包括一个二元分类器和一个梯度反转层(GRL),其任务是识别代理特征的来源:

\hat{y}_p = \text{D}\left(\frac{H_p^1}{H_l^1}, \theta_D\right)

其中\theta_{D}表示有效性鉴别器的参数,​\hat{y_{p}}表示输入特征是否来自语言模态的预测。

在实际训练过程中,生成器和鉴别器参与了一个对抗学习结构。鉴别器旨在识别特征是否源自语言模态,而生成器的目标则是挑战鉴别器做出准确预测的能力。这种动态被包含在对抗学习目标中:

\min_{\theta_D}\max_{\theta_{DFG}} \mathcal{L}_{adv} = -\frac{1}{N_b} \sum_{k=0}^{N_b} y_p^k \cdot \log \hat{y}_p^k

其中N_{b}​是训练集中样本的数量,y_{p}指示第k个样本的输入特征是否源自视觉或音频模态的标签。

重建器

对模态的缺失信息进行重建可以显著的提升其他组件的预测准确性和鲁棒性,为此作者设计了一个重建器记作E_{rec},它主要包括两个Transformer层,重建器操作方程如下:

\hat{U}_{m}^{0} = E_{m}^{\text{rec}}\left(U_{m}^{1}\right)

其中,\hat{U^{0}_{m}}表示经过重建后的特征,为了优化重建器的表现,作者使用一个L2损失函数:

\mathcal{L}_{rec} = \frac{1}{N_b} \sum_{h=0}^{N_b} \sum_{m} \left\| U_m^{0\,k} - \hat{U}_m^{0\,k} \right\|_2^2

该损失函数有助于最小化原始特征和重构特征之间的差异,从而提高其他成分的准确性。

模型训练

总结来说,我们的方法涉及四个学习目标,包括完整性检查损失L_{cc}、代理主导特征生成的对抗学习损失L_{adv}、重建损失L_{rec}​,以及最终的情感预测损失L_{sp}​。情感预测损失L_{sp}可以描述为:

L_{sp} = \frac{1}{N_b} \sum_{n=0}^{N_b-1} \left\| y_n - \hat{y}_n \right\|_2^2

因此模型的训练目标为总损失L,可以表示为:

L = \alpha L_{cc} + \beta L_{adv} + \gamma L_{rec} + \delta L_{sp}

其中,α、β、γ和δ是超参数。在MOSI和MOSEI数据集上,将它们设置为0.9、0.8、0.1和1.0。在SIMS数据集上,将它们设置为0.9、0.6、0.1和1.0(论文中描述)。

实验

数据集

MOSI 数据集包含了2,199个多模态样本,整合了视觉、音频和语言模态。它被分为训练集1,284个样本、验证集229个样本和测试集686个样本。每个样本都附带了一个情感得分,范围从-3(表示强烈的负面情绪)到3(表示强烈的正面情绪)

MOSEI 数据集由22,856个YouTube视频剪辑组成。样本被分为训练集16,326个剪辑、验证集1,871个剪辑和测试集4,659个剪辑。每个剪辑都被仔细标注了一个情感得分,范围同样从-3(强烈的负面情绪)到3(强烈的正面情绪)

SIMS 数据集是一个中文多模态情感数据集,包含了2,281个来自不同电影和电视剧的视频剪辑。它被分为训练集1,368个样本、验证集456个样本和测试集457个样本。每个样本都被手动标注了一个情感得分,范围从-1(负面)到1(正面)

对比试验

下图展示了所提出的LNLN模型与现有最先进方法在MOSI、MOSEI和SIMS数据集上的鲁棒性评估结果。实验结果表明,LNLN在多数评估指标上都取得了最先进的性能。例如,在MOSI数据集上,与次优结果相比,LNLN在Acc-7指标上相对提高了9.46%,证明了其在面对不同噪声效应时的鲁棒性。然而,在MOSEI数据集上,LNLN在Acc-7和Acc-5等指标上只取得了次优性能。在SIMS数据集上,LNLN在F1指标上取得了显著提升,与次优结果相比,相对提高了4.23%。

如图所示,展示了几种先进方法在不同缺失率下的性能曲线。结果表明,LNLN在大多数情况下都优于其他方法,显示了其在不同缺失率下的鲁棒性。

消融实验

分别在数据集上减去每个正则化后的消融结果。显然,在删除每个正则化后,LNLN在大多数指标上的性能下降。这表明,正则化有助于模型的学习。与表3中的结果相似,有一些指标在去除正则化后得到了改进。

在MOSI数据集中删去某一模态的消融实验结果,结果表示,当删除语言模态LNLN的性能会显著下降,而删除视觉和音频模态只会导致模型性能产生相对较小的下降,这进一步表明了语言模态在MSA中起到了主导的作用。

结论

本文提出了一种新的以语言模态为主导的对抗噪声学习网络来实现情感分类。LNLN可以增强主导模态的优势,可以在不同级别数据缺失的场景中获得优越的性能。但在不同场景和高强度噪声下模型的性能还有待提高。

标签:模态,特征,数据,样本,笔记,主导,鲁棒,LNLN
From: https://blog.csdn.net/weixin_55852758/article/details/143645667

相关文章

  • 点云学习笔记14——PCL点云文件投影到平面
    #include<iostream>#include<pcl/io/pcd_io.h>#include<pcl/point_types.h>#include<pcl/ModelCoefficients.h>#include<pcl/filters/project_inliers.h>#include<pcl/visualization/pcl_visualizer.h>#include<boost/th......
  • Mit6.S081笔记:知识点记录
    课程地址翻译程序到汇编的转换​ 任何一个处理器都有一个关联的ISA(InstructionSetsArchitecture,指令集架构),ISA就是处理器能够理解的指令集。每一条指令都有一个对应的二进制编码或者一个Opcode。当处理器在运行时,如果看见了这些编码,那么处理器就知道该做什么样的操作。​ 写......
  • 《Django 5 By Example》阅读笔记:p1-p16
    《Django5ByExample》学习第1天,p1-p16总结,总计16页。一、技术总结1.Django基本操作(1)创建project&创建appdjango-adminstartprojectmysitedjango-adminstartappblog(2)定义model(3)启动项目pythonmanage.pyrunserver二、英语总结(生词:8)1.fintechabbr......
  • 《程序员修炼之道:从小工到专家》阅读笔记5---交流的重要性
    在阅读《程序员修炼之道:从小工到专家》的过程中,我深刻体会到了交流在软件开发中的重要性。交流是软件开发过程中不可或缺的环节。无论是与团队成员之间的沟通,还是与用户的交流,都直接影响着项目的成功与否。良好的交流可以帮助我们更好地理解用户的需求,避免不必要的误解和返工。同......
  • 学习笔记(三十三):ArkUi-Blank (空白)
    概述:空白填充组件,在容器主轴方向上,空白填充组件具有自动填充容器空余部分的能力。仅当父组件为Row/Column/Flex时生效。一、定义:Blank(min?:number|string)min:非必填,空白填充组件在容器主轴上的最小大小,默认值:0 二、属性:color,设置空白填充的填充颜色。使用示例:......
  • 学习笔记(三十四):ArkUi-Divider (分隔)
    概述:提供分隔器组件,分隔不同内容块/内容元素。一、定义Divider()二、属性1、vertical,设置分割线的方向vertical(value:boolean)使用水平分割线还是垂直分割线。false:水平分割线;true:垂直分割线。默认值:false2、color,设置分割线的颜色color(value:ResourceColor)......
  • 学习笔记(三十二):[email protected] (布局回调)
    概述:提供注册组件布局和绘制完成回调通知的能力。一、导入模块import{inspector}from'@kit.ArkUI' 二、绑定指定组件,返回对应的监听句柄inspector.createComponentObservercreateComponentObserver(id:string):ComponentObserver 三、注册\取消注册回调参......
  • FPGA学习笔记#6 Vitis HLS For循环的优化(2)
    本笔记使用的VitisHLS版本为2022.2,在windows11下运行,仿真part为xcku15p_CIV-ffva1156-2LV-e,主要根据教程:跟XilinxSAE学HLS系列视频讲座-高亚军进行学习目录1.循环优化中的基本参数2.PIPELINE&UNROLL    2.1.PIPELINE    2.2.UNROLL3.LOOP_MERGE1.DATAFLOW......
  • 并查集+最小生成树 学习笔记+杂题 1
    图论系列:前言:相关题单:戳我算法讲解:戳我代码可能过多啊,到时候页面别卡死了,所以就把代码最前面的缺省源删了(反正就是几个头文件/defineintlonglong,自己加一下即可)。并查集记得初始化,最小生成树记得排序。P3367【模板】并查集板子题,给定\(n\)个元素,有2种操作,一种合并,......
  • 工作学习笔记(五)数组
    在Java中,数组有以下重要作用:存储数据可以将同类型的多个数据组合在一起。例如,存储一个班级学生的考试成绩。如果有50个学生,就可以创建一个 int 类型的数组 int[]scores=newint[50]; 来存放所有成绩。除了基本数据类型,也能存储对象。比如, String[]names=newStri......