在 SGD 中,我想了解是在我们通过转到下一行再次更新参数之前为所有行计算成本,还是在更新参数之前仅为下一行计算成本?
问问题
31 次
1 回答
1
在随机梯度下降中,您使用批量更新参数。如果您的训练集有N
示例 (=rows),则您仅B
在每次更新参数时使用它们,其中B<=N
. 这些B
应该从N
参数更新的每次迭代的示例中随机选择。(通过替代选择、不替代选择或只是提前打乱训练集来随机选择)。B
因此,您每次都使用示例计算成本的梯度。(请注意,您实际上不需要计算成本 - 只需计算其梯度)。B
尤其可以等于N
,也可以等于1
(称为在线学习)。
此外,有时您希望在优化过程中查看一些学习指标。例如,每隔一段时间,您可能希望查看整个训练集的成本值(这有助于终止条件),或者查看整个验证集的成本值(例如,当监控以确保您不会过度拟合)。在这些情况下,您可能需要计算整个集合的成本(而不是梯度)。
于 2017-05-12T18:45:27.877 回答