Questions tagged «sgd»

3
批量梯度下降与随机梯度下降
假设我们有一些训练集,其中。还假设我们在训练集上运行某种类型的监督学习算法。假设表示为。我们需要找到参数,以最小化和之间的“距离” 。令(x(i),y(i))(x(i),y(i))(x_{(i)}, y_{(i)})i=1,…,mi=1,…,mi = 1, \dots, mhθ(x(i))=θ0+θ1x(i)1+⋯+θnx(i)nhθ(x(i))=θ0+θ1x(i)1+⋯+θnx(i)nh_{\theta}(x_{(i)}) = \theta_0+\theta_{1}x_{(i)1} + \cdots +\theta_{n}x_{(i)n}θθ\mathbf{\theta}y(i)y(i)y_{(i)}hθ(x(i))hθ(x(i))h_{\theta}(x_{(i)})J(θ)=12∑i=1m(y(i)−hθ(x(i))2J(θ)=12∑i=1m(y(i)−hθ(x(i))2J(\theta) = \frac{1}{2} \sum_{i=1}^{m} (y_{(i)}-h_{\theta}(x_{(i)})^{2} 然后,我们希望找到最小化。在梯度下降中,我们初始化每个参数并执行以下更新:θθ\thetaJ(θ)J(θ)J(\theta)θj:=θj−α∂∂θjJ(θ)θj:=θj−α∂∂θjJ(θ)\theta_j := \theta_j-\alpha \frac{\partial}{\partial \theta_{j}} J(\theta) 批量梯度下降和随机梯度下降之间的主要区别是什么? 两者都使用上面的更新规则。但是,一个比另一个更好吗?

2
谁发明了随机梯度下降法?
我正在尝试了解“ 梯度下降”和“ 随机梯度下降”的历史。梯度下降是1847年在柯西(Cauchy)发明的。模拟系统类似的方法。第536–538页有关更多信息,请参见此处。 从那时起,梯度下降方法不断发展,我对它们的历史不熟悉。我特别对随机梯度下降的发明感兴趣。 可以在学术论文中广泛使用的参考。

6
对于凸问题,随机梯度下降(SGD)中的梯度是否始终指向全局极值?
给定凸成本函数,使用SGD进行优化,我们将在优化过程中的某个点处具有一个梯度(矢量)。 我的问题是,给定凸面上的点,梯度是否仅指向函数增加/减少最快的方向,或者梯度始终指向成本函数的最优/极端? 前者是本地概念,后者是全球概念。 SGD最终可以收敛到成本函数的极值。我想知道给定凸面上任意点的渐变方向与指向全局极值的方向之间的差异。 梯度的方向应该是函数在该点上最快增减的方向,对吗?

3
批量大小如何影响SGD的收敛,为什么?
我在许多讨论中都得出了类似的结论,即随着小批量生产的规模变大,SGD的收敛实际上变得越来越困难,例如本文和这个答案。我也听说有人在早期使用小学习率或批量大小之类的技巧来解决大批量问题。 但是,这似乎是违反直觉的,因为小批量的平均损失可以认为是数据分布上预期损失的近似值 1个| X|∑X ∈ Xl (x ,w )≈ ÈX 〜 pd一个牛逼一[ l (x ,w )]1个|X|∑X∈X升(X,w)≈ËX〜pd一种Ť一种[升(X,w)]\frac{1}{|X|}\sum_{x\in X} l(x,w)\approx E_{x\sim p_{data}}[l(x,w)] 较大的批量大小的更准确它应该是。为什么实际上不是这样? 以下是我的一些想法(可能是错误的),试图加以解释。 模型的参数彼此高度依赖,当批处理变得太大时,它会同时影响太多的参数,以至于参数很难达到稳定的固有依赖性?(如批处理规范化文件中提到的内部协变量偏移问题) 还是当几乎所有参数都在每次迭代中负责时,它们将倾向于学习冗余的隐式模式,从而降低了模型的容量?(我的意思是说,对于数字分类问题,某些图案应负责点,某些图案应负责边缘,但是当发生这种情况时,每个图案都应负责所有形状)。 还是因为当批的大小接近训练集的规模时,由于相关小批的可能性很大,所以小批不再从数据分布中被视为同小异? 更新 正如Benoit Sanchez的答案所指出的,一个重要的原因是大型微型批次需要更多的计算才能完成一次更新,并且大多数分析都使用固定数量的训练时期进行比较。 但是,这篇论文(Wilson和Martinez,2003年)表明,即使有足够的训练时间,较大的批次规模仍然略有不利。通常是这样吗?

1
与标准梯度下降相比,随机梯度下降如何节省时间?
标准梯度下降将为整个训练数据集计算梯度。 for i in range(nb_epochs): params_grad = evaluate_gradient(loss_function, data, params) params = params - learning_rate * params_grad 对于预定义的时期数,我们首先使用参数向量参数为整个数据集计算损失函数的梯度向量weights_grad。 相反,随机梯度下降为每个训练示例x(i)和标签y(i)执行参数更新。 for i in range(nb_epochs): np.random.shuffle(data) for example in data: params_grad = evaluate_gradient(loss_function, example, params) params = params - learning_rate * params_grad SGD据说要快得多。但是,我不明白如果仍然对所有数据点进行循环,那么如何更快。GD中梯度的计算是否比分别为每个数据点计算GD慢得多? 代码来自这里。

4
如何将其困在鞍点上?
目前,我对如何在鞍点处捕获小批量梯度下降感到有些困惑。 解决方案可能太琐碎,以至于我不明白。 你会得到一个新的样品每一个时代,并计算基于新的一批新的错误,所以成本功能仅适用于每一批静态这意味着梯度也应该为每个小批量根据改变..但这个应该香草的实施是否有鞍点问题? 最小化神经网络常见的高度非凸误差函数的另一个关键挑战是避免陷入其众多次优局部最小值中。Dauphin等。[19]认为困难实际上不是由局部极小值引起的,而是由鞍点引起的,即一维向上倾斜而另一维向下倾斜的点。这些鞍点通常被相同误差的平稳段包围,这使得SGD很难逃脱,因为在所有维度上梯度都接近于零。 我的意思是,随着SGD趋于收敛,特别是SGD相对于鞍点将具有明显的优势...波动和随机采样以及每个时期的成本函数不同,应该足以成为避免陷入困境的充分原因。 对于整批梯度,体形确实有意义,因为误差函数是恒定的,所以可以将其困在鞍点中。 我对其他两个部分有些困惑。

1
RMSProp和亚当vs SGD
我正在使用带有RMSProp,Adam和SGD的网络对EMNIST验证集进行实验。我使用SGD(学习率为0.1)和辍学(辍学概率为0.1)以及L2正则化(1e-05惩罚)达到了87%的准确度。当使用RMSProp和Adam测试相同的精确配置以及0.001的初始学习率时,我实现了85%的准确度和明显不那么平滑的训练曲线。我不知道如何解释这种行为。训练曲线缺乏平滑度并导致较低的准确性和较高的错误率的原因是什么?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.