百科问答小站 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 对 与 的梯度。

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

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

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




  

相关话题

  DL框架的未来发展,TensorFlow/MXNet/PyTorch, 选哪个? 
  如何评价小米开源的移动端深度学习框架MACE? 
  如何评价移动端吊打一切万众期待的商汤深度学习推理框架PPL开源了却没有支持移动端? 
  为什么神经网络具有泛化能力? 
  三维重建怎么入门? 
  AMD 开源高性能机器智能库MIopen是否可以和cuDNN抗衡? 
  新手如何入门pytorch? 
  为啥gan里面几乎不用pooling? 
  如何评价各种关联因素分析算法,尤其是在算法效果对比方面? 
  TensorFlow的自动求导具体是在哪部分代码里实现的? 

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





© 2024-11-24 - tinynew.org. All Rights Reserved.
© 2024-11-24 - tinynew.org. 保留所有权利