人工神经网络算法的学习率有什么作用
2018-01-17 14:36
543 查看
神经网络的结构(例如2输入3隐节点1输出)建好后,一般就要求神经网络里的权值和阈值。现在一般求解权值和阈值,都是采用梯度下降之类的搜索算法(梯度下降法、牛顿法、列文伯格-马跨特法、狗腿法等等),这些算法会先初始化一个解,在这个解的基础上,确定一个搜索方向和一个移动步长(各种法算确定方向和步长的方法不同,也就使各种算法适用于解决不同的问题),使初始解根据这个方向和步长移动后,能使目标函数的输出(在神经网络中就是预测误差)下降。 然后将它更新为新的解,再继续寻找下一步的移动方向的步长,这样不断的迭代下去,目标函数(神经网络中的预测误差)也不断下降,最终就能找到一个解,使得目标函数(预测误差)比较小。 而在寻解过程中,步长太大,就会搜索得不仔细,可能跨过了优秀的解,而步长太小,又会使寻解过程进行得太慢。因此,步长设置适当非常重要。 学习率对原步长(在梯度下降法中就是梯度的长度)作调整,如果学习率lr = 0.1,那么梯度下降法中每次调整的步长就是0.1*梯度, 而在matlab神经网络工具箱里的lr,代表的是初始学习率。因为matlab工具箱为了在寻解不同阶段更智能的选择合适的步长,使用的是可变学习率,它会根据上一次解的调整对目标函数带来的效果来对学习率作调整,再根据学习率决定步长。 机制如下: if newE2/E2 > maxE_inc %若果误差上升大于阈值 lr = lr * lr_dec; %则降低学习率 else if newE2 < E2 %若果误差减少 lr = lr * lr_inc;%则增加学习率 end详细的可以看《神经网络之家》nnetinfo里的《[重要]写自己的BP神经网络(traingd)》一文,里面是matlab神经网络工具箱梯度下降法的简化代码
转自:https://zhidao.baidu.com/question/586131376953268525.html
相关文章推荐
- [算法] 红黑树比一般的平衡2叉树,到底有什么特殊的优势和作用?
- 人工神经网络中的activation function的作用具体是什么?为什么ReLu要好过于tanh和sigmoid function?
- (知乎)人工神经网络中的activation function的作用具体是什么?ReLu的特点?
- 请问人工神经网络中的activation function的作用具体是什么?为什么ReLu要好过于tanh和sigmoid function?
- java下Class.forName的作用是什么,为什么要使用它.
- zookeeper在Dubbo中扮演了一个什么角色,起到了什么作用
- Java 动态代理作用是什么?
- 迭代器iterator在程序到底起什么作用? ——整理
- 操作系统的作用是什么?目前主流的操作系统有哪些?主要特点是什么?
- 430单片机外围为什么要接8M晶振,它的作用是什么??、初学者多指教
- HTTP Referer 有什么作用?
- 如果你也面试05 C++中虚函数的作用是什么?它应该怎么用呢?
- actionscript 3.0帮助文档主要的作用是什么
- Jdt-compiler是什么?有什么作用
- 矩阵连乘-动态规划-(只是感觉描述的清晰易懂,并不是什么新算法)
- jsp有哪些动作?作用分别是什么?
- Java千百问_07JVM架构(009)_什么是新生代的复制算法
- C++ 中stdafx.h中文意思,并且在C++中起到的作用是什么?
- myeclipse close project 的作用是什么呢?
- java类中serialversionuid 作用 是什么?举个例子说明