做情绪识别,有必要用LLM吗?

news2024/11/28 6:24:52

卷友们好,我是尚霖。

情绪识别在各种对话场景中具有广泛的应用价值。例如,在社交媒体中,可以通过对评论进行情感分析来了解用户的情绪态度;在人工客服中,可以对客户的情绪进行分析,以更好地满足其需求。

此外,情绪识别还可以应用于聊天机器人,通过实时分析用户的情绪状态,生成基于用户情感的回复,从而提供更加个性化的交互体验。对话情感识别(Emotion Recognition in Conversation)是一个分类任务,旨在识别出一段对话序列里面每句话的情感标签。

图1给出了一个简单的示例.对话中的话语情绪识别并不简单等同于单个句子的情绪识别,需要综合考虑对话中的背景、上下文、说话人等信息。

97743de2ddb36c1cc4f7e510e92fdcbb.png
图1.对话情绪识别示例

长期以来,由于ERC任务强依赖于上下文的理解,基于Roberta的方法即便是在2023年也有接近SOTA的性能,基于Prompt的模型微调方法虽然有但不是主流,在测试集上表现总不如传统方法粗暴有用.所以对话情感识别任务领域一直呈现单句话语特征微调和人物交互细致建模两方面的割裂发展。单句话语特征微调致力于在Glove和RoBERTa的模型上微调并抽取出单句的话语特征,而人物交互细致建模则更加注重于如何去设计话语间,人物间的相互影响来实现精准的情绪识别。

ChatGPT问世以后,几乎所有的NLP任务都在往LLM范式迁移,但ERC任务始终没有进展,一方面研究者们并没有找到好的Instruction框架来激发模型的能力,另外一方面一些用LLM做ERC的浅尝辄止尝试而得到的较差的结果让人们普遍觉得用十亿级别的语言模型来得到一个比小模型差的多的结果实在是大炮打蚊子——小题大作。

46c1ee0c2a39412ee6982efa2ae0ae06.png
表1: ChatGPT在ERC任务的性能测试

我们近期的研究则较好地解决了上述两个问题,并且在三个经典榜单上都取得了较大的提升,今天有幸与大家分享我们的方案以及思考。

8dee351454006c736fc576ac76043433.png
Paper: https://arxiv.org/abs/2309.11911
Code: https://github.com/LIN-SHANG/InstructERC

InstructERC:以生成式视角重构ERC任务

837d187367dfe16e32d7e648692f0c1e.png
图2: ERC模型范式变迁
7fdb2053e7de364a55375974e83d92e1.png
图3: RoBERTa-base和Decoder-base支持下游任务的区别

由于预训练方式从Encoder到Decoder的变迁,以Prompt-tuning为代表的技术核心思想为改造下游任务形式,使之符合语言模型的训练范式以便更好的激发语言模型在下游任务上的表现能力,很多NLP任务都被统一为了Seq2Seq的结构,以生成式的方式来解决。

不破不立,对于ERC这种传统判别式任务,InstructERC率先用纯生成式的框架来重构ERC任务,具体结构如下:

e9aa6418622a53b098941a42aede1013.png
图4: InstructERC总体概览图

