Questions tagged «gradient-descent»

梯度下降是一阶迭代优化算法。要使用梯度下降来找到函数的局部最小值,需要采取与该函数在当前点的梯度(或近似梯度)的负值成比例的步骤。对于随机梯度下降,也有[sgd]标签。

8
为什么牛顿方法没有在机器学习中广泛使用?
这是困扰我一段时间的事情,而且我在网上找不到任何令人满意的答案,所以这里是: 在复习了一组关于凸优化的讲座之后,牛顿的方法似乎比梯度下降算法更优越,可以找到全局最优解,因为牛顿的方法可以为其求解提供保证,它的仿射不变性,并且大多数收敛于步骤少得多。为什么在机器学习问题中二阶优化算法(例如牛顿法)不如随机梯度下降法那么广泛使用?

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) 批量梯度下降和随机梯度下降之间的主要区别是什么? 两者都使用上面的更新规则。但是,一个比另一个更好吗?

6
当有封闭形式的数学解可用时,为什么要使用梯度下降进行线性回归?
我正在在线学习机器学习课程,并了解了有关梯度下降的知识,用于计算假设中的最佳值。 h(x) = B0 + B1X 如果我们可以通过以下公式轻松找到值,为什么需要使用渐变下降?这看起来也很简单。但是GD需要多次迭代才能获得该值。 B1 = Correlation * (Std. Dev. of y/ Std. Dev. of x) B0 = Mean(Y) – B1 * Mean(X) 注意:如https://www.dezyre.com/data-science-in-r-programming-tutorial/linear-regression-tutorial中所述 我确实检查了以下问题,但对我来说不清楚。 为什么需要梯度下降? 为什么优化是通过梯度下降而不是解析方法来解决的? 上面的答案比较了GD与使用导数。

2
求解封闭形式vs梯度下降中的回归参数
在Andrew Ng的机器学习课程中,他介绍了线性回归和逻辑回归,并展示了如何使用梯度下降和牛顿方法拟合模型参数。 我知道梯度下降在机器学习的某些应用(例如,反向传播)中可能很有用,但在更一般的情况下,有任何理由为什么您不会以封闭形式求解参数-即,采用成本函数和通过微积分求解? 如果可用,在封闭形式的解决方案上使用像梯度下降这样的迭代算法通常有什么优势?

3
为什么神经网络研究人员关心时代?
随机梯度下降的时期被定义为对数据的单次通过。对于每个SGD微型批次,将绘制样本,计算梯度并更新参数。在时代设置中,样本被抽取而无需替换。kkk 但这似乎没有必要。为什么不从每个迭代的整个数据集中随机抽取绘制每个SGD minibatch ?在大量的时期中,或多或少经常看到样本的微小偏差似乎并不重要。kkk

7
成本函数评估缓慢时的优化
梯度下降和许多其他方法可用于在成本函数中找到局部最小值。当可以在数字或分析上快速评估成本函数时,它们会非常有效。 我觉得这是一种不寻常的情况。我的成本函数的每次评估都很昂贵。我正在尝试找到一组参数,以将3D表面相对于地面真实表面最小化。每当我更改参数时,都需要针对整个样本队列运行算法以衡量其效果。为了计算梯度,我需要独立更改所有15个参数,这意味着我必须重新生成所有曲面并与样本同类进行比较,每个梯度的次数太多,并且在优化过程中肯定也进行了太多次。 我已经开发出一种方法来解决此问题,并且目前正在对其进行评估,但令我感到惊讶的是,我在文献中并未发现太多有关昂贵的成本函数评估的内容。这使我想知道我是否正在使问题变得更加棘手,并且可能已经有了更好的方法。 所以我的问题基本上是这样的:当评估缓慢时,有人知道优化成本函数的方法吗?或者,我是否首先通过重新运行算法并与样本组进行多次比较来做一些愚蠢的事情?

5
具有指数衰减的Adam优化器
在大多数Tensorflow代码中,我已经看到Adam Optimizer的学习率恒定1e-4(即0.0001)。该代码通常如下所示: ...build the model... # Add the optimizer train_op = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy) # Add the ops to initialize variables. These will include # the optimizer slots added by AdamOptimizer(). init_op = tf.initialize_all_variables() # launch the graph in a session sess = tf.Session() # Actually intialize the variables sess.run(init_op) # now …


