ERC论文阅读(03)--instructERC论文阅读笔记(2024-12-14)

instructERC论文阅读笔记

2024-12-14
论文题目:InstructERC: Reforming Emotion Recognition in Conversation with Multi-task Retrieval-Augmented Large Language Models
说明:以下内容纯属本人看论文及复现代码的记录,如想了解论文细节,请移步论文原文看。

碎碎念:

作者为华中科技大学硕士生,该论文为他在美团实习期间成果

代码:

作者提供了代码,链接如下:
https://github.com/LIN-SHANG/InstructERC

环境配置记录:

作者推荐用docker,但是我没有用过docker跑深度学习代码。所以,我直接用的conda,在autodl上面租的RTX4090,debug的时候租的1张显卡,微调llama2的时候租的4张显卡。
没有创建虚拟环境,直接用的base环境,镜像是pytorch2.0.0,cuda11.8, python3.8(ubuntu20.04),然后也没有安装作者的requirements.txt文件(主要是在安装这个文件的时候报了很多错一直装不上,所以就没有安装了),然后安装如下几个包就能跑通了(版本最好也对应上,不然不一定能跑通):
于是重新创建环境
pip install numpy1.24.3
pip install transformers
4.30.2
pip install deepspeed0.12.3
pip install SentencePiece
0.1.99
conda install mpi4py
pip install Ninja1.11.1
pip install pandas
2.0.1
然后还需要设置一下环境变量(不设置可能会报错误,跟ninja相关的错,环境变量里面加上ninja的到bin的安装路径即可,通过在命令行输入which ninja即可得到路径)
在这里插入图片描述

代码复现注意事项

实现细节:作者的训练分为两个阶段
第一阶段,使用speaker_task=True,相当于进行模型预热??
第二阶段,使用emotion_prediction=True和ERC main task联合训练。
不需要同时设置emotion_prediction和speaker_task为true。
因此,作者提供的train_and_inference_Uni.sh文件里面的第一阶段的时候只进行了speaker识别任务,第二阶段没有进行说话者识别任务。在第一阶段if [ ${emotion_prediction} = ‘False’ ],走的是这个分支,在第二阶段,elif [ ${emotion_prediction} = ‘True’ ]走的是这个分支。
train_and_inference_Plain.sh这个文件里面是使用大模型进行ERC任务的实验,也就是没有其他的辅助任务和说话者识别预训练任务,直接测试用大模型来进行ERC任务的实验结果。
注:
还有一点需要注意的是,有可能在跑的时候会报cuda outofmemory错误,这种情况下需要把代码中的deepspeed_config的fp16关闭掉,把bfloat16打开,我除了改动这里以外,还改了几处跟半精度微调大模型相关的代码(是我自己根据看的大模型微调教程改的),但是作者代码仓库里的issue给的答复是只要改”deepspeed_config的fp16关闭掉,把bfloat16打开“就行应该。反正我顺利跑通了。
在这里插入图片描述
最后要注意的是,作者的代码里面没有给出论文里面的demonstration模块,作者说的意思大概是由于美团的什么代码保密原则不能公开。

代码复现用时

15个batch,在4张RTX4090上面微调llama2,花费了快4小时,30块钱(心疼中,嘤嘤嘤~)
其他的任务,比如说话者识别预热模型参数和测试纯大模型进行ERC任务,花费的时间要少很多,大约半个多小时就可以了应该是。

代码复现结果分析

出于成本考虑(俺们实验室只有3090,4090得自己花钱租555~),我这里只进行了在meld数据集上的复现,并且只进行了lora这种微调方式。
纯llama2-7b-hf微调进行ERC任务的结果大概是f1=6263,acc=6365
作者的方法(这里没有示例检索模块)实验结果大概是f1=64.69,acc=65.62
作者在论文里面记录的实验结果是69.15
可见,我这里复现出的结果跟做作者还是有很大差距的(这里应该主要是因为示例检索模块的原因,作者也说了这个模块比较重要,或许还有部分我自己对于微调大模型没有什么经验的原因)
其他的消融实验我就不做了,费钱555我还是老老实实的做自己的3090实验吧(无奈)

摘要:

