Machine learning 什么是随机梯度下降足够普遍的收敛准则

Machine learning 什么是随机梯度下降足够普遍的收敛准则,machine-learning,Machine Learning,我正在为随机梯度下降实现一个通用模块。这需要参数:训练数据集、丢失(x,y)、dw(x,y)-每个样本丢失和每个样本梯度变化 现在,关于收敛标准,我想到了: a) 每隔10%的dataset.size检查损失函数,在某个窗口上取平均值 b) 每10-20%的数据集大小后,检查权重向量之间差异的范数 c) 稳定训练集上的错误 d) 梯度符号的变化(每固定间隔后再次检查)- 我注意到这些检查(检查的精度等)还取决于其他因素,如步长、学习速度。。而且效果会因训练问题的不同而不同 我似乎拿不定主意,通用

我正在为随机梯度下降实现一个通用模块。这需要参数:训练数据集、丢失(x,y)、dw(x,y)-每个样本丢失和每个样本梯度变化

现在,关于收敛标准,我想到了:

a) 每隔10%的dataset.size检查损失函数,在某个窗口上取平均值

b) 每10-20%的数据集大小后,检查权重向量之间差异的范数

c) 稳定训练集上的错误

d) 梯度符号的变化(每固定间隔后再次检查)-

我注意到这些检查(检查的精度等)还取决于其他因素,如步长、学习速度。。而且效果会因训练问题的不同而不同

我似乎拿不定主意,通用的停止标准应该是什么,不管在SGD模块上抛出的训练集、fx、df/dw是什么。你们是干什么的

另外,对于(d),“符号变化”对于n维向量的意义是什么?在给定的dw_i,dw_i+1中,我如何检测符号的变化,它在两个以上的维度上有意义吗


顺便为非数学/乳胶符号表示歉意。仍然习惯于这些东西。

首先,随机梯度下降法是梯度下降法的在线版本。更新规则一次只使用一个示例

假设,
f(x)
是单个示例的成本函数,对于N维向量,SGD的停止标准通常为:

请参阅此,或此了解详细信息


其次,使用所谓的“小批量”对随机梯度下降进行了进一步的扭曲。它的工作原理与SGD相同,只是它使用多个训练示例来进行梯度的每个估计。这种技术减少了梯度估计中的方差,并且通常更好地利用现代计算机中的分层存储组织。看这个

谢谢。我理解你提到的所有概念——我只是想知道,人们在SGD的实际通用实现中使用了什么。此外,有人建议检查各时代之间权重向量的变化。根据我的理解,与正常的批处理版本相比,这可能不是一个很好的优势。顺便问一下,您是否检查运行样本之间的“delta f(x)”值?由于梯度(df/dw)矢量的随机运动,它可能非常不稳定!!