⌈ 传知代码 ⌋ 多模态COGMEN详解

2024-06-10 10:28

本文主要是介绍⌈ 传知代码 ⌋ 多模态COGMEN详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

💛前情提要💛

本文是传知代码平台中的相关前沿知识与技术的分享~

接下来我们即将进入一个全新的空间,对技术有一个全新的视角~

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

以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦!!!

以下内容干货满满,跟上步伐吧~


📌导航小助手📌

  • 💡本章重点
  • 🍞一. 概述
  • 🍞二. 论文模型框架
  • 🍞三. 演示效果
  • 🍞四. 核心逻辑
  • 🫓总结


💡本章重点

  • 多模态COGMEN详解

🍞一. 概述

情绪是人类行动的一个固有部分,因此,开发能够理解和识别人类情绪的人工智能系统势在必行。在涉及不同人的对话中,一个人的情绪会受到其他说话者的言语和他们自己在言语中的情绪状态的影响。

在本文中,我们提出了基于 COntex- tualized Graph Neural Network的多模态情感识别COGMEN)系统,该系统利用了本地信息(即说话人之间的内/外依赖性)和全局信息(上下文)。

建议的模型使用基于图谱神经网络 (GNN) 的架构来模拟对话中的复杂关系(本地和全局信息)。

我们的模型在IEMOCAP和MOSEI数据集上给出了最先进的 (SOTA)结果,详细的消融实验显示了在两个层面上对信息进行建模的重要性


🍞二. 论文模型框架

在这里插入图片描述
图2显示了详细的体系结构。输入的话语作为语境提取器模块的输入,该模块负责捕获全局语境。语境提取器为每个话语(utterance)提取的特征形成了一个基于说话人之间交互的图(Graph Formation)。该图作为Relational - GCN的输入,然后是graph transformer,graph transformer使用形成的图来捕捉话语之间的内部和内部关系。最后,作为情感分类器的两个线性层使用所有话语获得的特征来预测相应的情感。

特征融合的方式:

  • 简单的concat,论文运用了最简单的融合方式,有在尝试别的融合方式

在这里插入图片描述
transfomer层是提取一段对话中,不同语句之间的信息

在这里插入图片描述
经过一层transformer之后,融合了信息,就开始建图,进行图学习

在这里插入图片描述
图学习分别进行了图卷积以及,图transformer,图学习的意义在于,更好的捕捉对话中这种一来一回的关系,来融合来自不同短语的情感信息。

最后链接一个分类器就结束了


🍞三. 演示效果

在这里插入图片描述


🍞四. 核心逻辑

##transformer层:def forward(self, text_len_tensor, text_tensor):if self.use_transformer:rnn_out = self.transformer_encoder(text_tensor)rnn_out = self.transformer_out(rnn_out)else:packed = pack_padded_sequence(text_tensor, text_len_tensor, batch_first=True, enforce_sorted=False)rnn_out, (_, _) = self.rnn(packed, None)rnn_out, _ = pad_packed_sequence(rnn_out, batch_first=True)return rnn_out##图学习层class GNN(nn.Module):def __init__(self, g_dim, h1_dim, h2_dim, args):super(GNN, self).__init__()self.num_relations = 2 * args.n_speakers ** 2self.conv1 = RGCNConv(g_dim, h1_dim, self.num_relations)self.conv2 = TransformerConv(h1_dim, h2_dim, heads=args.gnn_nheads, concat=True)self.bn = nn.BatchNorm1d(h2_dim * args.gnn_nheads)def forward(self, node_features, edge_index, edge_type):x = self.conv1(node_features, edge_index, edge_type)x = nn.functional.leaky_relu(self.bn(self.conv2(x, edge_index)))return x
##分类器:def forward(self, h, text_len_tensor):if self.args.dataset == "mosei" and self.args.emotion == "multilabel":if self.args.use_highway:h = self.highway(h)hidden = self.drop(F.relu(self.lin1(h)))scores = self.lin2(hidden)# y_hat = torch.sigmoid(scores) > 0.5y_hat = scores > 0return y_hatlog_prob = self.get_prob(h, text_len_tensor)y_hat = torch.argmax(log_prob, dim=-1)return y_hat

使用方式

  • 处理数据
python preprocess.py --dataset=“iemocap_4”
  • 训练模型
python train.py --dataset=“iemocap_4” --modalities=“atv” --from_begin --epochs=55
  • 测试模型
python eval.py --dataset=“iemocap_4” --modalities=“atv”

🫓总结

综上,我们基本了解了“一项全新的技术啦” 🍭 ~~

恭喜你的内功又双叒叕得到了提高!!!

感谢你们的阅读😆

后续还会继续更新💓,欢迎持续关注📌哟~

💫如果有错误❌,欢迎指正呀💫

✨如果觉得收获满满,可以点点赞👍支持一下哟~✨

【传知科技 – 了解更多新知识】

这篇关于⌈ 传知代码 ⌋ 多模态COGMEN详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected