背景
我们在进行多模态训练时,会出现模态不平衡的问题,往往使用了文本预训练模型的文本模态由于大量的预训练会容易出现过拟合现象,在文本模态过拟合的时候,视觉模态还处在欠拟合状态,则会导致视觉模态无法训练到最佳状态。如何平衡不同模态的性能,让多模态都能发挥自己最佳状态,从而提升整体多模态特征性能呢?
提前对其他模态进行预训练
在使用文本预训练模型时,如huggingface的bert预训练模型,其他模态如视觉模态,在调用官方预训练模型的同时,在自己的多模态数据集上进行预训练,当视觉模型收敛后,再作为视觉模态的预训练模型,与文本模态一起进行多模态预训练。
添加模态loss
对不同模态都添加各自的模态loss,这样在单个模态收敛后,其余模态还能有足够的监督动力。
这种方法需要注意:不同模态对任务的影响应当是比较平均或者相差不大的,如果某个模态在整个任务中的作用很小,这样做可能会适得其反。
模态dropout
- 模态融合时,对模态进行dropout,如随机丢掉某个模态,只使用单模态预测
early-fusion
在网络中断进行融合,再共用一半backbone提取融合后的特征,而不是获取模态embedding后,再融合。
如论文eccv2018:https://arxiv.org/pdf/1804.03641.pdf