我将随机梯度下降 (SGD) 算法用于回归任务,并训练网络以对输入数据点进行多次迭代。我发现,与相同迭代次数的未打乱输入数据相比,输入数据的打乱会产生更好的结果。例如,我正在训练网络以学习 [-1,1] 之间输入范围的“平方”函数,总共 100 个点和 500 次迭代。因此,总训练点将是 100*500,如果我对所有这些训练点进行洗牌,系统性能会好得多。
有人可以建议它背后的数学原理是什么吗?为什么输入的改组效果更好?或者对参考论文的任何建议,它解释了培训中的随机性如何提供帮助。
谢谢。
我将随机梯度下降 (SGD) 算法用于回归任务,并训练网络以对输入数据点进行多次迭代。我发现,与相同迭代次数的未打乱输入数据相比,输入数据的打乱会产生更好的结果。例如,我正在训练网络以学习 [-1,1] 之间输入范围的“平方”函数,总共 100 个点和 500 次迭代。因此,总训练点将是 100*500,如果我对所有这些训练点进行洗牌,系统性能会好得多。
有人可以建议它背后的数学原理是什么吗?为什么输入的改组效果更好?或者对参考论文的任何建议,它解释了培训中的随机性如何提供帮助。
谢谢。
因为 SGD 的工作原理是根据遇到的每个样本进行较大的调整,然后对剩余的样本进行越来越小的调整,所以样本的顺序很重要。如果模型在前几次迭代中仅遇到正样本或仅遇到负样本,则尤其如此。
顾名思义,随机梯度下降使用损失函数的随机梯度更新神经网络 (NN) 的参数向量。
随机梯度是对真实梯度的“无偏估计”。换句话说,随机梯度是一个随机变量,其期望值等于“真实”梯度。
在NN中,梯度是损失函数的梯度。幸运的是,损失函数是线性的,因此它是在每个样本处计算的损失函数的平均值。
当我们取一个样本并在那里计算损失函数的梯度时,我们得到的值可以看作是对真实梯度的估计。现在,如果您的样本以某种方式排序,则在它们上计算的损失函数序列不是“无偏的”。
回顾一下,为了应用随机梯度下降,必须提取样本,以便它们独立地从概率分布中抛出,这样在每个样本上计算的损失函数的梯度“似乎”是对真实损失函数的无偏估计。