在this code中计算负对数似然性,他们说:
注意:我们使用均值而不是总和,以便学习率 较少依赖批量大小
这就是他们获得负对数可能性的方式:
return -T.mean(T.log(self.p_y_given_x)[T.arange(y.shape[0]), y])
在许多教科书中都是如此(例如Bishop的模式识别和机器学习),通过使用每个单独样本错误的总和来计算负对数似然而不是意味着。我仍然不理解作者的说明。每当我们计算成本函数时,我们应该使用均值而不是总和吗?即使我们不使用批次?
答案 0 :(得分:3)
平均值和总和之间的差异只是乘以1 / N.
使用总和的问题是批量大小(N)会影响您的渐变。学习率表示您想要调整参数的渐变方向。
如果较大批量(N)的梯度较大,则意味着在增加批量大小(N)时需要调整学习率。
在实践中,为了使这两者(学习率和批量大小)保持独立,通常使用均值而不是和。这使得梯度幅度与N无关。
如果您没有使用批次,则N = 1且平均值与总和相同。
答案 1 :(得分:2)
考虑两种情况,当您想要更改算法的批量大小时,可以说从10到100:
如果您使用对数似然成本函数的总和,您所采取的平均步数将乘以10(因为总和将增加10倍的条款)然后您将不得不重新调整学习率
如果您使用的是平均值,则该结果将除以100而不是10,并且您的步数将自然具有相同的数量级
因此,如果您不使用小批量或调整批量大小,请不要担心这个