观察InstructERC总体概览图,主体部分为Retrieval Template Module和两个情感对齐任务,Retrieval Template Module,将传统的判别式框架的 ERC 模型转变为了与 LLM 结合的生成式的模型框架。ERC 任务强依赖于历史话语的情感分析 ,同时说话人在表达自己的情感倾向也着强烈的特点,可能是直抒胸臆,也可能反问,最后如果对话中存在多个人物(MELD,EmoryNLP),那么如何去考量对话之间的关系,当前的话语的情绪表达是针对哪句历史话语的回复等都需要被建模。具体来看:

  • Retrieval Template Module通过一个由historical window超参数控制的窗口来控制输入的历史话语(没有未来信息)以满足输出不超过LLM的input context limitation. 同时以Label Statement这种方式在稳定模型输出上有奇效.

  • Retrieval Template Module中的Demonstration Retrieval为当前要识别的话语在训练集构建的样本库检索出一个最相近的样本作为demostration以完成多种视角的incontext learning.在训练阶段,由于我们知道样本标签,我们选用和其标签一致的样本进行相似度计算匹配,在推理阶段,由于样本标签未知则将整个样本集进行计算匹配。

  • 由于对LLM进行模型架构修改代价较大且不确定性因素较强,我们同样采用prompt的方式来建模人物特征和对话关系,其由两个情感对齐任务实现。

  • 在情感对齐任务 1中,我们设计了说话人识别的任务,对原始的模型进行了初始的 SFT,SFT 后的模型作为后续ERC任务的SFT 基础。通过这个任务,可以很好的捕获每个说话人的特征。

  • 在情感对齐任务 2中,我们设计了情感影响预测任务,其添加在 Retrieval Template Module 后面,每一次输出,模型需要执行两个情感识别任务,一个当前话语的情感识别,另一个是针对之前的历史话语,来判断它们对当前这句话的情感影响,通过这个任务,我们隐式地让模型捕获对话关系特征。

刷三榜SOTA

找到了正确的架构,LLM在ERC上面的表现可以说是乱杀如表2,需要解释一下,ERC任务每次新 SOTA的Weighted-F1提升大概在 0.2-0.3个点,但是InstructERC仅仅以单模态的数据就在三个数据集上都拿到了 1-2 个点的显著提升,比所有能够验证的单模态,多模态模型的表现都要好

榜单排名见:IEMOCAP[1], MELD[2], EmoryNLP[3]

0dca30508ce849525a44d53ea8e55ae2.png
表2: 主体实验结果

表格分为四部分组成,第一部分是Discriminant Models,由于InstructERC之前的模型都是判别式的,所以我选取了在三个数据集上使用不同判别式方法且表现最优的模型来进行比较。第二部分是Zero-shot + InstructERC,目标是探索在这些基座模型在InstructERC下的指令跟随能力。第三部分是 LoRA+Backbone,目标是为了消融 InstructERC的影响,单独观察 LoRA 的收益。第四部分是 LoRA+InstructERC,目标是探索不同基座在InstructERC下的最佳性能表现。

  • Discriminant Models:我们分别从 Attention,Recurrent,Knowledge,Graph 和 Multimodel中选择表现最优异的模型,可以发现他们的SOTA只集中在某一个数据集,而 InstructERC在三个数据集上均取得了SOTA。

  • Zero-Shot + InstructERC:从基座的指令遵循能力方面来看,由于我们采用的 LLaMA 都是原始版本,并非 chat,所以相较于经过指令遵循精调后的ChatGLM 类模型,其按要求输出的能力比较差,很多时候不输出或者输出重复的无关内容,而 ChatGLM 类模型虽然具备一定的遵循能力,但是很多时候会输出一些和标签相近但不正确的答案,比如输出pity----标签 sad, 输出touched----标签 happy 等,这一部分的 Zero-Shot 的bias 可能后续需要一些成熟的解决大模型幻觉的方法来解。

  • LoRA+Backbone:使用最简单的prompt,但是用LoRA 进行精调,可以观察到 LLM在 ERC 上的性能出现了大的提升,尤其是 MELD 数据集达到了接近 SOTA 的水平。

  • LoRA+InstructERC:使用 instructERC 框架和 LoRA 方式进行微调,可以观察到 在 Backbone 的基础上出现了更大的提升,同时可以观察到在较于 Backbone,在InstructERC下,LLaMA2 较于 LLaMA 的基座增益明显。

全参数和LoRA的对比在这里[4],就不多叙述了.我们想重点说说下面有意思的实验和发现.

One More Thing (Unified Dataset Experiments)

我们能否做一个更加苛刻的模型泛化性实验呢?

