GradNorm理解
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) - 知乎
为什么loss量级大的task1的权重更大呢?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!