百科问答小站 logo
百科问答小站 font logo



多任务学习中loss多次backward和loss加和后backward有区别吗? 第1页

  

user avatar   deepphysics 网友的相关建议: 
      

之前回答过一个类似的问题。多任务训练时,先对loss求和再使用一个Adam做梯度下降,不等价于对多个任务使用不同的Adam做梯度下降,然后求和。

具体的区别是第二种方法能对不同的任务学到不同的适配学习率。

而第一种方法只能依赖于训练初始时刻不同任务被分配的权重。

对于本问题,先考虑最简单的情况。做3个假设,前两个假设固定

  1. 假设只有一个优化器 -- 简单的随机梯度下降(SGD),不对不同任务使用适配学习率。
  2. 假设只有两个子任务,既共享部分神经元,也独自拥有各自的神经元

考虑 loss = ,其中 是两个任务共有的参数,

是第一个任务独有的参数, 是第二个任务独有的参数。

对第一个任务做梯度下降,损失函数定为 ,

假设此时并未使用更新后的神经网络参数重新计算一个batch的loss,

对第二个任务做梯度下降,损失函数定为 ,则

因为整体的 loss 等于 , 所以两者并无区别。

假设此时使用更新后的神经网络参数重新计算了一个batch的loss,

对第二个任务做梯度下降,损失函数定为 ,则

原则上, , 在这种假设下,对第二个任务使用 SGD 时,神经网络表示的泛函已经发生了改变。

假设神经网络的优化目标有如下泛函形式,

其中 x 是神经网络输入, 分别是共有神经元与独立神经元经过训练后学会的函数,加 ‘ 表示这些函数的一阶导数。完全训练后,对这些函数的任意改变都会导致 的增大。

如果第一次更新后,函数 y 更新为 , 其中 。

对第二个任务做梯度下降时,就要考虑函数形式发生变化后 loss 对 与 的梯度。

函数形式发生变化后,损失函数的变分大概为,

里面会多出来由于 与 改变引起的 , , , 等项。

暂时还没想明白这个影响有多大,以后想的更清楚了再来更新。




  

相关话题

  2017年1月18日Facebook发行的PyTorch相比TensorFlow、MXNet有何优势? 
  如何系统学习机器学习? 
  Yann LeCun、Geoffrey Hinton或Yoshua Bengio能得图灵奖吗? 
  国内哪些公司在用caffe、torch、TensorFlow、paddle等框架,哪些在用自研框架? 
  给男友配置一个适合做深度学习的电脑要多少钱? 
  多模态训练,怎么解决不同模态之间差异的问题? 
  神经网络的损失函数为什么是非凸的? 
  如何看待NVIDIA 即将开源的DLA? 
  为什么小模型已经可以很好地拟合数据集了,换大模型效果却要比小模型好? 
  如何看待Meta(恺明)最新论文ViTDet:只用ViT做backbone(不使用FPN)的检测模型? 

前一个讨论
能否详细说明一下对称算法中的DES,AES?
下一个讨论
TensorFlow 中 padding 的 SAME 和 VALID 两种方式有何异同?





© 2025-01-31 - tinynew.org. All Rights Reserved.
© 2025-01-31 - tinynew.org. 保留所有权利