刚刚用到的三个benchmark是各有千秋的,IEMOCAP对话轮次长,MELD对话简短,角色丰富,EmoryNLP类别不均衡严重。他们分别展现了我们日常生活中不同的一些对话场景。在这三个对话场景下能够同时取得SOTA已经能够说明InstructERC的泛化性了。我们更进一步,以1982的论文中提出的The feeling Whale,对三个数据集做了以下对齐:

83817cc5293f9ceb1012915e7efac607.png
表3: 统一标签映射
70848785d3ee77e9da90d09a7a0d3519.png
图5: The feeling Whale

我们依旧使用PEFT中的lora方法对InstructERC在统一数据集上进行训练,训练的结果在三个数据集上分别评测。同时,为了探究不同数据混合策略和数据数量对模型的影响,我们设计了等比例采样和混合数据采样评测实验,在此基础之上,我们更进一步探索了数据采样比例对模型的性能影响,结果如下表4所示,一个更加直观的结果如图6所示。

e194e0bc7bb530d44cc47d22358a8a15.png
表4: 使用LLaMA2作为模型基座的统一数据集实验
19bb37cc736061f13d5605939facc90d.png
图6: 使用LLaMA2作为模型基座的统一数据集实验
  • 如表4第一行所示,在使用了统一数据集对InstructERC进行finetune的情况下,虽然相较于single数据集训练下的SOTA,三个benchmark的性能出现了轻微下降,但是依旧能够三这三个benchmark上同时保持较高的W-F1,尤其是MELD的性能依旧是领先所有小模型的SOTA水平。因此可以看到,我们对于数据集的处理简单但是高效,另外,基于Llama2大模型基座的InstructERC展现了非凡的鲁棒性,能够同时习得来自多种不同分布的情绪范式,这是以往小模型无法做到的。

  • 大模型具有强大的学习能力,因此在我们的框架下验证the data scaling law是非常重要的一部分。我们对Unified dataset做了从1到1/64的 data scaling 实验,可以看到随着训练数据规模从1到1/32范围内指数级减少,模型在三个benchmark上的性能呈现轻微波动的的线性下降。这和现有的一些大模型探索结论一致。

  • 我们同时惊讶的发现,在训练数据在最后的1/32到1/64阶段,Total Mix和Ratio Mix策略依旧呈现线性的性能下降,但是single方式训练下的模型性能出现了非常猛烈的下降如图6所示。我们认为不同场景的数据给予了模型从不同角度理解情绪的能力,这使得模型在不同的数据下能够获得鲁棒性较强的增益,这种增益在低资源情境(1/64)下尤为明显.

  • 我们进一步探索了不同混合策略对data scaling的影响,在total mix设定下,所有的数据集都混在一起进行统一抽样。而在Ratio mix设定下,数据集被分别抽样然后混合在一起,这两种在训练数据的数量上保持一致,但是由于MELD和EmoryNLP的训练数据绝对数量较多,导致,在Total mix设定下的来源于这两个数据集的训练样本更多,所以比较total mix和ratio mix,可以发现iemocap,meld和EmoryNLP因为训练数据的多与少,有一定的表现偏差。

总结与展望

LLM时代,模型即产品,模型即应用,LLM本身强大的能力如需赋能传统子任务,除了使用更加优良的模型基座以外,本质上是在Prompt和demonstration上面找创新。可以认为,GNN-based、Recurrent-Attenton-based方法是在为所需评测的数据集进行单独的优化的和设计。

如果假定一定存在一个完美的ERC分类器,那么传统的基于RoBERTa的方法与使用LLM进行fintune的方法进行比较。前者可以看作是人为搜索到了一个不错的局部最优架构,在这个架构内部的参数空间进行finetune。