4
基于动量的梯度下降与Nesterov的加速梯度下降有什么区别?
因此,基于动量的梯度下降原理如下: v = s e l f。米ø 米é Ñ 吨ü 米* 米- 升- [R * 克v=self.momentum∗m−lr∗gv=self.momentum*m-lr*g 其中是先前的权重更新,g是相对于参数p的当前梯度,l r是学习率,s e l f 。米ø 米é Ñ 吨Ú 中号是一个常数。米mmGggppp升[Rlrlr小号Ë 升˚F。米ø 米é Ñ 吨ù 米self.momentumself.momentum pñ Ë W ^= p + v = p + s e l f。米ø 米é Ñ 吨ü 米* 米- …

1
GradientDescentOptimizer和AdamOptimizer(TensorFlow)之间的区别?
我已经在TensorFlow中编写了一个简单的MLP,它正在对XOR-Gate进行建模。 因此对于: input_data = [[0., 0.], [0., 1.], [1., 0.], [1., 1.]] 它应该产生以下内容: output_data = [[0.], [1.], [1.], [0.]] 该网络具有一个输入层,一个隐藏层和一个输出层,每个层具有2、5和1个神经元。 目前,我有以下交叉熵: cross_entropy = -(n_output * tf.log(output) + (1 - n_output) * tf.log(1 - output)) 我也尝试过这种更简单的选择: cross_entropy = tf.square(n_output - output) 以及其他一些尝试。 但是,无论我的设置是什么,的错误GradientDescentOptimizer减少的速度都比的慢得多AdamOptimizer。 实际上tf.train.AdamOptimizer(0.01),经过400-800个学习步骤(取决于学习率,在哪里0.01获得最好的结果)后产生了非常好的结果,而tf.train.GradientDescentOptimizer无论使用哪种交叉熵计算或学习率,始终需要超过2000个学习步骤。 为什么会这样呢?看来AdamOptimizer永远是更好的选择?!

1
随机梯度下降的亚当方法如何工作?
我熟悉用于训练神经网络的基本梯度下降算法。我已经阅读了有关提出亚当:ADAM:一种随机优化方法的论文。 尽管我确实有一定的见识(至少),但这篇论文对我总体而言似乎太高了。例如,成本函数通常是许多不同函数的总和,因此必须进行大量计算以优化其价值;就我所了解的主题而言,随机梯度下降仅针对这些函数的子集计算优化。对我来说,目前尚不清楚亚当如何做到这一点,以及为什么这会导致整个J (θ )的训练误差减小。Ĵ(θ )Ĵ(θ)J(\theta)Ĵ(θ )Ĵ(θ)J(\theta) 我认为Adam通过考虑以前的渐变来更新其渐变。他们称其为利用动量吗?这种势头到底是什么?根据论文第二页的算法,它是某种移动平均值,例如对“规则”梯度的第一和第二矩的一些估计? 实际上,我会怀疑亚当可以使人使用更大的有效步长来减小梯度,从而减小训练误差并结合随机逼近。因此,所得的更新向量应在空间维度上更多地“跳跃”,而不是像正常的梯度下降算法那样描述某些曲线。 有人可以揭开亚当的神秘面纱吗?特别是它是如何收敛的,特别是亚当方法为何起作用以及其确切好处是什么?

1
神经网络:体重变化动量和体重衰减
动量用于减少连续迭代中权重变化的波动:αα\alpha È(瓦特)瓦特ηΔωi(t+1)=−η∂E∂wi+αΔωi(t),Δωi(t+1)=−η∂E∂wi+αΔωi(t),\Delta\omega_i(t+1) = - \eta\frac{\partial E}{\partial w_i} + \alpha \Delta \omega_i(t), 其中是误差函数, -权重向量,学习率。E(w)E(w)E({\bf w})ww{\bf w}ηη\eta 重量衰减会影响重量变化:λλ\lambda Δωi(t+1)=−η∂E∂wi−ληωiΔωi(t+1)=−η∂E∂wi−ληωi\Delta\omega_i(t+1) =- \eta\frac{\partial E}{\partial w_i} - \lambda\eta\omega_i 问题是,在反向传播过程中将这两种技巧结合在一起是否有意义,并且会产生什么效果? Δωi(t+1)=−η∂E∂wi+αΔωi(t)−ληωiΔωi(t+1)=−η∂E∂wi+αΔωi(t)−ληωi\Delta\omega_i(t+1) = - \eta\frac{\partial E}{\partial w_i} + \alpha \Delta \omega_i(t) - \lambda\eta\omega_i

4
直线激活函数如何解决神经网络中消失的梯度问题?
我发现整流线性单位(ReLU)在许多地方被赞誉为神经网络消失梯度问题的一种解决方案。即,使用max(0,x)作为激活函数。当激活为正时,很明显它比S型激活函数好,因为它的推导始终为1,而不是大x的任意小值。另一方面,当x小于0时,导数恰好为0。在最坏的情况下,当一个单位从未被激活时,该单位的权重也将不再变化,并且该单位将永远无用-这似乎甚至比消失得很小的渐变还要差。学习算法在使用ReLU时如何处理该问题?

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


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.