使用梯度下降而不是微积分的问题。我查了以前的问题还有点要澄清

数据挖掘 梯度下降 成本函数
2021-09-15 12:55:19

首先我检查了http://stats.stackexchange.com/questions/23128/solving-for-regression-parameters-in-closed-form-vs-gradient-descenthttp://stackoverflow.com/questions/26804656 /why-do-we-use-gradient-descent-in-linear-regressionhttps://stats.stackexchange.com/questions/212619/why-is-gradient-descent-required但找不到我的答案。

梯度下降是: wi:=wiαδδwij(w) 其中 w 是一个向量。

Bishop 在他的《模式识别和机器学习》一书中说:

“因为误差函数是系数 w 的二次函数,它对系数的导数在 w 的元素中将是线性的,因此误差函数的最小化具有唯一解……”

所以如果我们对 j(w) 关于 wi 并且等于零,最后它会给我们最小的 w. 这实际上是第一个练习。

在梯度下降中,我们也取导数,所以问题不可能是导数。例如无法找到其导数的方程。如果我们可以通过一次迭代(使每个特征的方程为零)找到答案,为什么我们要一遍又一遍地迭代,这就是梯度下降的情况。

2个回答

如果我理解正确,您的问题是为什么我们要迭代地解决梯度下降问题,而不是将导数设置为 0 并求解最小化成本函数的权重?

我们不能这样做(除了非常简单的问题,例如线性回归),因为当您将导数设置为 0 时,没有简单的封闭式解决方案。

让我们看一个简单的例子:假设你有一个没有偏差的 1 层神经网络和一个 sigmoid 激活函数。您的网络输出是y^=σ(WX). 如果您使用 L2 损失,您的成本函数将是L=(σ(WX)y)2. (为简单起见,我们假设我们只使用 1 的批量大小)。

让我们取权重的导数 W 并使用链式法则: dLdW=2(σ(WX)y)ddWσ(WX)=2(σ(WX)y)σ(WX)ddW(WX)=2(σ(WX)y)σ(WX)(1σ(WX))ddW(WX)=2(σ(WX)y)σ(WX)(1σ(WX))X

在这一点上,我们有点卡住了。如果我们将这个导数设为 0,仍然不容易求解W 自从 W 在这个等式中出现 3 次,并且不能轻易地在等式的一侧单独隔离。

由于我们无法直接求解成本最小化权重,因此我们使用梯度下降。我们采用成本函数的导数来告诉我们应该改变每个权重的哪个方向以最大程度地降低成本。更新的实际大小由学习率决定α.

简单地说:你可能无法在求导后解方程。