本文所涉及所有资源均在传知代码平台可获取
目录
概述
本文讲解并复现了2024年一篇多模态情感计算的文章 “TETFN: A text enhanced transformer fusion network for multimodal sentiment analysis”,这篇论文利用三种模态之间进行交互,并对文本模态进行增强,以更准确的提取非文本模态的情感信息。
随着社交媒体和短视频行业的快速发展,来自文本、视频和音频的多模态数据呈现爆炸式增长。与此同时,捕获设备的广泛使用,加上其易用性、移动性和低成本,使得从不同用户捕获情感线索变得容易,这与人类语言交流相同。这三种情态在表达过程中既有语义上的联系又有互补性。因此,在多模态情感分析中的一个关键问题是如何设计一种多模态融合方案来有效地集成异构数据,以便学习包含更多情感相关信息的多模态表示,同时保持每个模态的一致性和差异性信息。
主要贡献如下所示:
核心逻辑
下图是整体的TETFN模型框架:
接下来,我们对其中重要模块逐一进行讲解:
特征提取:
文本增强型Transformer模块: Text enhanced Transformer主要包含3个模块:Positional embedding、Text Enhanced Transformer、Unimodal Label Generation Module;我们分别对他们进行介绍和讲解:
部分交互代码如下:
h_l_with_as = self.trans_l_with_a(proj_x_l, proj_x_a, proj_x_a) # Dimension (L, N, d_l)
h_l_with_vs = self.trans_l_with_v(proj_x_l, proj_x_v, proj_x_v) # Dimension (L, N, d_l)
h_ls = torch.cat([h_l_with_as, h_l_with_vs], dim=2)
h_ls = self.trans_l_mem(h_ls)
if type(h_ls) == tuple:
h_ls = h_ls[0]
last_h_l = h_ls[-1] # Take the last output for prediction
# (L,V) --> A
h_a_with_ls = self.trans_a_with_l(proj_x_a, proj_x_l, proj_x_l)
h_a_with_vs = self.trans_a_with_v(proj_x_v, proj_x_a, proj_x_l)
h_as = torch.cat([h_a_with_ls, h_a_with_vs], dim=2)
h_as = self.trans_a_mem(h_as)
if type(h_as) == tuple:
h_as = h_as[0]
last_h_a = h_as[-1]
# (L,A) --> V
h_v_with_ls = self.trans_v_with_l(proj_x_v, proj_x_l, proj_x_l)
h_v_with_as = self.trans_v_with_a(proj_x_a, proj_x_v, proj_x_l)
h_vs = torch.cat([h_v_with_ls, h_v_with_as], dim=2)
h_vs = self.trans_v_mem(h_vs)
if type(h_vs) == tuple:
h_vs = h_vs[0]
last_h_v = h_vs[-1]
# fusion
fusion_h = torch.cat([last_h_l, last_h_a, last_h_v], dim=-1)
fusion_h = self.post_fusion_dropout(fusion_h)
fusion_h = F.relu(self.post_fusion_layer_1(fusion_h), inplace=False)
# # text
text_h = self.post_text_dropout(text_h)
text_h = F.relu(self.post_text_layer_1(text_h), inplace=False)
# audio
audio_h = self.post_audio_dropout(audio_h)
audio_h = F.relu(self.post_audio_layer_1(audio_h), inplace=False)
# vision
video_h = self.post_video_dropout(video_h)
video_h = F.relu(self.post_video_layer_1(video_h), inplace=False)
复现过程
在准备好数据集并调试代码后,进行下面的步骤,附件已经调通并修改,可直接正常运行,下载多模态情感分析集成包,进行训练:
# show usage
$ python -m MMSA -h
# train & test LMF on MOSI with default parameters
$ python -m MMSA -d mosi -m lmf -s 1111 -s 1112
# tune 50 times of TFN on MOSEI with custom config file & custom save dir
$ python -m MMSA -d mosei -m tfn -t -tt 30 --model-save-dir ./models --res-save-dir ./results
# train & test self_mm on SIMS with custom audio features & use gpu2
$ python -m MMSA -d sims -m self_mm -Fa ./Features/Feature-A.pkl --gpu-ids 2
值得注意的是,我没有设置固定的epoch轮数,利用每轮训练结果与best performance比较,知道结果达到最好,则自动停止训练,训练过程如下:
每轮的单模态预测结果:
最终模型结果输出:
写在最后
综上所述,TETFN情感计算的实践复现不仅展示了其在情感理解和响应方面的强大能力,也揭示了实现这一前沿技术所面临的复杂挑战。通过详细的模型构建、数据处理和性能评估,我们不仅验证了TETFN的理论有效性,更深入探索了其在真实应用场景中的潜力,随着技术的不断演进,TETFN有望在更多领域发挥其独特优势,从智能客服到情感驱动的交互系统,无不显示出其巨大的应用价值。未来的研究将继续挖掘这一技术的深层潜力,推动情感计算向更高精度、更广应用的发展方向迈进。让我们对TETFN在情感计算领域的未来充满期待,它将如何继续引领这一领域的创新与突破,值得我们拭目以待。
详细复现过程的项目源码、数据和预训练好的模型可从该文章下方附件获取。