本文主要详细描述了Supervised Prototypical Contrastive Learning for Emotion Recognition in Conversation论文详解及实现。
论文详解
2022.10.17_Supervised Prototypical Contrastive Learning for Emotion Recognition in Conversation
用于对话中情绪识别的监督原型对比学习
☀论文的主要贡献
- 提出一个监督的原型对比学习(SPCL)实现ERC任务,它可以在类平衡的数据上有效地进行监督式对比学习,并且不需要大的批量大小。
- 第一个将监督式对比学习和课程学习应用到此任务。
- 在三个广泛使用的基准上取得了最先进的结果。实验结果进一步证明了提出的SPCL损失和课程学习策略的有效性。
论文的简介
论文在对话中捕捉情绪在现代对话系统中起着至关重要的作用。然而,情感和语义之间的弱相关性给会话中的情感识别(ERC)带来了许多挑战。即使是语义相似的话语,情绪也可能因上下文或说话者而有很大差异。在本文中,为 ERC 任务提出了监督原型对比学习 (SPCL) 损失。利用原型网络,SPCL 旨在通过对比学习解决不平衡分类问题,并且不需要大批量。同时,我们设计了一个基于班级距离的难度度量函数,引入课程学习来减轻极端样本的影响。论文在三个广泛使用的基准测试中取得了最先进的结果。
论文的主要知识点:
自监督对比学习 (SPCL):
- 将对比学习与课程学习融合。
- 建立一个基于提示的语境编码器
训练策略:
基于抽样的方法构建从简单到难的子集
设R为训练周期,在k个周期训练模型
论文中实验中的数据集
实验结果
项目实现
克隆项目命令
git clone https://github.com/caskcsg/SPCL
训练代码
python train.py -tr -wp 128 -epochs 16 -temp 0.05 -tsk meld -psz 256 -ssz 64 -train_obj spcl -cl -seed 2333
如果出错参考【PS1】
修改相关参数可修改配置文件config.py
训练时错误与解决
【PS1】torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 128.00 MiB (GPU 0; 23.65 GiB total capacity; 22.73 GiB already allocated; 116.56 MiB free; 22.78 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
训练代码时,注意调节gpu指定号码,我指定的是0和1,如果只有一个的话就指定0.也可以调小batchsize.
结果