对话情绪识别的发展一直受到pipeline设计复杂性的阻碍,导致ERC模型经常过度拟合特定的数据集和对话模式。在这项研究中,我们提出了一种新的方法,即InstructERC,将ERC任务从判别式框架重新调整为基于大型语言模型( LLMs )的生成式框架。instructERC有4个重大贡献:

  1. 引入一个简单但是有效的模板检索模块,通过将语义相似度较高的历史对话内容、标签陈述、情绪域演示连接起来进行串联,从而显式地整合多粒度对话监督信息

  2. 进一步地,我们引入了两个额外的情绪对齐任务,即说话人识别和情绪预测任务,对对话中的对话角色关系和未来情绪倾向进行隐式建模。

  3. 我们的基于LLM的即插即用插件框架显著优于之前的所有模型,并在3个常用的ERC数据集上实现了全面的SOTA。

  4. 此外,我们首次承担了在三个ERC数据集上统一标签映射和建模的任务,展示了LLM强大的泛化能力。

对参数有效性、数据缩放和数据混合实验的广泛分析为InstructERC在实际场景中的应用提供了经验指导。我们的代码已经在Github上发布。

结论:

总之,我们的研究引入了instructERC,一种变革性的方法利用大型语言模型在生成框架中重新定义ERC任务。instructERC将独特的检索模板与情绪域检索模块相结合,能够适应不同的会话长度和提供高度相关的情绪识别示例。历史窗口探索实验说明了语境建模的最佳会话轮数是多少,这对于以前的工作由于令牌限制是无法达到的。此外,它集成了两个新颖的任务:说话人识别和情感预测,有效地建模了复杂的会话动态和说话人关系。这种方法允许更细致入微的ERC信息集成。值得注意的是,我们基于LLM的插件框架超越了所有先前的模型,在三个ERC数据集上设置了新的基准。我们还率先在这些数据集上统一了标签映射和建模,展示了LLM强大的泛化能力。此外,在数据缩放探索实验中发现了低资源互增益现象。我们的广泛分析为在真实世界场景中实现InstructERC提供了实际的见解,突出了其在对话中情感识别的效率和有效性。

方法:

主任务的输入是:指令、历史内容、标签声明、给定话语的演示检索的连接。
代码里面的演示检索模块由于美团的什么什么规定,没有开放出来。
模型使用了两个辅助任务与主任务一起微调LLM进行联合训练。
两个辅助任务分别是说话者识别、情绪反应预测。
说话者识别任务:为了让LLM捕捉不同个体的说话风格。在不考虑上下文的情况下,让大模型识别说话者。
情绪反应预测任务:这个任务是为了??
训练分为两个阶段:

第1阶段使用说话者识别来预热参数。

第2阶段使用ERC主任务和情绪反应预测任务一起来微调LLM。

其他

笔记都是本人看论文时的个人意见和想法,仅供参考,如果您有任何建议也非常欢迎留言指出~
2024-12-14
的的
neu 计算机科学与工程学院(本硕东b)研三在读

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《Java核心技术I》Swing用户界面组件

Swing和模型-视图-控制器设计模式 用户界面组件各个组成部分,如按钮,复选框,文本框或复杂的树控件,每个组件都有三个特征: 内容,如按钮的状态,文本域中的文本。外观,颜色&#xff0c…

ubuntu20.04+ROS Noetic 安装PX4+Mavros

文章目录 系统环境安装依赖PX4 安装老版本安装测试环境变量添加版本查看 安装MAVROS(二进制安装非源码安装)测试 OGC 地面站安装测试mavros与sitl通信参考 系统环境 ubuntu 20.04 ROS Noetic 如果系统安装了Anaconda等虚拟环境管理器,要退出…

IIS服务器部署C# WebApi程序,客户端PUT,DELETE请求无法执行

这两天在自己Windows10电脑上搭建IIS服务器,把自己写的WebApi代码部署上做个本地服务器,结果客户端的PUT和DELETE请求无法执行,GET、POST这些都正常,研究后发现要删除IIS中的“模块”中的"webdavmodule"才能解决。

基于SpringBoot的嗨玩旅游网站:一站式旅游信息服务平台的设计与实现

摘要 在旅游需求日益增长的今天,一个全面、便捷的旅游信息服务平台显得尤为重要。嗨玩旅游网站正是为了满足这一需求而设计的在线平台,它提供了包括景点信息、旅游线路、商品信息、社区信息和活动推广等在内的丰富旅游目的地信息,旨在帮助用…

HDR视频技术之七:逆色调映射

HDR 技术近年来发展迅猛,在未来将会成为图像与视频领域的主流。当前 HDR 内容非常短缺,限制了 HDR 视听节目的广泛应用。逆色调映射(Inverse Tone Mapping)应运而生,它是一种用来将 SDR 源信号转换为 HDR 源信号的技术,可以应用于…

EXCEL的各种图形,统计图形

目录 0 EXCEL的各种图形,统计图形 1 统计图形 / 直方图 / 其实叫 频度图 hist最合适(用原始数据直接作图) 1.1 什么是频度图 1.2 如何创建频度图,一般是只选中1列数据(1个数组) 1.3 如何修改频度图的宽度 1.4 hist图的一个特…

AI 智能名片 S2B2C 商城小程序在社群团购运营中的作用与价值

摘要:本文深入探讨了 AI 智能名片 S2B2C 商城小程序在社群团购运营中的重要作用。随着社群团购的兴起,如何有效运营成为关键问题。AI 智能名片 S2B2C 商城小程序凭借其独特功能,能够在促进消费者互动、提升产品传播效果、影响购买决策以及实现…

【0x000A】HCI_Reject_Connection_Request命令详解

目录 一、命令概述 二、命令格式及参数说明 2.1. HCI_Reject_Connection_Request命令格式 2.2. 参数说明 2.2.1. BD_ADDR(蓝牙设备地址) 2.2.2. Reason(拒绝原因) 三、返回事件及参数说明 3.1. 返回参数 3.2. 生成的事件…

Ant Design of Vue之带select控件,单元格编辑功能的表格EditableCell组件

效果图 功能 表格里面某一行或者某一个单元格支持select复选框可以编辑,新增一行数据,删除一行数据,并且有校验规则 源码 editablecell组件源码 参考自 源码

git企业的使用详细命令行操作

git是Linux创始人通过内核开发而创作的分布式版本的控制系统,而我们作为开发者需要开发与维护,避免不了版本的迭代和更新,git就是用来保存修改删除等操作的工具,可以记录代码改动情况,它能够保存代码的每个版本&#x…

景联文科技提供高质量文本标注服务,驱动AI技术发展

文本标注是指在原始文本数据上添加标签的过程,这些标签可以用来指示特定的实体、关系、事件等信息,以帮助计算机理解和处理这些数据。 文本标注是自然语言处理(NLP)领域的一个重要环节,它通过为文本的不同部分提供具体…

基于nginx和ffmpeg搭建HTTP FLV流媒体服务器

一、简介 整体是使用nginx搭建HTTP FLV流媒体服务器: 流程:音视频->rtmp->http-flv 音视频转为rtmp需要借助ffmpeg转化。 rtmp转为http-flv需要借助nginx转化。 nginx-http-flv-module是基于nginx-rtmp-module开发的,包含nginx-rt…

01-51单片机硬件基础

开发板介绍 学校授课用的是普中科技的EM3.V2.2开发板,没什么好说的,记着去淘宝上找原理图,别迷信课本。 网上有卖51最小系统板的,比开发板便宜,也有下载模块,可以自己搭建外围电路。 还可以自己在protue…

使用 Database Tools 实现高效数据查询的十大 IntelliJ IDEA 快捷键

得益于 IntelliJ IDEA Ultimate 的 Database Tools(数据库工具)中的专用 SQL 查询控制台,您无需离开 IDE 即可轻松修改连接到您的 Java 应用程序的任何数据库中的数据,以及从这些数据库中提取数据。 查询控制台具有 SQL 语句特定的…

【新人系列】Python 入门(十六):正则表达式

✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…

资料分析题

1、截位除 差距10% 以内 差距小 否则 差距大 2、基期与现期 3、同比与环比

SpringBoot进阶 - 自定义starter

文章目录 思路封装Starter使用starter 思路 创建模块,封装starter,最后使用starter. 1 - 创建一个Demo Project,模拟一个需要被封装的DemoModule模块,其中核心方法为exeModuleMethod 2 - 通过starter封装可以直接初始化DemoModule…

socket编程UDP-实现停等机制(接收确认、超时重传)

在下面博客中,我介绍了利用UDP模拟TCP连接、按数据包发送文件的过程,并附上完整源码。 socket编程UDP-文件传输&模拟TCP建立连接脱离连接(进阶篇)_udp socket发送-CSDN博客 下面博客实现的是滑动窗口机制: sock…

Elasticsearch高性能实践

前言 本方案主要从运维层面分析es是实际生产使用过程中的参数优化,深入理解es各个名词及含义,深入分析es的使用过程中应注意的点,详细解释参数设置的原因以及目的,主要包括系统层面,参数层面。除此之外,优…

Nacos系列:Nacos 控制台手册

引言 Nacos是阿里巴巴中间件部门开源的一款用于服务发现和配置管理的产品,Nacos 控制台主要旨在于增强对于服务列表、健康状态管理、服务治理、分布式配置管理等方面的管控能力,以便进一步帮助用户降低管理微服务应用架构的成本。 一、访问 Nacos 控制台…