数学之路-机器学习-机器学习算法-神经网络[11]

Posted 麦好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数学之路-机器学习-机器学习算法-神经网络[11]相关的知识,希望对你有一定的参考价值。

多层感知器的代码,需要一个比较复杂的调试过程,不过也有一些方法来加快这一速度,其中有几个地方要注意:

1、输入层、输出层、中间层的学习率和动量参数不能一样,

2、3个层的权值策略不能一样

   输入层的权值的最好效果是能将相差较大的输入样本,输出成分布不能太接近饱和的输出

关于权值初始化的问题,可以考虑 Nguyen-Widrow algorithm,这也是matlab的权值矩阵初始化策略

   采用tanh函数,要意识到,它的输出极限是[-a,+a]

3、在输出层外加上一个硬限幅层,保证输出为需要的结果

硬限幅层要灵活,不一定是下面这种形式

if v>=0:

       return 1

else:

      return 0

因为我们的输出值只有2个,所以可以暂时先设为这种形式,以后进行改进:


def o_func(myy):
        myresult=[]
        for i in xrange(0,len(myy)):
                mean=np.mean(myy)
                if myy[i]>mean:
                        myresult.append(1.0)
                else:
                        myresult.append(0.0)
        return np.array(myresult)





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

http://blog.csdn.net/u010255642



最后,总结一下,多层感知器网络是门艺术,不能说是一个非常严谨的科学,带有随机性,虽然有梯度下降,动量调整的数学基础

下面是对下面这组输入 数据进行训练,最后对未知样本进行仿真

x = [[4,11],[7,340],[10,95],[3,29],[7,43],[5,128]]
d =[[1,0],[0,1],[1,0],[0,1],[1,0],[0,1]]

结果如下:

.......

......

-------开始第33次训练---------

-------开始第1个样本----------

前向计算中...

反向计算中...

-------开始第2个样本----------

前向计算中...

反向计算中...

-------开始第3个样本----------

前向计算中...

反向计算中...

-------开始第4个样本----------

前向计算中...

反向计算中...

-------开始第5个样本----------

前向计算中...

反向计算中...

-------开始第6个样本----------

前向计算中...

反向计算中...

训练成功,正在进行检验

仿真计算中

仿真计算中

仿真计算中

仿真计算中

仿真计算中

仿真计算中

训练成功,误差为: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]

测试值:9.000000===80.000000 

仿真计算中

[ 1.  0.]

正确目标值:[1,0]

测试值:6.500000===272.000000 

仿真计算中

[ 0.  1.]

正确目标值:[0,1]

>>>



同时因为输入数据五花八门,在训练之前要对数据进行预处理,通过预处理权值矩阵使其数值不能过大或过小,这样能较好得保证,

在随后的训练中通过S型非线性神经元,输出不会太接近极限

如下面输入的 数据分布



通过调整后转换成下面的均匀分布,将更有助于后面的训练




以上是关于数学之路-机器学习-机器学习算法-神经网络[11]的主要内容,如果未能解决你的问题,请参考以下文章

数学之路(机器学习实践指南)-文本挖掘与NLP

机器学习之路--KNN算法

数学之路(机器学习实践指南)-文本挖掘与NLP

数学之路(机器学习实践指南)-文本挖掘与NLP

2021你该知道的11大机器学习算法

数学建模MATLAB应用实战系列(106)-机器学习算法:BP神经网络(附MATLAB代码)