机器学习(四)——神经网络反向传播细节


上一篇讲了个神经网络结构,它具体怎么用,怎么算就算这一篇。

神经网络的用法就算下面这几步:

1、正向传播,计算h(X),就是根据随机给的权重计算出一个结果;
2、反向传播,修正权重,也就是θ矩阵,使得代价函数最小;
3、预测数据,前面两步都是训练,这一步就是使用训练好的网络进行结果的预测。


首先,需要铺垫一些东西。
1、神经网络隐藏层的每一个节点可以看做前后两个部分:前面一个部分根据输入和权重得到一个结果,称作z;后面一个部分将得到z带入sigmod函数[(参考Logistic Regression) ]
机器学习(四)——神经网络反向传播细节
2、求偏导里面的链式法则:机器学习(四)——神经网络反向传播细节
3、规定δjl=JZj(l)表示第l层第j个节点的误差。(在这儿也不有点懵,看完后面的例子就get了应该)



一、正向传播

正向传播其实上一篇就说过了,按照上面那张神经网络的图,假设是一个多分类问题,输出是一个向量,输入含有两个特征。

1、首先把训练数据X输入,随机生成权重W矩阵。
2、计算隐藏层的输出,先根据权重得到z,简单书写就是Z(2)=W(1)X,然后使用sigmod函数,得到隐藏层第二层的输出,a=g(z(2))。
3、计算输出层的输出,在输出层,计算过程和隐藏层类似,首先是Z(3)=W(2)a(2),然后得到最终输出,h(X)=g(Z(3))。

到这里,正向传播的过程就结束了,得到了想要的东西,就是根据权重和输入算到的h(X)。



二、反向传播

这一步的目的是根据得到的h(X)和训练集里的y比较,修正权重矩阵,根据前面几篇的想法,就是得到代价函数,然后求出代价函数相对于每一个权重的偏导,设置一个步长,疯狂迭代就行了。

所以问题就集中在怎么求偏导。


1、先考虑怎么求总代价吧。

机器学习(四)——神经网络反向传播细节
就是逻辑回归里面那个式子。

所以在这个例子里,可以看出来总代价J就是下面这样:
机器学习(四)——神经网络反向传播细节


2、隐藏层—>输出层 权值更新

其实就是求J对W3的偏导,根据链式法则就可以转化为这样:
机器学习(四)——神经网络反向传播细节
由于输出有两个,所以稍微复杂了一点点,不过也差不多。
接下来就是挨个求偏导就好了。

可以看到其实a(3)就是h(X),所以J对a(3)的偏导可以看做是
机器学习(四)——神经网络反向传播细节

接下来就是a(3)1对z(3)1的偏导了,就是sigmod函数的导数嘛,下面给出的是sigmod函数的求导。
机器学习(四)——神经网络反向传播细节

J和a(3)之间第二个单元的求偏导和第一个单元类似,就不说了,剩下最后一个就是z(3)1对W3求偏导,这个是最简单的,直接就可以得到

z13W3=a(2)1

所以结合起来,就可以得到下面这个结果:
机器学习(四)——神经网络反向传播细节

最后再回头看一下最开始链式展开的时候,也可以写成这样,
机器学习(四)——神经网络反向传播细节

由于规定了δjl=JZj(l)表示第l层第j个节点的误差,所以JW3也可以表示成(δ1(3)+δ2(3))a1(2)

好了,总结一下这一小节,从隐藏层到输出层的权值更新中,偏导数有两种表示方式:

JW3=i=12(ai(3)(1y)+(1ai(3))y)a1(2)

JW3=(δ1(3)+δ2(3))a1(2)


3、输入层—>隐藏层 权值更新

这一部分就针对w1举例就好了。
其实根据刚才的经验,很快就可以写出其中一种表示方法:

JW1=δz1(2)x1(1)

另一种表示方法其实也就是把δz1(2)求出来而已。
下面来求就行了。
δz1(2)=Jz1(2)=(Jz1(3)z1(3)a1(2)+Jz2(3)z2(3)a1(2))a1(2)z1(2)

=(δz1(3)W3+δz2(3)W4)a1(2)(1a1(2))




从这里已经看出了一些猫腻,那就是前面层数的δ可以由后面层数的δ得到,转换成矩阵形式就可以得到这个结论:前面层数的节点误差等于后一层的节点误差经过权重后乘以g前导

δ(l)=(θ(l))Tδ(l+1).g(z(l))

最后这个矩阵形式看着不爽的话,就对照上面一排的δ转换结果多瞧瞧,还是有一丢丢感觉的。


目前为止,δ知道了,偏导就更简单了,另一个结论就是:
代价函数对每个权重的偏导数等于上一层的输出乘以下一层的误差。

Jθij(l)=ai(l)δj(l+1)



三、数据预测

到了这里就没啥好说的了,用梯度下降算法或者什么厉害的算法更正好权重矩阵后,把要预测的x放进去,得到y就行了。


好了,大功告成,其实无非就是链式法则的运用而已。

相关文章:

  • 2022-01-09
  • 2021-12-22
  • 2021-09-09
  • 2021-05-10
  • 2021-04-02
  • 2021-11-25
  • 2021-11-22
猜你喜欢
  • 2021-04-05
  • 2021-07-22
  • 2021-06-30
  • 2021-09-15
  • 2021-09-12
  • 2021-09-03
  • 2021-03-31
相关资源
相似解决方案