网络中神经元的理解
神经网络是由大量的神经元相互连接构成。每一层的神经元之间通过权值连接。前一层的神经元经过加权计算和激活函数得到下一层神经元的值。
反向传播的思想
反向传播的思想:从输入神经元开始,利用上述神经元的计算方式计算出网络的输出,计算完了过输出和标签之间的偏差(损失),计算损失函数相对于每一个神经元的梯度,在梯度反向传播的过程中更新权值,不断迭代,直至收敛。
前向传播和反向传播的过程
前向传播:加权求和并通过激活函数计算。以sigmod激活函数为例
sigmod(wx+b)
反向传播过程:
- 利用前向传播输出的结果与标签计算误差的偏导数。
- 利用上一步计算的误差偏导数继续向前传播得到前一层的误差偏导数,直至计算到输入层。
- 从输入层开始计算权重的调整量,即输入层的权值×误差调整偏导数×学习率
- 再利用第三不得到的调整量来调整每一层的权值
具体的计算过程
https://blog.csdn.net/dare_kz/article/details/77603522
神经网络结构如图所示
计算隐藏层和输出层的神经元
损失值loss=out-set
前向传播过程完成。
计算每一层的误差梯度,激活函数为sigmod
sigmod函数的导数为sigmod×(1-sigmod)
首先计算输出层到隐藏层的误差梯度值
-loss×out×(1-out)=a0=a0’
这个值用于计算输出层到隐藏层的权值调整参数。
计算隐藏层的误差梯度值
a0×W5=a1
a0×W6=a2
a1’=a1×x1(1-x1)
a2’=a2×x2(1-x2)
a1’和a2’用于计算隐藏层到输入层的权值调整参数
开始调整权重:
计算从输入层到隐藏层的参数调整量,学习率为α
Δ1=in1×a1’×α
Δ2=in1×a2’×α
Δ3=in2×a1’×α
Δ4=in1×a2’×α
输入层到隐藏层调整后的权值为:
w1’=w1+Δ1
w2’=w2+Δ2
w3’=w3+Δ3
w4’=w4+Δ4
计算从隐藏层到输出层的参数调整量,学习率为α
x1×a0’×α=Δ5
x2×a0’×α=Δ6
隐藏层到输出层调整后的权值为:
w5’=w5+Δ5
w6’=w6+Δ6
至此一次梯度反向传播的权值更新过程完成
感谢:
https://blog.csdn.net/dare_kz/article/details/77603522
https://blog.csdn.net/qingqingpiaoguo/article/details/53053768