【CVPR2022 oral】Balanced Multimodal Learning via On-the-fly Gradient Modulation

请添加图片描述

论文:https://arxiv.org/abs/2203.15332

代码:https://github.com/GeWu-Lab/OGM-GE_CVPR2022

这是一个来自人民大学GeWu-Lab的工作,被CVPR2022接收并选为Oral Presentation,相关代码已经开源。

1、研究动机

使用多模态数据进行分类有助于提高分类性能,但是,实际上现有的方法并没有有效的挖掘多个模态数据的性能。(如下图所示,在多模态模型中特定模态编码器的性能反而不如单模态模型,这说明现有的模型对于单模态特征表示的挖掘不足)

请添加图片描述

作者认为,这个现象的主要原因是:两个模态有一个起主导作用,另一个起辅助作用。起主导作用的模态会对另一个模态的优化起抑制作用。因此,为了解决这一问题,作者提出了OGM-GE(on-the-fly gradient modulation, generalization enhancement)。

作者举了一个非常生动的例子,在速度滑冰团体追逐比赛中,是以团队最后一名完成的队员记录团队成绩:通常情况下优势模态队员与较慢的弱势模态队员缺乏联系与互助,即使率先到达终点(训练收敛)也不得不停下来等待弱势模态队员(如图2的上半部分所示);但是通过OGM-GE方法的调控,让优势队员慢下来带带弱势队员。弱势队员由于受到帮助(比如滑冰比赛中的借风等因素)速度有所提高,这样团队总体成绩便能提高(如图2的下半部分所示)。

2、主要方法

为了解决多模态分类中的优化不平衡问题,作者根据模态间的效果差异自适应地调制梯度,并结合高斯噪声的泛化性增强能力,提出了具有较强适用性的OGM-GE优化方法,整个方法的算法框架下图所示。

img

首先,通过监控它们对学习目标的贡献的差异来自适应地调节每种模态的梯度。为了有效地衡量多模态模型中单模态表征能力的差异,作者设计了模态间差异比率这一指标;在训练进程中,根据该模态间的差异比率,动态地赋予不同模态不同的梯度比例系数,这样在整个训练过程中,都可以自适应地调控模型的优化进程。

其次,通过分析,作者发现对梯度添加小于1的系数进行调控会削弱优化过程中随机梯度噪声的强度,进而可能潜在地影响模型的泛化能力。因此,在梯度调控的基础上增加了噪声补强策略,即在梯度上额外增加高斯噪声,以恢复(甚至在原有基础上增强)随机梯度噪声强度,从而提升模型的泛化性能。

(1)on-the-fly gradient modulation

两个模态就有两个 encoder ,用 φ u \varphi^{u} φu 表示 ,其中 u ∈ { a , v } u \in \{a,v\} u{a,v},分别对应audio和video两个模态。其中encoder的参数为 θ u \theta^u θu。使用梯度下降法优化时为:

θ t + 1 u = θ t u − η ∇ θ u L ( θ t u ) . \theta_{t+1}^{u} =\theta_{t}^{u}-\eta \nabla_{\theta^{u}} L(\theta_{t}^{u}). θt+1u=θtuηθuL(θtu).

因此,作者的想法是,可以自适应的调节各个模态的优化速度,因此定义一个差异比率 ρ t u \rho^u_t ρtu:

s i a = ∑ k = 1 M 1 k = y i ⋅ softmax ( W t a ⋅ φ t a ( θ a , x i a ) + b 2 ) k , s_{i}^{a}= \sum_{k=1}^M 1_{k=y_{i}} \cdot \text{softmax} (W^{a}_{t} \cdot \varphi^{a}_{t}(\theta^{a},x_{i}^{a})+\frac{b}{2})_{k}, sia=k=1M1k=yisoftmax(Wtaφta(θa,xia)+2b)k,

s i v = ∑ k = 1 M 1 k = y i ⋅ softmax ( W t v ⋅ φ t v ( θ v , x i v ) + b 2 ) k , s_{i}^{v}= \sum_{k=1}^M 1_{k=y_{i}} \cdot \text{softmax} (W^{v}_{t} \cdot \varphi^{v}_{t}(\theta^{v},x_{i}^{v})+\frac{b}{2})_{k}, siv=k=1M1k=yisoftmax(Wtvφtv(θv,xiv)+2b)k,

ρ t v = ∑ i ∈ B t s i v ∑ i ∈ B t s i a . \rho^{v}_{t}=\frac{\sum_{i \in B_{t}} s_{i}^{v} } {\sum_{i \in B_{t}} s^{a}_i}. ρtv=iBtsiaiBtsiv.

因为有两个模态 audio 和 video, ρ t a \rho^a_t ρta定义为 ρ t v \rho^v_t ρtv的倒数。作者使用 ρ t u \rho^u_t ρtu动态监测多个模态之间的贡献差异,通过下面公式来自适应的调节梯度:

