数学之路(3)-机器学习(3)-机器学习算法-神经网络[12]

 

本博客所有内容是原创,未经书面许可,严禁任何形式的转载

http://blog.csdn.net/u010255642


 

我们使用最原始的纯随机生成方法产生多层感知器网络 的权值矩阵,这个权值矩阵要保证输入项在网络中均匀分布,要保证权值矩阵本身的均匀分布

我们修改前面的程序,不使用偏置,目标是使之更稳定,收敛效果更好,修改的基本策略是为:

1、输出层的学习率较低,动量参数较高

2、输入层的学习率较低,运量参数较低

3、随机生成若干个权值矩阵,选择最优化的权值矩阵

选择的策略是:

1、输入项的方差尽可能靠近1

2、权值矩阵的均值尽可能小,其方差尽可能与神经元的突触连接数成反比

按这个策略来生成权值矩阵,一个好的权值矩阵能使网络快速收敛,使网络更稳定。

修改运行后

产生权值初始矩阵 . . . . . . . . . . . . . . . . . . .
权值矩阵平均:0.000456
权值矩阵方差:0.182555
-------开始第1次训练---------
# # # # # # -------开始第2次训练---------
# # # # # # -------开始第3次训练---------
# # # # # # -------开始第4次训练---------
# # # # # # -------开始第5次训练---------
# # # # # # -------开始第6次训练---------
# # # # # # -------开始第7次训练---------
# # # # # # -------开始第8次训练---------
# # # # # # -------开始第9次训练---------
# # # # # # -------开始第10次训练---------
# # # # # # -------开始第11次训练---------
# # # # # # -------开始第12次训练---------
# # # # # # -------开始第13次训练---------
# # # # # # -------开始第14次训练---------
# # # # # # -------开始第15次训练---------
# # # # # # -------开始第16次训练---------
# # # # # # -------开始第17次训练---------
# # # # # # -------开始第18次训练---------
# # # # # # -------开始第19次训练---------
# # # # # # -------开始第20次训练---------
# # # # # # -------开始第21次训练---------
# # # # # # -------开始第22次训练---------
# # # # # # -------开始第23次训练---------
# # # # # # -------开始第24次训练---------
# # # # # # -------开始第25次训练---------
# # # # # # -------开始第26次训练---------
# # # # # # -------开始第27次训练---------
# # # # # # -------开始第28次训练---------
# # # # # # -------开始第29次训练---------
# # # # # # -------开始第30次训练---------
# # # # # # -------开始第31次训练---------
# # # # # # -------开始第32次训练---------
# # # # # # -------开始第33次训练---------
# # # # # # -------开始第34次训练---------
# # # # # # -------开始第35次训练---------
# # # # # # -------开始第36次训练---------
# # # # # # -------开始第37次训练---------
# # # # # # -------开始第38次训练---------
# # # # # # -------开始第39次训练---------
# # # # # # -------开始第40次训练---------
# # # # # # -------开始第41次训练---------
# # # # # # -------开始第42次训练---------
# # # # # # -------开始第43次训练---------
# # # # # # 训练成功,正在进行检验
仿真计算中
仿真计算中
仿真计算中
仿真计算中
仿真计算中
仿真计算中
训练成功,误差为:0.000000
样本:4===11 => 
仿真计算中
[ 1.  0.]
=====正确目标值=====
[1, 0]
样本:7===340 => 
仿真计算中
[ 0.  1.]
=====正确目标值=====
[0, 1]
样本:10===95 => 
仿真计算中
[ 1.  0.]
=====正确目标值=====
[1, 0]
样本:3===29 => 
仿真计算中
[ 0.  1.]
=====正确目标值=====
[0, 1]
样本:7===43 => 
仿真计算中
[ 1.  0.]
=====正确目标值=====
[1, 0]
样本:5===128 => 
仿真计算中
[ 0.  1.]
=====正确目标值=====
[0, 1]
测试值:8.000000===70.000000 
仿真计算中
[ 1.  0.]
正确目标值:[1,0]
测试值:6.500000===272.000000 
仿真计算中
[ 0.  1.]
正确目标值:[0,1]
按回车键退出

随机生成法是一种比较笨的方法,关于权值矩阵的生成方法可以选择:

 

(1)随机初始化。

(2)逐步搜索法。

(3)根据Nguyen-Widrow初始化算法为层产生初始权重和偏置值,使得每层神经元的活动区域能大致平坦的分布在输入空间。

Nguyen-Widrow初始化算法是比较好的初始化权值的经典方法,关于多层感知器网络有很多现成的较好的库,大部分神经网络库包括 matlab神经网络工具箱都使用了Nguyen-Widrow初始化算法做为默认方法。具体内容我们下节介绍

 

你可能感兴趣的:(机器学习)