百科问答小站 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有何优势? 
  有哪些比较好的机器学习,深度学习的网络资源可利用? 
  Transformer中的Mask矩阵已经有顺序了,能去掉position embedding吗? 
  如何评价谷歌刚推出的Cloud AutoML? 
  如何评价Sony新出的深度学习库NNabla? 
  深度学习中,模型大了好还是小了好呢? 
  如何评价 UCLA 朱松纯教授近日访谈中对深度学习的批评? 
  深度学习方面还有什么Open Problem? 
  深度学习cnn中,怎么理解图像进行池化(pooling)后的平移不变性? 

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





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