最近刚开始进入ANN(人工神经网络)的学习,在MATLAB实现中遇到了两个最基础的问题,但是苦于没有找到合适合理的解答,于是通过查找资料,并加上自己的理解,得出以下结论,不知是否正确。

    1.ANN工具箱中的训练函数与学习函数的区别是什么?

    在《神经网络理论与MATLAB R2007实现》一书中有这样的一句话:神经网络的学习也成为训练,指的是通过神经网络所在环境的刺激作用调整神经网络的参数(权值与阈值),是神经网络以一种新的方式对外部环境做出反应的一个过程。

    这也就是说其实训练函数与学习函数是一回事,所以在神经网络工具箱中通用函数一章节中,作者将训练函数train,trainb和学习函数learnp,learnpn,adapt,revert放在一起写了。但是在后面的不同类型网络中又将这两个函数分开来写,如感知器中的创建参数中,只有学习函数而无训练函数,但是可以调用train对感知器神经元进行训练。BP网络中,训练函数与学习函数同时作为参数出现。

    对于实例P,包含n个样本输入。网络的学习也分为两类:第一:网络对样本逐个的顺序输入而不断学习,是基于单个样本误差e的最小值进行。第二是待样本全部输入后,基于E的最小值来完成权值空间的梯度搜索,即批处理过程。我想正是有这两种学习方式的分类,决定了学习函数与训练函数的区别吧?

    2.BP算法(广义δ规则)中误差e与MATLAB中的MSE的区别

    在讨论BP(误差反向传播算法)时候,我们一般选取e=∑(t-o)2/2,t为目标输出,o为实际输出,小2为上标代表平方,前面有个系数1/2;而MSE中e的系数却是L,L为输出层神经元个数。

    虽然在按负梯度最速下降法中,系数为参数对于方向没有影响(在求导过程中系数始终保持不变),但是对于下降的尺度却有不同,我不知道为什么会这样。是理论与MATLAB实现的字面区别么?

   3.这里有个近似弱智的问题:在单样本处理模式中,第N+1次输入后,网络的权值和阈值会刷新第N次的值,那岂不是网络训练的结果等同于输入最后一次向量就可以了?

    其实,人工神经网络原理就是模拟人脑的神经元结构。人脑在学习一系列新事物(样本)的时候,比如先学习了一个式子:1+2=3,再学习了2+3=5的时候,是不是又忘记了1+2=3呢?显然不是。在学习2+3=5后我们同时也启发了1+2=3,2+3=5的系列数学算式原理,组成了一个学习数学加法的思维模式了,这就是人脑学习的结果。对于人工神经网络来说,其实也一样,在一些列样本(无显著奇异)进入网络后,在调整权值的时候并不是完全刷新前一次的结果,而是在逐步的微调,使得网络得到了训练和学习最终达到稳定,具有了某种分析的能力了。


http://penning.blogbus.com/logs/21438576.html