https://blog.youkuaiyun.com/tsyccnh/article/details/76064087
上面链接中的一系列文章都有助于理解sgd。
我自己的理解是:
1、首先根据loss函数对各个需要优化的参数(也就是权重,下同)求偏导,也就是求梯度表达式,最终得到各个参数的梯度表达式;
2、开始对模型进行训练时,首先应初始化参数,将初始化之后的参数以及第一个训练样本代入各参数各自的梯度表达式中,求出各个参数的变化值;
3、用原参数减去学习步长乘以变化值,得到新的参数;
4、将新的参数放入模型中,得到预测输出,并和预期输出作比较,根据loss函数求得与预期输出之间的差距,若未达到要求,则进行下一轮训练,继续将各参数和训练样本代入梯度表达式中,求出参数的变化值,更新参数。
BP算法常和SGD一起使用,bp主要思想是在多层神经网络中,根据最终输出的误差来一层层的修正前面的权重矩阵,这个修正过程就是利用了sgd中的梯度下降思想。总结就是,bp算法就是通过误差反过来修正权值矩阵,而修正过程就是用的梯度下降法,这个修正过程用到的算法也就是优化算法。