神经网络梯度下降中的反向传播与线性回归

Posted

技术标签:

【中文标题】神经网络梯度下降中的反向传播与线性回归【英文标题】:Backpropagation in Gradient Descent for Neural Networks vs. Linear Regression 【发布时间】:2016-10-31 04:07:46 【问题描述】:

我试图理解“反向传播”,因为它用于使用梯度下降优化的神经网络。通读文献似乎可以做一些事情。

    使用随机权重开始并获取错误值 使用这些权重对损失函数执行梯度下降以获得新的权重。 使用这些新权重更新权重,直到损失函数最小化。

上述步骤似乎是解决线性模型(例如回归)的确切过程? Andrew Ng 在 Coursera for Machine Learning 上的优秀课程正是针对线性回归所做的。

所以,我试图了解 BackPropagation 是否在损失函数上做的不仅仅是梯度下降。如果没有,为什么它只在神经网络的情况下被引用,为什么不用于 GLM(广义线性模型) .他们似乎都在做同样的事情——我可能会错过什么?

【问题讨论】:

【参考方案1】:

主要的部分恰好隐藏在显而易见的地方:线性度。事实上,将问题扩展到一阶导数的连续性,您将封装大部分差异。

首先,请注意神经网络 (NN) 的一个基本原理:具有线性权重和线性依赖关系的 NN GLM。此外,拥有多个隐藏层相当于一个隐藏层:它仍然是从输入到输出的线性组合。

“现代”神经网络具有非线性层:ReLU(将负值更改为 0)、池化(最大值、最小值或多个值的平均值)、dropout(随机删除一些值)和其他方法会破坏我们的能力以平滑地将梯度下降 (GD) 应用于模型。相反,我们采用许多原理并向后工作,逐层应用有限的校正,一直回到第 1 层的权重。

起泡、冲洗、重复直至收敛。

这是否为您解决了问题?


你明白了

一个典型的 ReLU 是

f(x) = x if x > 0,
       0 otherwise

典型的池化层将输入长度和宽度减少了 2 倍;在每个 2x2 方格中,只有最大值通过。 Dropout 只是简单地消除随机值,以使模型从“主要来源”重新训练这些权重。每一个都让GD头疼,所以我们要一层一层的做。

【讨论】:

非常感谢!这有助于澄清很多!如果我理解正确,在“复杂”的神经网络中,我们可能有可能无法区分的函数(我想你可以有一个有中断的 ReLU)——所以如果我们构造损失函数从头到尾,因此必须将其分解并逐层应用。 ... 我没有得到的部分是关于线性的。据我了解,GD 可以用于非线性函数.. 那么考虑更多的是计算效率吗? 对。多层梯度在每个非线性处迅速变得困难。事实上,在 CNN 的 dropout 层中,它在迭代之间不是确定性的。当我们得到一个大型 NN 时——例如具有 10^6 参数和 10^7 权重的 CNN——逐层反向传播快得多 太棒了。谢谢!!【参考方案2】:

所以,我试图了解 BackPropagation 是否在损失函数上做的不仅仅是梯度下降。如果没有,为什么它只在神经网络的情况下被引用

我认为(至少最初)错误的反向传播意味着少于您所描述的:术语“错误的反向传播”仅指计算损失函数导数的方法,而不是例如automatic differentiation,符号微分,或numerical differentiation。不管梯度被用于什么(例如梯度下降,或者可能是 Levenberg/Marquardt)。

他们似乎都在做同样的事情——我可能会错过什么?

他们使用不同的模型。如果你的神经网络使用线性神经元,它就相当于线性回归。

【讨论】:

以上是关于神经网络梯度下降中的反向传播与线性回归的主要内容,如果未能解决你的问题,请参考以下文章

反向传播梯度求解推导

神经网络反向传播算法(4,5)

反向传播与梯度下降详解

反向传播与梯度下降详解

神经网络系列之二 -- 反向传播与梯度下降

详解神经网络中反向传播和梯度下降