对数似然成本函数:均值或总和?

时间:2016-02-27 08:09:31

标签: python machine-learning neural-network classification theano

this code中计算负对数似然性,他们说:

  

注意:我们使用均值而不是总和,以便学习率   较少依赖批量大小

这就是他们获得负对数可能性的方式:

return -T.mean(T.log(self.p_y_given_x)[T.arange(y.shape[0]), y])

在许多教科书中都是如此(例如Bishop的模式识别和机器学习),通过使用每个单独样本错误的总和来计算负对数似然而不是意味着。我仍然不理解作者的说明。每当我们计算成本函数时,我们应该使用均值而不是总和吗?即使我们不使用批次?

2 个答案:

答案 0 :(得分:3)

平均值和总和之间的差异只是乘以1 / N.

使用总和的问题是批量大小(N)会影响您的渐变。学习率表示您想要调整参数的渐变方向。

如果较大批量(N)的梯度较大,则意味着在增加批量大小(N)时需要调整学习率。

在实践中,为了使这两者(学习率和批量大小)保持独立,通常使用均值而不是和。这使得梯度幅度与N无关。

如果您没有使用批次,则N = 1且平均值与总和相同。

答案 1 :(得分:2)

考虑两种情况,当您想要更改算法的批量大小时,可以说从10到100:

  • 如果您使用对数似然成本函数的总和,您所采取的平均步数将乘以10(因为总和将增加10倍的条款)然后您将不得不重新调整学习率

  • 如果您使用的是平均值,则该结果将除以100而不是10,并且您的步数将自然具有相同的数量级

因此,如果您不使用小批量或调整批量大小,请不要担心这个