UniSA: Unified Generative Framework for Sentiment Analysis

2024-03-06 22:44

本文主要是介绍UniSA: Unified Generative Framework for Sentiment Analysis,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • UniSA:统一的情感分析生成框架
    • 文章信息
    • 研究目的
    • 研究内容
    • 研究方法
      • 1.总体架构图
      • 2.基准数据集SAEval
      • 3.Task-Specific Prompt
      • 4.Modal Mask Training
      • 5.Pre-training Tasks
        • 5.1Mask Context Modeling
        • 5.2Sentiment Polarity Prediction
        • 5.3Coarse-grained Label Contrast Learning
        • 5.4Cross-task Emotion Prediction
    • 结果与讨论
    • 代码和数据集

UniSA:统一的情感分析生成框架

总结:原理=>所有子任务整合起来,数据集就变得很大了,让模型学习这些所有的数据,模型的情感能力就上去了,关键在于怎么整合?训练好之后,不管是情感分析的什么任务(输入都会被Task-Specific Prompt统一,输出都有四个标签,一个真实标签,三个伪标签),通过这个框架都可以实现不错的结果。

文章信息

作者:Zaijing Li,Fengxiao Tang

单位:Central South University(中南大学)

会议/期刊:Proceedings of the 31st ACM International Conference on Multimedia(MM 2023)(CCF A)

题目:UniSA: Unified Generative Framework for Sentiment Analysis

年份:2023

研究目的

探究情感分析的多任务统一建模,将情感分析的子任务整合到一个单一的模型中,来提高模型的情感能力。

【对情感分析的所有子任务进行统一建模存在三个主要挑战:1.每个子任务的输入和输出形式各不相同。2.多模态的模态对齐问题。3.数据集注释偏差。

  • 引入了特定任务提示方法,将所有子任务视为生成任务并进行联合训练,来统一不同子任务的输入和输出形式
  • 通过扩展生成式Transformer(基础的Transformer模型)去处理多模态数据,提出了一种模态掩码训练方法学习模态间的关系,来解决模态对齐的问题。
  • 引入数据集嵌入消除不同数据集之间的注释偏差。】

研究内容

  • 提出了一个多模态生成框架 UniSA,重新耦合情感分析的各个子任务(对话中的情感识别 (ERC)、基于方面的情感分析 (ABSA) 和多模态情感分析 (MSA))实现多任务统一建模

  • 提出了一种新颖的情感相关预训练任务(Pre-training Tasks),让模型能够学到跨子任务的通用情感知识。

  • 构建了一个基准数据集 SAEval,以统一的格式包含了各种情感分析子任务的基准数据集。

研究方法

1.总体架构图

image-20240305162432037

为了处理视觉、声学和文本的跨模态输入,将原始的Transformer编码器修改为多模态编码器,并引入了模态掩码训练方法(该方法使得模型能够有效地学习到不同模态之间的关系)。通过任务特定提示( Task-Specific Prompt )方法来规范所有子任务的输入格式。为了解决数据集之间的偏差,在输入中嵌入了一个数据集,以区分不同的数据集。

2.基准数据集SAEval

基准数据集SAEval的构建是将来自不同情感分析子任务的多个数据集统一以字典格式存储。(该词典包括"Task Type"、"Dataset ID "、“Text”、“Audio”、“Image"等关键词。对于ERC数据集,额外的信息如” Context “,” Speaker ID “和” Utterance index "被包含来确定当前查询的会话信息。)数据集示例:

image-20240305172447131

3.Task-Specific Prompt

通过任务特定提示(Task-Specific Prompt)统一所有子任务的输入流,并将所有子任务转化为生成任务来统一子任务的输出形式。【作用就是统一输入与输出】

image-20240305170757602

任务特定提示包括三个组成部分:任务标识符Z、答案集Y和输入流X。

  • 标识符Z由特殊的标记组成(包括Task type,Data id ,Speaker id)。
  • 答案集Y是每个数据集的特定标签集合,用于指导模型生成预期结果。
  • 输入流X代表输入的文本、声音、视觉和上下文。

