深度学习理论——随机梯度下降法(SGD) && 反向传播

大家好,一直在用深度学习,但是感觉理论并不扎实,打算开始补点理论基础,在CSDN上记录下来。

今天介绍随机梯度下降法和反向传播,首先介绍梯度下降法。

1.梯度下降法

梯度下降法是从初始值开始,向函数上当前点对应梯度的反方向的规定步长的距离点进行迭代搜索,最终得到最小值的过程。公式简易推导如下:


更直观的图像表示如图所示:


这是学习率为0.001,迭代两百次的示意图,当学习率设的更大,可能会迭代收敛更快,但也可能会直接越过这个最小值导致发散。

2.随机梯度下降法

梯度下降法虽然有效,但是每次迭代都要对所有样本进行计算,当样本量很大的时候,收敛速度很慢。在此基础上提出的随机梯度下降法每次只考虑一个样本,这使得他每次迭代方向不一定都是模型整体最优化的方向,因此,在深度学习中,仍然需要遍历所有样本,每遍历一遍我们称为一轮(epoch)。在此基础上我们又做了改进,改为每次选取一批样本进行计算,利用这批样本的梯度信息完成一次模型更新。这一批数据我们称为一个batch。这样有效的提高了收敛效率也避免了模型陷入局部最优。

3.反向传播

我之前一直不太了解反向传播的具体步骤,现在来简单说一下,在前向传播至最后一层得到损失函数z以后,用这个损失函数z对本层的w和x求偏导。上一层的w等于上一层的w-学习率*z对本层w的偏导,以此来更新模型,直到更新到最后一层完成一轮。而z对x的偏导是用来向前传递误差的,后面的层再根据这个误差来更新w。具体公式就不贴了,在很多地方可以找到。

好了,我们下期见!

猜你喜欢

转载自blog.csdn.net/miss_yuki/article/details/80618813