我正在尝试理解“Back Propagation”,因为它在使用Gradient Descent优化的神经网络中使用 . 阅读文献似乎做了一些事情 .
-
使用随机权重开始并获取错误值
-
使用这些权重对损失函数执行梯度下降以获得新的权重 .
-
使用这些新权重更新权重,直到损失函数最小化 .
上面的步骤似乎是解决线性模型的精确过程(例如回归)? Andrew Ng关于机器学习Coursera的优秀课程完全符合线性回归的要求 .
所以,我试图理解BackPropagation是否在损失函数上做了除梯度下降之外的任何事情 . 如果不是,为什么它仅在神经网络的情况下被引用,为什么不用于GLM(广义线性模型) . 他们似乎都在做同样的事 - 我可能会失踪什么?
2 回答
主要部门碰巧隐藏在明显的视线中: linearity . 事实上,将问题延伸到一阶导数的连续性,你将把大部分差异封装起来 .
首先,请注意神经网络(NN)的一个基本原理:具有线性权重和线性相关性的NN是GLM . 此外,拥有多个隐藏层相当于一个隐藏层:它仍然是从输入到输出的线性组合 .
“现代”NN具有非线性层:ReLU(将负值更改为0),汇集(多个值的最大值,最小值或平均值),丢失(随机删除某些值)以及其他方法会破坏我们顺利应用的能力模型的梯度下降(GD) . 相反,我们采用了许多原则并向后工作,逐层应用有限的修正,一直回到第1层的权重 .
泡沫,冲洗,重复直至收敛 .
这会为你解决问题吗?
你说对了!
典型的ReLU是
典型的汇集层将输入长度和宽度减少了2倍;在每个2x2平方中,只传递最大值 . Dropout只是简单地删除随机值,使模型从“主要来源”重新训练那些权重 . 这些都是GD的头疼,所以我们必须逐层进行 .
我认为(至少最初)错误的反向传播意味着比你描述的更少:术语"backpropagation of errors"仅仅指的是计算损失函数的导数的方法,而不是例如automatic differentiation,象征性分化,或numerical differentiation . 无论然后使用何种梯度(例如梯度下降,或者可能是Levenberg / Marquardt) .
他们使用不同的模型 . 如果您的神经网络使用线性神经元,它将等同于线性回归 .