L = { Z , Y , X } L=\{Z,Y,X\} L={Z,Y,X}

4.Modal Mask Training

当给定一个多模态输入 I i = I i t , I i a , I i v I_{i}=I_{i}^{t},I_{i}^{a},I_{i}^{v} Ii=Iit,Iia,Iiv时( I i m , m ∈ t , a , v I_i^m,m\in{t,a,v} Iim,mt,a,v代表时间 i i i的单模态输入),要掩蔽一个或多个模态的输入,这样将产生七种模态设置,即, I i t , I i a , I i v , I i a + I i v , I i t + I i a , I i t + I i v I_i^t,I_i^a,I_i^v,I_i^a+I_i^v,I_i^t+I_i^a,I_i^t+I_i^v Iit,Iia,Iiv,Iia+Iiv,Iit+Iia,Iit+Iiv I i t + I i a + I i v I_i^t+I_i^a+I_i^v Iit+Iia+Iiv。由于文本模态很重要,所以只使用其中的四种设置,也就是 I i t , I i t + I i a , I i t + I i v , I i t + I i a + I i v . I_{i}^{t},I_{i}^{t}+I_{i}^{a},I_{i}^{t}+I_{i}^{v},I_{i}^{t}+I_{i}^{a}+I_{i}^{v}. Iit,Iit+Iia,Iit+Iiv,Iit+Iia+Iiv.通过这样的方式,多模态数据在训练阶段就有了四种不同的输入形式,扩展了训练数据的模态多样性,并可以有效应对实际场景中多种数据中某些模态的缺失。

5.Pre-training Tasks

预训练分为两个阶段:

  • 第一阶段是粗粒度情感感知预训练(coarse-grained emotion perception pre-training),包括掩码上下文建模情感极性预测粗粒度标签对比学习。第一阶段是为了让模型获得初步的情感分类能力。(情感是极性不变,组合具有相同情感极性的查询即相同情感极性的样本)不会改变两者。因此,根据情感极性将所有数据集划分为不同的数据池。然后,我们从同一个数据池中随机抽取两个查询组合成一个新的查询,用于预训练阶段一)
    L s t a g e 1 = L M C M + L S P P + L C C L . \mathcal{L}_{stage1}=\mathcal{L}_{MCM}+\mathcal{L}_{SPP}+\mathcal{L}_{CCL}. Lstage1=LMCM+LSPP+LCCL.

  • 第二阶段是细粒度情感感知预训练(Pre-training Stage Two),包括掩码上下文建模跨任务情感预测。其目的是让模型获得细粒度情感分类能力。
    L s t a g e 2 = L M C M + L C E P . \mathcal{L}_{stage2}=\mathcal{L}_{MCM}+\mathcal{L}_{CEP}. Lstage2=LMCM+LCEP.

5.1Mask Context Modeling

掩码上下文建模(MCM)可以随机掩码输入的文本、声学、视觉和上下文模态中的标记,以鼓励模型学习预测被掩码的标记(token)。

image-20240305205646466
L M C M ( θ ) = − ∑ m = 1 M log ⁡ ( P θ ( w m ∣ w n ) ) , \mathcal{L}_{MCM}(\theta)=-\sum_{m=1}^M\log{(P_\theta(w_m|w_n))}, LMCM(θ)=m=1Mlog(Pθ(wmwn)),

符号含义
1 ≤ m ≤ M 1\le m \le M 1mM表示掩码索引,M是掩码标记的数量
w m w_m wm被屏蔽的token
w n w_n wn未被屏蔽的token
P θ P_\theta Pθ模型的输出分布, θ \theta θ代表可以优化的模型参数
5.2Sentiment Polarity Prediction

为了鼓励模型学习区分不同的情感类别,将数据集的细粒度情感标签转换为情感极性标签,将其映射为正面、负面和中性类别。然后,在情感极性预测(SPP)任务中,训练模型预测输入的情感极性类别。
L S P P ( θ ) = − log ⁡ ( P θ ( s ∣ w n ) ) . \mathcal{L}_{SPP}(\theta)=-\log{(P_{\theta}(s|w_{n}))}. LSPP(θ)=log(Pθ(swn)).

