梯度是什么?
梯度:是一个向量,指的是学习(参数更新)的方向
计算图和反向传播
计算图:通过图的方式来描述函数的图形
J(a,b,c)=3(a+bc)J(a,b,c)=3(a+bc)J(a,b,c)=3(a+bc),令u=a+v,v=bcu=a+v,v=bcu=a+v,v=bc,把它绘制成计算图可以表示为:
之后对每个节点求偏导有:
神经网络的反向传播
神经网络的示意图
w1,w2,......wnw1,w2,......wnw1,w2,......wn表示第n层权重
wn[i,j]wn[i,j]wn[i,j]表示第n层第i个神经元,链接到第n+1层第j个神经元的权重。
神经网络的计算图
公式分为两部分:
- 括号外:左边红线部分
- 括号内:
1. 加号左边:右边红线部分
2. 加号右边:蓝线部分
这样做,当模型很大的时候,计算量非常大
所以反向传播的思想就是对其中的某一个采纳数单独求梯度,之后更新,如下图所示:
计算过程如下:
更新参数之后,继续进行反向传播
计算过程如下:
继续反向传播
计算过程如下: