GradNorm理解

2023-12-13 17:19:51

主要参考这一篇,GradNorm:Gradient Normalization for Adaptive Loss Balancing in Deep Multitask Networks,梯度归一化_grad norm-CSDN博客

14:20-15:30?

提前需要理解的概念

损失函数,衡量ypred与ytruth的差距。

Grad Loss定义为:各个任务【实际的梯度范数】与【理想的梯度范数】的【差的绝对值和】;

先把范数简单理解成长度,目前把范数想象成了神经网络找最优参数时向某个方向走的距离;

参数理解

其中,alpha?是设定恢复力强度的超参数,即将任务的训练速度调节到平均水准的强度。如果任务的复杂程度很不一样,导致任务之间的学习速率大不相同,就应该使用较高的?alpha?来进行较强的训练速率平衡;反之,对于多个相似的任务,应该使用较小的?alpha。

Training with GradNorm

用自己的想法总结了下,

gradnorm在单个batch step的流程总结如下:
整体任务是指L=w_aL_a+w_bL_b, W是神经网络的参数值, gradnorm主要在动态学w_a, w_b;
1、前向传播计算总损失L=w_a*L_a+w_b*L_b(假设我现在有2个任务);
2、计算第i个任务对整体任务的梯度范数,计算任务i的相对反向训练速度,计算所有任务对整体任务的梯度范数的平均;
3、计算GradLoss;
4、计算GradLoss对wi的导数(wi是指w_a,w_b);
5、利用第1步计算的Loss反向传播更新神经网络参数;
6、利用第4步的导数更新wi(更新后在下一个bacth step生效);
7、对wi进行renormalize(下一个bacth step使用的是renormalize之后的wi,意思就是下一个batch训练的时候wa,wb已经换了);
?

代码(aaa)

Multi-Task Learning:GradNorm - 知乎(参数含义的查漏补缺)

GitHub - QunBB/DeepLearning: All about DeepLearning: 推荐系统、自然语言处理、Tensorflow、Pytorch等

- 附加第二个代码的相关实验数据:多任务学习MTL模型:多目标Loss优化策略 - 知乎?

? ? -?多目标loss优化在开源数据实验一(uncertainty weight、GradNorm) - 知乎

GitHub - brianlan/pytorch-grad-norm: Pytorch implementation of the GradNorm. GradNorm addresses the problem of balancing multiple losses for multi-task learning by learning adjustable weight coefficients.

为什么loss量级大的task1的权重更大呢?

文章来源:https://blog.csdn.net/weixin_31866177/article/details/134974076
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。