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

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


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

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

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


首先,需要铺垫一些东西。
1、神经网络隐藏层的每一个节点可以看做前后两个部分:前面一个部分根据输入和权重得到一个结果,称作z;后面一个部分将得到z带入sigmod函数[(参考Logistic Regression) ]
这里写图片描述
2、求偏导里面的链式法则:这里写图片描述
3、规定δlj=JZ(l)jδjl=∂J∂Zj(l)表示第ll层第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求偏导,这个是最简单的,直接就可以得到

z 1 3 W 3 = a ( 2 ) 1

所以结合起来,就可以得到下面这个结果:

最后再回头看一下最开始链式展开的时候,也可以写成这样,
这里写图片描述

由于规定了δlj=JZ(l)jδjl=∂J∂Zj(l)表示第l层第j个节点的误差,所以J

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值