k t u = { 1 − tanh ⁡ ( α ⋅ ρ t u )   ρ t u > 1 1  others,  k^{u}_{t}=\left\{\begin{array}{cl} 1-\tanh (\alpha \cdot \rho^{u}_{t}) & \text { }\rho ^{u}_{t}>1 \\ 1 & \text { others, }\end{array}\right. ktu={1tanh(αρtu)1 ρtu>1 others, 

其中, α \alpha α 是一个超参数。作者将 k t u k^u_t ktu用在了SGD优化方法中,在迭代中,网络参数更新过程如下:

θ t + 1 u = θ t u − η ⋅ k t u g ~ ( θ t u ) . \theta^{u}_{t+1} =\theta_{t}^{u}-\eta \cdot k_{t}^{u}\tilde{g}(\theta_{t}^{u}). θt+1u=θtuηktug~(θtu).

可以看出,通过 k t u k^u_t ktu 降低了主导模态的优化,而其它模态不受影响,从而缓解模态不平衡问题。

(2)generalization enhancement

定理:SGD 中的噪声与其泛化能力密切相关,SGD噪声越大,泛化能力越好。SGD 噪声的协方差与学习率和批量大小的比率成正比。

根据定理,梯度协方差的值越高,通常会带来更好的泛化能力。但经过作者的推导,OGM 方法会使 SGD 的泛化性能下降。所以有必要开发一种控制 SGD 噪声以提高泛化能力的方法。

作者引入了随机采样的高斯噪声 h ( θ t u ) h(\theta^u_t) h(θtu)到梯度中,迭代公式变为:

θ t + 1 u = θ t u − η ∇ θ u L ′ ( θ t u ) + η ξ t ′ , ξ t ′ ∼ N ( 0 , ( k t u ) 2 ⋅ Σ s g d ( θ t u ) ) , \theta_{t+1}^{u} =\theta_{t}^{u}-\eta \nabla_{\theta^{u}} L^{\prime}(\theta_{t}^{u})+\eta \xi_{t}^{\prime}, \\\xi_{t}^{\prime} \sim \mathcal{N}(0,(k_{t}^{u})^{2}\cdot\Sigma^{sgd}(\theta_{t}^{u})), θt+1u=θtuηθuL(θtu)+ηξt,ξtN(0,(ktu)2Σsgd(θtu)),

整个算法流程如下:

代码如下:

a, v, out = model(spec, image)

out_v = (torch.mm(v, torch.transpose(model.fusion_module.fc_out.weight[:, :512], 0, 1)) +
	 model.fusion_module.fc_out.bias / 2)
out_a = (torch.mm(a, torch.transpose(model.fusion_module.fc_out.weight[:, 512:], 0, 1)) +
	 model.fusion_module.fc_out.bias / 2)


score_v = sum([softmax(out_v)[i][label[i]] for i in range(out_v.size(0))])
score_a = sum([softmax(out_a)[i][label[i]] for i in range(out_a.size(0))])

ratio_v = score_v / score_a
ratio_a = 1 / ratio_v

if ratio_v > 1:
    coeff_v = 1 - tanh(args.alpha * relu(ratio_v))
    coeff_a = 1
else:
    coeff_a = 1 - tanh(args.alpha * relu(ratio_a))
    coeff_v = 1

for name, parms in model.named_parameters():
    layer = str(name).split('.')[1]

    if 'audio' in layer and len(parms.grad.size()) == 4:
	parms.grad *= coeff_a
	parms.grad += torch.zeros_like(parms.grad).normal_(0, parms.grad.std().item() + 1e-8)

    if 'visual' in layer and len(parms.grad.size()) == 4:
	parms.grad *= coeff_v
	parms.grad += torch.zeros_like(parms.grad).normal_(0, parms.grad.std().item() + 1e-8)

3、实验结果

作者首先将 OGM-GE 方法应用于几种常见的融合方法: baseline、concatenation 和 summation,以及专门设计的融合方法:FiLM 。性能如下表所示。从表中可以看出,两个模态性能不平衡,audio模态性能要明显优于 visual 模态。结a合OGM-GE方法以后,可以看到模型的性能有显著提升。

和其它modulation strategy 的对比。 作者和 modality-dropout 和 gradient-blending 进行了对比(如表2所示),可以看出所有 modulation方法都取得了性能提升,

消融实验非常有趣,在VGGSound数据集上,一开始OGM-GE方法的性能没有不使用时性能好,但是最后OGM-GE方法又实现了性能显著的提升。这是因为一开始我们方法在后期很好的挖掘了另一个模态的信息,实现了性能的提升。在图3中,展示了 ρ a \rho^a ρa的变化,可以看出,使用了OGM-GE训练的模型(蓝线),模态间的不平衡比例要显著小于直接训练的模型(黄线)。但由于不同模态间的信息量等存在天然差异等因素,该比例可能无法逼近1,只能在合理范围内减小。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值