学习神经网络的15条体会


在科技创新时使用的神经网络的基础上,我再次学习了Matlab下的神经网络编程

主要学习到如下结论:

1。BP网络的激活函数必须是处处可微的。

2。S型激活函数所划分的区域是一个非线性的超平面组成的区域,它是比较柔和、光滑的任意界面,因而它的分类比线性划分精确、合理,这种网络的容错性较好。另一个重要特点是由于激活函数是连续可微的,它可以严格利用梯度法进行推算。 

3。一般情况下BP网络结构均是在隐含层采用S型激活函数,而输出层采用线性激活函数。  

4。 动手编写网络的程序设计之前,需要确定神经网络的结构,其中包括以下内容:网络的层数、每层的神经元数、每层的激活函数。

5。trainbp.m提供了两层和三层的BP训练程序,用户可以根据程序来选取不同的参数。   

6。神经网络具有泛化性能,但是该性能只能对被训练的输入/输出对在最大值范围内的数据有效,即网络具有内插植特性,不具有外插植特性,超出最大训练的输入必将产生大的输出误差。

7。理论上已经证明:具有偏差和至少一个S型隐含层加上一个线性输出层的网络,能够逼近任何有理函数。

8。隐含层层数的经验选择:对于线性问题一般可以采用感知器或自适应网络来解决,而不采用非线性网络,因为单层不能发挥出非线性激活函数的特长;非线性问题,一般采用两层或两层以上的隐含层,但是误差精度的提高实际上也可以通过增加隐含层中的神经元数目获得,其训练效果也比增加层数更容易观察和调整,所以一般情况下,应优先考虑增加隐含层中的神经元数。 

9。隐含层的神经元数的经验确定:通过对不同神经元数进行训练对比,然后适当的增加一点余量。

10。初始权值的经验选取:威得罗等人分析了两层网络是如何对一个函数进行训练后。提出一种选定初值的策略:选择权值的量级为S1的r次方,其中S1为第一层神经元数目。利用他们的方法可以在较少的训练次数下得到满意的训练结果。在Matlab工具箱中可以采用nwlog.m和nwtan.m来初始化隐含层权值W1和B1。其方法仅需要使用在第一层隐含层的初始值的选取上,后面层的初始值仍然采用(-1,1)之间的随机数。

11。学习速率的经验选择:一般情况下倾向于选取较小的学习速率以保证系统的稳定性,学习速率的选取范围在0.01~0.8之间。 

12。期望误差的选取:一般情况下,作为对比,可以同时对两个不同的期望误差值的网络进行训练,最后通过综合因素的考虑来确定其中一个网络。

13。采用附加动量法使反向传播减少了网络在误差表面陷入低谷的可能性有助于减少训练时间。Matlab工具箱中提供的trainbpm.m可以训练一层直至三层的带有附加动量因子的反向传播网络。

14。太大的学习速率导致学习的不稳定,太小值又导致极长的训练时间。自适应学习速率通过保证稳定训练的前提下,达到了合理的高速率,可以减少训练时间。Matlab工具箱中带有自适应学习速率进行反向传播训练的函数为trainbpa.m,它可以训练至三层网络。

15。可以将动量法和自适应学习速率结合起来利用两方面的优点,这个技术已经编入函数trainbpx.m中。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值