我想知道Tensorflow优化器(特别是AdamOptimizer
)在将损失函数定义为总和或平均值/平均值时是否有偏好?
一般来说,我的假设是使用均值是首选,因为损失不依赖于小批量的大小。因此,更容易找到适用于任何批量大小的学习率。
然而,Tensorflow定义了例如l2_loss
内部为:
output = sum(t ** 2) / 2
这是否意味着优化器已在内部考虑批量大小,即,他们预计损失会随批量大小线性变化?另外,从优化的角度来看,获得一半L2规范的动机是什么?
答案 0 :(得分:3)
那么l2_loss实际上是一个正则化损失函数。我们在主要的损失函数中添加它,以防止参数过度拟合。我们通常将l2损失除以2,以便在采用渐变时更容易。
在任何优化器中,我们采用w.r.t批量大小的平均损失。