数据挖掘第5周

BP神经网络

有一组输入数据X=[x_{1},x_{2},\cdots ,x_{n}],输入层到隐含层的权阵记为W_{inToHidden},偏置矩阵为B,隐藏层的数据记为H=[h_1,h_2,\cdots h_n],隐藏层到输出层的权阵为W_{hiddenToOut},输出数据为Y=[y_1,y_2,\cdots ,y_m],目标值(标签)为O=[o_1,o_2,\cdots ,o_m],代价函数为Error=\frac{1}{2}( Y-O)^{2},激活函数为Sigmoid函数y=\frac{1}{1+e^{-x}},其中y^{'}=y(1-y)

则有

H=Sigmoid(W_{inToHidden}\cdot X+B)

Y=Sigmoid(W_{hiddenToOut}\cdot H)

其中W_{inToHidden}W_{hiddenToOut}的初值都是我们任意设置的,所以必然会跟目标值产生误差,BP算法的关键就在于误差的反向传播,在此我们借助梯度下降法。我们知道,梯度方向是函数增长最快的方向,但是我们希望误差能收敛到最小值,所以需要沿着梯度的反方向不断收敛,即

W=W-\alpha \frac{\partial Error}{\partial W},其中\alpha为调整的步长,有经验来设置。而

\frac{\partial Error}{\partial W_{hiddenToOut}}= (Y-O)\frac{\partial Y}{\partial W_{hiddenToOut}}= (Y-O)\cdot Y\cdot (1-Y)\cdot H

更新后的隐藏层到输出层的权阵为

W_{hiddenToOut}=W_{hiddenToOut}-\beta \frac{\partial Error}{\partial W_{hiddenToOut}}

\frac{\partial Error}{\partial W_{inToHidden}}=(Y-O)\frac{\partial Y}{\partial H}\cdot \frac{\partial H}{\partial W_{inToHidden}}

                       =(Y-O)\cdot Y\cdot (1-Y)\cdot W_{hiddenToOut}\cdot H\cdot (1-H)\cdot X

                       =\frac{\partial Error}{\partial W_{hiddenToOut}}W_{hiddenToOut}\cdot (1-H)\cdot X

更新后的输入层到隐藏层的权阵为

W_{inToHidden}=W_{inToHidden}-\alpha \frac{\partial Error}{\partial W_{inToHidden}}

至此我们可以不断地修改权阵,直至误差小于一定值或迭代次数达到阈值。

小结

BP神经网络简单有效,不足之处在于,由于步长设置不当,会使得收敛结果落入局部最小值,此时误差会比较大,同时也需要输入数据的偏导数存在。

其他算法:

Elman神经网络 

Hopfield神经网络

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值