paper: https://arxiv.org/pdf/2203.15332.pdf
一句话总结:解决多模态训练时主导模态训得太快导致辅助模态没训充分的问题
交叉熵损失函数:
其中,f(x)为
解耦一下:
其中,a表示audio模态,v表示visual模态,f(x)为softmax前的两个模态联合输出的logits。在这个任务中a为主导模态,即对于gt类别,a模态输出的logits更大
以
W
a
W^a
Wa为例,L对
W
a
W^a
Wa求导:
可以看到,根据链式求导法则,
φ
a
\varphi^a
φa是与a模态相关的输出,
∂
L
∂
f
(
x
i
)
\frac{\partial{L}}{\partial{f(x_i)}}
∂f(xi)∂L的值对于两个模态都相同,因此影响对不同模态的梯度差异的就是后面这部分,也就是
φ
\varphi
φ的值。由于一般主导模态输出的logits较高,即
φ
\varphi
φ和
W
W
W的值较大,因此反传时的梯度也更大,收敛也更快。
因此可能会出现主导模态先训好了,loss降得比较低了,辅助模态还没训好的问题。具体为啥辅助模态不能接着训好,有待探究。
对于本文,为了减速主导模态训练,因此在求梯度时加个衰减系数,减少主导模态反传的梯度,相当于单独减小主导模态的学习率:
用两个模态各自输出logits的softmax后的score比值来确定
将比值大于1的(主导模态)设置衰减系数k(0~1),辅助模态为1(不变)
与学习率相乘,相当于减小学习率
此外,根据SGD的梯度反传过程,梯度可以推到为原梯度+高斯噪声:
学习率越大=>高斯噪声协方差越大=>泛化能力越强。这里减小学习率相当于削弱了主导模态的泛化能力。加了衰减系数后的梯度,方差缩小为原来的k^2倍:
因此,本文人为增加一个高斯噪声,方差=batch内样本的方差:
相当于噪声的协方差相比以前还变大了: