交叉熵与交叉熵的平均值

机器算法验证 机器学习 神经网络 期望值
2022-03-22 19:43:14

在许多神经网络应用中,人们倾向于将 loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels,logits)[tensorflow functions] 定义为损失函数。为什么要加tf.reduce_mean(计算期望值)?

1个回答

对于随机梯度下降等在线训练方法,每次迭代的损失反映了单个数据点的贡献。因此,在这种情况下不需要求和。对于批量或小批量训练,有必要通过求和或均值来组合批量/小批量中每个点的损失。

取总和时,损失取决于数据点的数量(在批量训练的情况下)或小批量大小(在小批量训练的情况下)。另请注意,每个小批量中的点数可能会有所不同。取平均值可以将损失与这些影响脱钩。

这有几个好处:

  1. 它可以更轻松地比较具有不同点数的数据集之间的损失,或者具有不同小批量大小的迭代之间的损失。

  2. 它可以更改点数或小批量大小,而无需更改步长、正则化(或惩罚)强度等其他参数。

  3. 在 minibatch 训练的情况下,它确保所有 minibatch 的贡献相同。取总和会给包含更多点的小批量更高的权重。