多任务学习中的网络架构和梯度归一化
在计算机视觉中的单任务学习已经取得了很大的成功。但是许多现实世界的问题本质上是多模态的。例如为了提供个性化的内容,智能广告系统应该能够识别使用的用户并确定他们的性别和年龄,跟踪他们在看什么,等等。多任务学习(Multi-Task Learning, MTL)可以实现这样的系统,其中一个模型在多个任务之间分配权重,并在一次正向传递中产生多个推理。
多任务学习中的优化
因为有多个任务同时运行所以MTL 的优化过程与一般的单任务模型有所不同,为了避免一项或多项任务对网络权重产生主导影响,应该仔细平衡所有任务的联合学习。这里介绍了一种考虑任务平衡问题的方法。
MTL 问题中的优化目标可以表述为
这里‘wi’是特定任务的权重,‘Li’是特定的损失函数,使用随机梯度下降来最小化上述目标,共享层“Wsh”中的网络权重更新为:
当任务梯度发生冲突时,或者说当一个任务的梯度幅度远高于其他任务时,网络权重更新可能不是最优的。这就需要在损失中设置针对于不同任务的权重,这样才能保证梯度幅度在各个任务间的相对平衡。
梯度归一化
有一种称为梯度归一化 (GradNorm)[1] 的优化方法,通过使不同任务的梯度具有相似大小来控制多任务网络训练的方法。这样可以鼓励网络以相同的速度学习所有任务。在展示这种方法之前,我们将介绍相关的符号。
这里也为每个任务 i 定义了不同的训练率:
GradNorm 旨在在多任务网络的训练过程中平衡两个属性:
1、平衡梯度幅度:平均梯度被用作基线,可以根据该基线计算作业之间的相对梯度大小。
2、在学习不同任务的速度之间找到一个很好的平衡点:使用了loss变化率(inversetrainingrate), 任务 i 的梯度幅度应该随着相对变化率的增加而增加,从而刺激任务更快地训练。GradNorm 通过减少以下损失来实现这些目标。
其中 α 是已添加到方程中的附加超参数。α 设置“恢复力”的强度,可以使任务恢复到一个普通的训练速率。在任务复杂性大导致任务之间的学习动态差异大时,应使用更大的 α 值来确保更好的训练率平衡。当问题更加对称时,需要较低的 α 值。
完整文章:
https://www.overfit.cn/post/5a90e7982e254a0580ab3eeeec728714