QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1865|回复: 0
打印 上一主题 下一主题

[已经回复] 有关神经网络训练函数与学习函数区别

[复制链接]
字体大小: 正常 放大
2589757ym        

24

主题

13

听众

73

积分

升级  71.58%

  • TA的每日心情
    开心
    2016-9-16 11:54
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    自我介绍
    数学建模爱好者

    群组2016国赛备战群组

    群组2016研赛备战群组

    群组2015年美赛冲刺

    跳转到指定楼层
    1#
    发表于 2016-8-5 17:23 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    有关神经网络训练函数与学习函数区别这个问题也有人问过,不过看了他们的讨论后有些地方还是不太清楚,这次我换个角度阐述一下,希望各路大神来指点,希望我的帖子不要沉,有任何想法都说出来大家一起讨论。

    以BP神经网络为例,在创建BP神经网络时,网络默认训练函数和学习函数如下:
    训练函数: 'trainlm'--Levenberg-Marquardt反向传播算法;
    学习函数: 'learngdm'--动量梯度下降权值和阈值学习函数。

    当然还有其他训练函数,例如:
    'traingd'--标准梯度下降法
    'traingdm'--有动量梯度下降法。

    下面举某个参考书中两个例子:
    创建一个利用标准的梯度下降算法的网络:net=newff(minmax(p),[3,1],{'tansig','purelin'},'traingd');
    创建一个利用有动量的梯度下降算法的网络:net=newff(minmax(p),[3,1],{'tansig','purelin'},'traingdm');

    这里我发现一个问题,很多参考书在利用不同的训练函数创建网络时,都没有考虑改变相应的学习函数,只是设定了训练函数就完了。难道只要设定好训练函数就可以了吗?要是这样子的话可不可以说训练函数和学习函数没有任何关系?

    再有我发现动量梯度算法的训练函数‘traingdm’和学习函数'learngdm'中都包含了dw(权值变化)的计算公式(见图),而且计算公式也一样。不仅如此,其他训练函数里面也有dw的计算公式,唯一不同的是训练函数里面有'wb= wb + dw'这一计算过程,而学习函数里只计算了dw。

    问题就在这里,既然训练函数和学习函数不一样,那为什么训练函数里面也包含了学习函数中计算dw的公式呢?在设定神经网络的时候,设定好训练函数和学习函数,那dw的计算是按照哪个函数来算?就以默认的BP神经网络网络来说,'trainlm'中权值的计算和‘learngdm’中dw计算方法根本就不一样,那这dw的确定是哪个函数说得算呢?

    还有一点,既然训练函数里已经有dw的计算公式了,这里我可不可这么说:训练函数把学习函数该干的活也给干了,他们之间就没有什么联系。
    或者换一个角度说,要是利用训练函数的话,就不用再设定学习函数了,即只要选定好训练函数,就不用管学习函数的事了,train函数会自动智能地把结果给算出来。要是用学习函数的话,就得结合sim函数或者adapt函数自己去编辑训练过程。

    通过以上讨论,我自己得出的结论:训练函数是个孤僻的单身汉,学习函数和sim/adapt函数才是好基友一辈子。。。训练函数和学习函数在应用上压根就没联系,没有互相调用的说法。不知道对不对,纯熟个人YY意见。。。。

    这是我最近研究神经网络遇到的问题,求各路大神指点。

    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-14 09:58 , Processed in 0.423958 second(s), 50 queries .

    回顶部