• 多模态训练如何平衡不同模态


    背景

    我们在进行多模态训练时,会出现模态不平衡的问题,往往使用了文本预训练模型的文本模态由于大量的预训练会容易出现过拟合现象,在文本模态过拟合的时候,视觉模态还处在欠拟合状态,则会导致视觉模态无法训练到最佳状态。如何平衡不同模态的性能,让多模态都能发挥自己最佳状态,从而提升整体多模态特征性能呢?

    提前对其他模态进行预训练

    在使用文本预训练模型时,如huggingface的bert预训练模型,其他模态如视觉模态,在调用官方预训练模型的同时,在自己的多模态数据集上进行预训练,当视觉模型收敛后,再作为视觉模态的预训练模型,与文本模态一起进行多模态预训练。

    添加模态loss

    对不同模态都添加各自的模态loss,这样在单个模态收敛后,其余模态还能有足够的监督动力。

    这种方法需要注意:不同模态对任务的影响应当是比较平均或者相差不大的,如果某个模态在整个任务中的作用很小,这样做可能会适得其反。

    模态dropout

    • 模态融合时,对模态进行dropout,如随机丢掉某个模态,只使用单模态预测

    early-fusion

    在网络中断进行融合,再共用一半backbone提取融合后的特征,而不是获取模态embedding后,再融合。

    如论文eccv2018:https://arxiv.org/pdf/1804.03641.pdf

     又有论文ALBEF(NeurIPS 2021 Spotlight):https://github.com/salesforce/ALBEF

    Gradient-Blending

    来自NIPS2021:https://arxiv.org/pdf/1905.12681.pdf

    普通的特征concat,并不能发挥模态的作用,反而会掉点:

    一些对audio特征和视觉特征的融合方法尝试:

    可以看到,只有dropout和mid-concat有微弱涨点。

     本文证明了多模态融合时,会出现单模态过拟合的问题,并提出一个新的指标overfitting-to-generalization ratio (OGR), 试图定量的评估过拟合问题,通过引入最小化OGR的loss来优化单模态过拟合问题,方法为GradientBlending。

    本文对过拟合的评估,通过验证集和训练集loss差来评估。所以本文对每个模态都添加了模态loss,因为需要模态loss太评估每个模态过拟合的程度。本文实际的目标是在调整不同模态的单模态loss的权重,试图控制某一模态过拟合情况发生。

    不同模态的权重,则是通过作者提出的OGR定量计算出来。(推导部分没有太看懂,也没有代码,实操起来感觉会比较麻烦)。

    在实践中,往往文本模态比视觉模态容易过拟合,因为文本模态会调用使用庞大数据预训练的预训练模型,所以文本模态比较容易过拟合,可以尝试对文本模态的学习率或loss权重做下降处理。

    模态蒸馏

    使用预训练好的单模态,蒸馏模态融合时的模态特征,论文:https://arxiv.org/pdf/2106.11059.pdf

    文中:单模态自蒸馏>模态dropout>pretrain+finetune

    自适应学习

    CVPR2022 oral: https://github.com/GeWu-Lab/OGM-GE_CVPR2022

    本文说,即使模态融合后的结果超过了单模态的性能,但是单模态的性能往往离单模态训练还有很大距离,如何让这些单模态的表征达到最佳状态是个问题。这种问题的原因是,更占主导的模态会抑制另一个模态的表征学习

     上图中,图像单模态在多模态融合训练后掉点更明显,原因是在VGGSound这种音频主导的数据集里,图像模态容易被音频模态压制。

    本文贡献:

    1. 从优化角度,解释了模态欠拟合限制了模态融合效果
    2. 提出OGM-GE方法,动态调整不同模态优化的平衡问题
    3. OGM-GE可以即插即用到其他多模态融合方式中

    看了代码后的感受是:利用融合前的单模态特征计算softmax,获得分类得分,用于查看单模态特征对最终任务的影响,取不同模态间的得分比值,将比值的倒数作为梯度的权重乘到各自模态上,对于对最终任务影响大的模态特征,其训练梯度获得削弱,从而减慢了该模态的训练速度,拉齐不同模态间的训练速度。由于比值是训练过程中动态变化的,算法也起到自适应的效果

  • 相关阅读:
    Go 查找重复的行
    超越ChatGPT:大模型的智能极限
    尚硅谷2024新版3小时速通Docker教程
    iNFTnews | 虚拟人的出现,是新奇还是变革?
    Java 给Word每一页设置不同文字水印效果
    微信小程序ios下,border显示不全兼容问题解决
    基于C语言实现的足球信息查询系统 课程报告+项目源码+演示PPT+项目截图
    产品经理是干什么的?产品经理的工作内容与职责
    跳表和散列表
    谈谈对mqtt和kafka的理解
  • 原文地址:https://blog.csdn.net/ygfrancois/article/details/125081525