神经网络中的前向传播与后向传播

f(z)为激励函数,关于激励函数(又称激活函数)的总结
隐藏层1输入
z(1)=W(1)xT+b(1)(1)
隐藏层1输出
n(1)=f(1)(z(1))(2)
隐藏层2输入
z(2)=W(2)n(1)+b(2)(3)
隐藏层2输出
n(2)=f(2)(z(2))(4)
隐藏层3输入
z(3)=W(3)n(2)+b(3)(5)
隐藏层3输出即输出层
y=n(3)=f(3)(z(3))(6)
损失函数
L(y,y)(7)
即隐藏层k+1输入
z(k+1)=W(k+1)n(k)+b(k+1)(8)
隐藏层k+1输出
n(k+1)=f(k+1)(z(k+1))(9)
对损失函数进行总结https://blog.csdn.net/lien0906/article/details/78429768
计算偏导数
∂b(k)∂z(k)=diag(1,1,…,1)(10)
列向量对列向量求导参见矩阵中的求导
计算偏导数\frac {\partial L(y,\widehat y)}{\partial z^{(k)}}\
偏导数\frac {\partial L(y,\widehat y)}{\partial z^{(k)}}\
又称误差项(error term,也称"灵敏度"),一般用δ
表示,用δ(k)
表示第k层神经元的误差项,其值的大小代表了第k层神经元对最终总误差的影响大小
δ(k)=∂z(k)∂L(y,y)=∂z(k)∂n(k)∗∂n(k)∂z(k+1)∗∂z(k+1)∂L(y,y)=f(k)′(z(k))∗(W(k+1))T∗δ(k+1)(11)
最终需要用的两个导数
∂W(k)∂L(y,y)=∂z(k)∂L(y,y)∗∂W(k)∂z(k)=δ(k)∗(n(k−1))T(12)
∂b(k)∂L(y,y)=∂z(k)∂L(y,y)∗∂b(k)∂z(k)=δ(k)(13)
后向传播参数更新
W(k)=W(k)−α(δ(k)(n(k−1))T+W(k))(14)
b(k)=b(k)−αδ(k)(15)
其中α 是学习率
后向传播中的正则化,L1正则化,L2正则化