而后者可以看作是在浩如烟海的参数空间中,固定绝大部分参数,让见过近2Ttoken的LLM在Lora的低秩层习得一个适配于数据集的局部最优,虽然可微调的参数量都大差不差,但是LLM背后的知识是传统模型无法企及的,我想这些应该是是数据集单独训练保持SOTA且统一数据集实验性能依旧坚挺的原因。

LLM的路依旧很长,InstructERC可以看做是一个小trick,希望大家能够一起探索LLM赋能更多子任务的精彩表现!

参考资料

[1]

IEMOCAP: https://paperswithcode.com/sota/emotion-recognition-in-conversation-on?p=instructerc-reforming-emotion-recognition-in

[2]

MELD: https://paperswithcode.com/sota/emotion-recognition-in-conversation-on-meld?p=instructerc-reforming-emotion-recognition-in

[3]

EmoryNLP: https://paperswithcode.com/sota/emotion-recognition-in-conversation-on-4?p=instructerc-reforming-emotion-recognition-in

[4]

All Parameters vs Parameter Efficiency: https://github.com/LIN-SHANG/InstructERC#all-parameters-vs-parameter-efficiency

799c7ef099ce909a53880d2a04e9b4e7.jpeg


我是朋克又极客的AI算法小姐姐rumor

北航本硕,NLP算法工程师,谷歌开发者专家

欢迎关注我,带你学习带你肝

一起在人工智能时代旋转跳跃眨巴眼

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

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

相关文章

堆与堆排序

一.什么是堆? 1.堆是完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后一层结点不是满的,那么要求左满右不满。 2.堆分为两类,大根堆和小根堆。 大根堆每个结点都大于…

C++位图,布隆过滤器

本期我们来学习位图,布隆过滤器等相关知识,以及模拟实现,需求前置知识 C-哈希Hash-CSDN博客 C-封装unordered_KLZUQ的博客-CSDN博客 目录 位图 布隆过滤器 海量数据面试题 全部代码 位图 我们先来看一道面试题 给 40 亿个不重复的无符号…

scratch时间游戏 2023年9月中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析

目录 scratch时间游戏 一、题目要求 1、准备工作 2、功能实现 二、案例分析

EtherCAT报文-FPWR(配置地址写)抓包分析

0.工具准备 1.EtherCAT主站 2.EtherCAT从站(本文使用步进电机驱动器) 3.Wireshark1.EtherCAT报文帧结构 EtherCAT使用标准的IEEE802.3 Ethernet帧结构,帧类型为0x88A4。EtherCAT数据包括2个字节的数据头和44-1498字节的数据。数据区由一个或…

芯片学习记录TLP184

TLP184 芯片介绍 TLP184是一款光耦隔离器,它的主要特点包括:高电压耐受能力、高传输速度、高共模隔离能力、低功耗等。它可以用于工业自动化、通信设备、家用电器等领域的电气隔离应用。由一个光电晶体管组成,光学耦合到两个红外发射二极管…

[初始java]——规范你的命名规则,变量的使用和注意事项,隐式转化和强制转化

目录 一、标识符是么 二、命名规则 三、变量 1.定义变量的完整格式: 2.变量的分类 3.变量在内存中的位置 4.注意事项: 四、隐式转化和强制转化 五、表达式和语句的概念 一、标识符是么? 就是给类、变量、方法起名字的,用于标识它们。…

内网、外网、宽带、带宽、流量、网速之间的区别与联系

一.带宽与宽带的区别是什么? 带宽是量词,指的是网速的大小,比如1Mbps的意思是一兆比特每秒,这个数值就是指带宽。 宽带是名词,说明网络的传输速率速很高 。宽带的标准各不相同,最初认为128kbps以上带宽的就…

从0开始学Java:Java基础语法

文章目录 1. 注释2. 关键字(*Keyword*)3. 标识符( Identifier)4. 常量(*Constant*)5. 输出语句6. 变量(*Variable*)7. 计算机如何存储数据7.1 进制7.2 计算机存储单位7.3 二进制数据存储 8. 数据类型8.1 数…

