您的位置:首页 > 其它

最优化 梯度下降

2017-03-13 14:47 239 查看

梯度下降算法

梯度方向: 指定点处, 函数值变化幅度最大的方向.

梯度下降算法, Gradient Descent, 也称为 最速下降算法, Steepest Descent. 是求解无约束最优化问题的经典方法.

它属于迭代优化方法. 迭代公式是:

x(k+1)=x(k)+(−1)λk∇f(x(k))

即从x(k)点出发, 沿该点处的负梯度方向−∇f(x(k)), 以步长λk 找到下一个迭代点.



局部最优与全局最优

梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。可以取不同的初始迭代点, 分别求解, 增加找到全局最优的几率.

当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。

参数

步长的选择

步长过大, 容易震荡; 而步长过小, 收敛速度又会很慢.

随机梯度下降

SGD, Stochastic Gradient Descent.

一般来讲, 目标函数是每个样本损失函数的加和. 即

L(w)=∑i=1nLi(w)

当样本很多, 参数很多, 又没有简单的公式时, 计算的代价会很昂贵.

所以随机梯度下降的思想是: 在计算每轮迭代时, 从总样本中随机选一个子集来计算. 大大减轻运算量. It’s effective in large-scale machine learning problems.

虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的, 最终的结果往往是在全局最优解附近.

应用

用处很广, 支持向量机,逻辑回归和图形模型. 当与反向传播算法相结合时,它是用于训练人造神经网络的实际标准算法.

momentum

momentum, [mə’mentəm], [物] 动量. P=mv.

在sgd的过程中,每次下降步长仅通过α(alpha)来控制,容易陷入更新太慢的状态:

平坦地区,下降好多步,也走不到头;

陡峭的区域,下降过头,导致,左一步,右一步,收敛也慢

看一下小球滚落的物理现象:

如果是个笔直的斜坡, 由于加速度方向一致, 小球的动量会快速变大; 若轨道比较蜿蜒, 小球甚至还会减速.

于是参照小球滚落的物理现象, 引入了 mementum 参数.

思想是,若当前梯度方向与上一次相同,那么,此次的步长增强,否则,应该相应减弱.



Nesterov momentum

Nesterov Accelerated Gradient(NAG)算法相对于Momentum的改进在于,以“向前看”看到的梯度 而不是 当前位置梯度去更新。经过变换之后的等效形式中,NAG算法相对于Momentum多了一个本次梯度相对上次梯度的变化量,这个变化量本质上是对目标函数二阶导的近似。由于利用了二阶导的信息,NAG算法才会比Momentum具有更快的收敛速度。

参数

下面的参数来自于kerkas中的
keras.optimizers.SGD
.

lr: float >= 0. Learning rate.

momentum: float >= 0. Parameter updates momentum.

decay: float >= 0. Learning rate decay over each update.

nesterov: boolean. Whether to apply Nesterov momentum.

例题

用最速下降法求解

minf(x)=2x21+x22

引自: <<最优化理论与算法>> P.283

假设我们想用直线 y=w1+w2x 去拟合一系列二维的点, n为样本个数, 损失函数为平方差, 那么请列出参数的更新方程.

答: 总的损失函数就是



参数更新递推公式为:



参考

梯度下降(Gradient Descent)小结
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