一动机:一直感觉神经网络很简单,神经元加权,然后前向、反向传播调整权值,然后就OK了,可是反向传播一直感觉理解的不透彻,于是萌生手撸的想法,看它到底怎么实现的。
二原理:理解起来不是很难,因为每次层信号A是通过一个权重矩阵W做了向量空间变换,然后又用了激活函数G,所以产生的错误E是一个反向传播的过程。
先定义一下L层神经元输入为Z(L),输出为A(L), A(L)=g(Z(L)),g为激活函数,
第L-1层产生的错误E(L-1)=E(L)*W(L+1).T*g'(z) Cost Function C(L)=E(L-1)*E(L-1) 以此更新W, W=W+rate*
因为要用SGD,我们要找到梯度