在 SGD 中,我想了解在我们通过转到下一行再次更新参数之前是否计算所有行的成本,或者在更新参数之前仅计算下一行的成本?
最佳答案
在随机梯度下降中,您可以使用批处理更新参数。如果你的训练集有N
示例(=行),您只需使用 B
其中每次更新参数,其中 B<=N
。那些B
应从 N
中随机选择参数更新的每次迭代的示例。 (通过替换选择、不替换选择或只是提前打乱训练集来随机选择)。因此,您使用 B
计算成本的梯度每次都举例。 (请注意,您实际上不需要计算成本 - 只需计算其梯度)。 B
特别地可以等于N
,也可以等于1
(这称为在线学习)。
此外,有时您希望在优化过程中看到一些学习指标。例如,每隔一段时间,您可能希望查看整个训练集上的成本值(这有助于终止条件),或者查看整个验证集上的成本值(例如,当监控以确保您不会过度拟合)。在这些情况下,您可能需要计算整个集合的成本(而不是梯度)。
关于machine-learning - 随机梯度下降的成本函数是针对所有行计算还是仅针对迭代行计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43943177/