人工神经网络(Artificial Neural Netwroks)笔记-消除样本顺序的BP算法
人工神经网络(Artificial Neural Netwroks)笔记-基本BP算法
上文中已经提到“基础BP算法“偏爱”较后出现的样本,因此较后出现的样本对网络影响较大”
本文将记录如何消除这个影响
用(X1,Y1),(X2,Y2),....(Xs,Ys)的总效果丢该 W^(1),W^(2),...W^(L)
△W^(K)ij=∑△pW^(k)ij
只是替换了原来的简单修改权重矩阵那部分
具体算法流程如下:
1 for k-1 to L do
1.1初始化 W^(k)
2 初始化精度控制参数ε
3 E=ε+1
4 while E>ε do
4.1 E=0
4.2 对所有的i,j,k : △W^(K)ij=0;
4.3 对S中的每一个样本(Xp,Yp):
4.3.1计算出Xp对应的实际输出Op
4.3.2计算出Ep
4.3.3E=E+Ep
4.3.4对所有i,j根据相应式子计算△pW^(L)ij
4.3.5对所有i,j: △W^(L)ij=△W^(L)ij+△pW^(L)ij
4.3.6 k=L-1
4.3.7 while k!=0 do
4.3.7.1对所有 i,j根据相应式子计算△pW^(k)ij
4.3.7.2对所有i,j :△W^(k)ij=△W^(k)ij+△pW^(k)ij
4.3.7.3k=k-1
4.4对所有i,j,k : W^(k)ij=W^(k)ij=△W^(k)ij
4.5E=E/2
这是一种最速下降法。采用这样的计算方式较好地解决了因样本的顺序引起的精度问题和训练的抖动问题,但是收敛的速度却相对比较慢了。
下面有几个问题是值得讨论的
收敛速度问题,怎样加快收敛的速度呢?
局部极小点问题,如何逃离或者避开局部极小点呢?
网络瘫痪问题,权变大,但是激活函数的导函数取值很小,那么步长将会变得非常小,进而训练的速度将会下降,最后会导致网络停止收敛,如何是好呢?
稳定性问题,如果网络遇到的是一个连续变化的环境,网络将变得无效,怎么解决?
步长问题,如果步长太小,收敛速度慢,如果步长太大,可能会导致网络瘫痪或者不稳定,咋办?
下篇继续 ^_^
上文中已经提到“基础BP算法“偏爱”较后出现的样本,因此较后出现的样本对网络影响较大”
本文将记录如何消除这个影响
用(X1,Y1),(X2,Y2),....(Xs,Ys)的总效果丢该 W^(1),W^(2),...W^(L)
△W^(K)ij=∑△pW^(k)ij
只是替换了原来的简单修改权重矩阵那部分
具体算法流程如下:
1 for k-1 to L do
1.1初始化 W^(k)
2 初始化精度控制参数ε
3 E=ε+1
4 while E>ε do
4.1 E=0
4.2 对所有的i,j,k : △W^(K)ij=0;
4.3 对S中的每一个样本(Xp,Yp):
4.3.1计算出Xp对应的实际输出Op
4.3.2计算出Ep
4.3.3E=E+Ep
4.3.4对所有i,j根据相应式子计算△pW^(L)ij
4.3.5对所有i,j: △W^(L)ij=△W^(L)ij+△pW^(L)ij
4.3.6 k=L-1
4.3.7 while k!=0 do
4.3.7.1对所有 i,j根据相应式子计算△pW^(k)ij
4.3.7.2对所有i,j :△W^(k)ij=△W^(k)ij+△pW^(k)ij
4.3.7.3k=k-1
4.4对所有i,j,k : W^(k)ij=W^(k)ij=△W^(k)ij
4.5E=E/2
这是一种最速下降法。采用这样的计算方式较好地解决了因样本的顺序引起的精度问题和训练的抖动问题,但是收敛的速度却相对比较慢了。
下面有几个问题是值得讨论的
收敛速度问题,怎样加快收敛的速度呢?
局部极小点问题,如何逃离或者避开局部极小点呢?
网络瘫痪问题,权变大,但是激活函数的导函数取值很小,那么步长将会变得非常小,进而训练的速度将会下降,最后会导致网络停止收敛,如何是好呢?
稳定性问题,如果网络遇到的是一个连续变化的环境,网络将变得无效,怎么解决?
步长问题,如果步长太小,收敛速度慢,如果步长太大,可能会导致网络瘫痪或者不稳定,咋办?
下篇继续 ^_^