一行 Python 代码搞定训练分类或回归模型

引言 自动机器学习(Auto-ML)是指自动化数据科学模型开发流水线的组件。AutoML 减少了数据科学家的工作量,并加快了工作流程。AutoML 可用于自动化各种流水线组件,包括数据理解,EDA,数据处理,模型训练,超参数…

C++11(lambda表达式)

目录 一、lambda表达式的引入 二、语法格式 三、捕捉方式 四、lambda表达式的底层 1、仿函数的调用 2、lambda的调用 ​编辑 一、lambda表达式的引入 在之前,我们调用函数的方式有:通过函数指针调用,仿函数也能像函数一样调用。而在C…

pgsl基于docker的安装

1. 有可用的docker环境 ,如果还没有安装docker,则请先安装docker 2. 创建pg数据库的挂载目录 mkdir postgres 3. 下载pg包 docker pull postgres 这个命令下载的是最新的pg包,如果要指定版本的话,则可以通过在后面拼接 :versio…

12 | JPA 的审计功能解决了哪些问题

Auditing 指的是什么? Auditing 是帮我们做审计用的,当我们操作一条记录的时候,需要知道这是谁创建的、什么时间创建的、最后修改人是谁、最后修改时间是什么时候,甚至需要修改记录……这些都是 Spring Data JPA 里面的 Auditing…

【LeetCode刷题(数据结构)】:给定一个链表 返回链表开始入环的第一个节点 如果链表无环 则返回 NULL

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环 为了表示给定链表中的环,评测系统内部使用整数 pos…

【Eclipse】查看版本号

1.在Eclipse的启动页面会出现版本号 2. Eclipse的关于里面 Help - About Eclipse IDE 如下图所示,就为其版本 3.通过查看readme_eclipse.html文件

华为浏览器风险提示 - 解决方案

问题 使用华为手机自带的华为浏览器时,可能会遇到网页提示风险提示且无法打开的情况,如下图。这是因为华为浏览器开启了安全浏览功能,下文介绍解决方案。 解决方案 取消华为浏览器设置中的安全浏览功能即可,操作步骤如下。打开…

EtherCAT报文-FPRD(配置地址读)抓包分析

0.工具准备 1.EtherCAT主站 2.EtherCAT从站(本文使用步进电机驱动器) 3.Wireshark1.EtherCAT报文帧结构 EtherCAT使用标准的IEEE802.3 Ethernet帧结构,帧类型为0x88A4。EtherCAT数据包括2个字节的数据头和44-1498字节的数据。数据区由一个或…

数据结构-表、树、图

一、表 1.1、散列表 也叫哈希表,把数据分散在列表中,依赖于数组下标访问的特性,数组的一种拓展。 散列思想: 即映射思想,用键值对来保存信息,键(key)和值(value&a…

E117-经典赛题-主机发现与信息收集

任务实施: E117-经典赛题-主机发现与信息收集 任务环境说明: 服务器场景:p9_bt5-1(用户名:root;密码:toor) 服务器场景操作系统:Back Track five kali Linux 192.168.32.1…

【C++11】

目录 一、列表初始化1.1{}初始化1.2 std::initializer_list 二、声明2.1auto2.2decltype2.3nullptr 三、STL的变化四、右值引用和移动4.1左值引用与右值引用4.2右值引用的场景和意义4.3完美转发4.4完美转发的某个应用场景 四、lambda4.1lambda表达式4.2l…

Zabbix监控系统与部署Zabbix5.0监控(系列操作完整版)

Zabbix监控系统与部署Zabbix5.0监控(系列操作完整版) 1、监控软件的作用2、Zabbix基本介绍2.1Zabbix是什么?2.2Zabbix监控原理2.3Zabbix的优点2.4Zabbix的缺点2.5Zabbix监控系统的监控对象 3、Zabbix的监控架构3.1server-client架构3.2server…