5.3Coarse-grained Label Contrast Learning

在粗粒度对比学习任务中,将编码器的输出作为每个样本的表征,并在一个批次中计算具有相同情感标签的样本之间的欧氏距离。然后,最大化具有相同情感标签的样本之间的相似性。(让模型学会区分不同的情感类别

Alt

L C C L ( θ ) = ∑ j = 1 b ∑ k = 1 b ( d i s t a n c e ( j , k ) ∗ m a s k ( j , k ) ) ∑ k = 1 b d i s t a n c e ( j , k ) , \mathcal{L}_{CCL}(\theta)=\sum_{j=1}^b\frac{\sum_{k=1}^b(distance(j,k)*mask(j,k))}{\sum_{k=1}^bdistance(j,k)}, LCCL(θ)=j=1bk=1bdistance(j,k)k=1b(distance(j,k)mask(j,k)),

符号含义
b b b一个批次的大小
d i s t a n c e ( j , k ) distance(j,k) distance(j,k)样本j和样本k之间的欧氏距离
m a s k ( j , k ) mask(j,k) mask(j,k)当样本j和样本k具有相同的情感标签时, m a s k ( j , k ) mask( j , k) mask(j,k)为1,否则为0
5.4Cross-task Emotion Prediction

在跨任务情感预测(CEP )任务中,首先将编码器的输出作为每个样本的表征,并对每个子任务的样本进行聚类(每个子任务不同的标签将聚成一类)。然后,对于每个样本计算其表征与每个子任务的每个标签簇之间的距离。将距离最小的簇对应的标签作为每个子任务样本的伪标签。

给定一个子任务集 D = { A B S A , M S A , E R C , C A } D=\lbrace ABSA,MSA,ERC,CA \rbrace D={ABSA,MSA,ERC,CA}​,每个样本输出将有4个标签:一个为原始标签,三个为跨任务伪标签。
L C E P ( θ ) = − ∑ D log ⁡ ( P θ ( E d ∣ w m ) ) , \mathcal{L}_{CEP}(\theta)=-\sum^D\log{(P_\theta(E_d|w_m))}, LCEP(θ)=Dlog(Pθ(Edwm)),
E d E_d Ed表示子任务 d ∈ D d\in D dD中的情感标签。

结果与讨论

斜体是消融实验

  • UniSA模型在每个数据集上的表现与现有的SOTA模型相当,并且可以用相对较少的参数执行所有的情感分析子任务。
  • 将提出的任务特定提示方法替换为任务令牌,证明了任务特定提示方法对模型性能的影响。
  • 去掉模态掩码训练方法,验证了模态掩码的有效性。
  • 通过引入了三个额外的LSTM作为音频、图像和上下文输入的编码器,探索不同输入形式对模型性能的影响,证明了Multimodal transformer encoder的有效性。
  • 通过消融预训练的第一阶段与第二阶段,证明了各个预训练阶段的有效性。
  • 通过从多模态信号中剔除声学和视觉模态,验证了多模态对模型性能的影响。
  • 通过在情感分析的下游任务上进行实验,表明UniSA在预训练阶段学习到了跨子任务的共同情感知识,从而在不同的情感分析子任务上表现出良好的泛化性。

代码和数据集

代码:https://github.com/dawn0815/UniSA

数据集:

image-20240306160304953

实验环境:NVIDIA RTX V100(32G)

😃😃😃

这篇关于UniSA: Unified Generative Framework for Sentiment Analysis的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Framework系统框架

序号表示的是学习顺序 IoC(控制反转)/DI(依赖注入): ioc:思想上是控制反转,spring提供了一个容器,称为IOC容器,用它来充当IOC思想中的外部。 我的理解就是spring把这些对象集中管理,放在容器中,这个容器就叫Ioc这些对象统称为Bean 用对象的时候不用new,直接外部提供(bean) 当外部的对象有关系的时候,IOC给它俩绑好(DI) DI和IO

UML- 统一建模语言(Unified Modeling Language)创建项目的序列图及类图

陈科肇 ============= 1.主要模型 在UML系统开发中有三个主要的模型: 功能模型:从用户的角度展示系统的功能,包括用例图。 对象模型:采用对象、属性、操作、关联等概念展示系统的结构和基础,包括类图、对象图、包图。 动态模型:展现系统的内部行为。 包括序列图、活动图、状态图。 因为要创建个人空间项目并不是一个很大的项目,我这里只须关注两种图的创建就可以了,而在开始创建UML图

深度学习--对抗生成网络(GAN, Generative Adversarial Network)

对抗生成网络(GAN, Generative Adversarial Network)是一种深度学习模型,由Ian Goodfellow等人在2014年提出。GAN主要用于生成数据,通过两个神经网络相互对抗,来生成以假乱真的新数据。以下是对GAN的详细阐述,包括其概念、作用、核心要点、实现过程、代码实现和适用场景。 1. 概念 GAN由两个神经网络组成:生成器(Generator)和判别器(D

Versioned Staged Flow-Sensitive Pointer Analysis

VSFS 1.Introduction2.Approach2.1.相关概念2.2.VSFS 3.Evaluation参考文献 1.Introduction 上一篇blog我介绍了目前flow-sensitive pointer analysis常用的SFS算法。相比IFDS-based方法,SFS显著通过稀疏分析提升了效率,但是其内部依旧有许多冗余计算,留下了很大优化空间。 以

【机器学习】生成对抗网络(Generative Adversarial Networks, GANs)详解

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 生成对抗网络(Generative Adversarial Networks, GANs)详解GANs的基本原理GANs的训练过程GANs的发展历程GANs在实际任务中的应用小结 生成对

CMU 10423 Generative AI:HW0

由于找不到S24版数据集,所以HW0用的F24版的。 项目地址见:https://github.com/YM2025/CMU_10423_2024S 文章目录 0 作业概述1 阅读(3分)2 图像分类(43分)2.1 (3 分)【完成】2.2 (3 分)【完成】2.3 (4 分)【完成】2.4 (4 分)【完成】2.5【完成】2.5.a (3 分)2.5.b (2 分) 2.6 (2 分)

安卓aosp14上自由窗口划线边框Freeform Caption实战开发-千里马framework实战

背景: 上一篇文章也分享过aosp14版本上自由窗口的Caption栏的显示原理,今天来讲解一下aosp14版本上如何实现对自由窗口的划线边框功能,相关功能已经在aosp13上面进行实现,具体可以看我的分屏自由窗口专题哈。 就是想要在aosp14上面实现如下功能: 即自由窗口在被触摸放大缩小时候,边框要被画成红色的线条,表示选中。 尝试aosp13老方案: 因为aosp13是在acti

Segmentation简记3-UPSNet: A Unified Panoptic Segmentation Network

Segmentation简记3-UPSNet: A Unified Panoptic Segmentation Network 创新点总结实验 创新点 1.统一的全景分割网络 总结 uber的作品 网络结构如下: 还是比较简洁的。 Backbone 采用了原始mask rcnn。 Instance Segmentation Head 使用了最大的特征图,包括bbox回归,分

OpenCV_连通区域分析(Connected Component Analysis-Labeling)

申明:本文非笔者原创,原文转载自:http://blog.csdn.net/icvpr/article/details/10259577 OpenCV_连通区域分析(Connected Component Analysis/Labeling) 【摘要】 本文主要介绍在CVPR和图像处理领域中较为常用的一种图像区域(Blob)提取的方法——连通性分析法(连通区域标

Android Framework中的PolicyManager简介

PolicyManager类位于framework\base\core\java\com\android\internal\policy目录中的PolicyManager.java文件中。PolicyManager主要用于创建Window类、LayoutInflater类和WindowManagerPolicy类,它扮演着简单工厂模式中的工厂类角色,而抽象产品角色由IPolicy接口实现,具体产