梯度下降法与牛顿法
2016-07-19 15:06
302 查看
梯度下降法,是迭代算法。
在求最值时,常常用到。
BP网络中,最小化 误差cost function,求解对应网络中的weights,即可用梯度下降法来更新weights.
梯度下降法基本思想:
给定一个函数 f ,假设求 f 最大值(最小值)。初始化函数上的一个点,对该点求导,该点往导数的方向(反方向)移动。直到梯度向量的幅值接近0。迭代公式:
其中,
是梯度的方向,
表示梯度方向上搜索步长。步长太大可能造成结果发散不收敛,步长小的话,收敛速度可能会很慢。一般确定步长的方法是由线性搜索算法来确定,即把下一个点的坐标看做是ak+1的函数,然后求满足f(ak+1)的最小值的
即可。
函数凹凸性:
当目标函数f 是凸函数时,梯度下降法能求出全局最优解
当f 不是凸函数时,可以将f 近似转化为凸函数
牛顿法,比梯度下降法在求解中需要迭代的次数更少。
牛顿法是二阶收敛,而梯度下降法是一阶收敛。
待续。。。
在求最值时,常常用到。
BP网络中,最小化 误差cost function,求解对应网络中的weights,即可用梯度下降法来更新weights.
梯度下降法基本思想:
给定一个函数 f ,假设求 f 最大值(最小值)。初始化函数上的一个点,对该点求导,该点往导数的方向(反方向)移动。直到梯度向量的幅值接近0。迭代公式:
其中,
是梯度的方向,
表示梯度方向上搜索步长。步长太大可能造成结果发散不收敛,步长小的话,收敛速度可能会很慢。一般确定步长的方法是由线性搜索算法来确定,即把下一个点的坐标看做是ak+1的函数,然后求满足f(ak+1)的最小值的
即可。
函数凹凸性:
当目标函数f 是凸函数时,梯度下降法能求出全局最优解
当f 不是凸函数时,可以将f 近似转化为凸函数
牛顿法,比梯度下降法在求解中需要迭代的次数更少。
牛顿法是二阶收敛,而梯度下降法是一阶收敛。
待续。。。
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- C#算法函数:获取一个字符串中的最大长度的数字
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- 经典排序算法之冒泡排序(Bubble sort)代码
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法