机器学习之学习率 Learning Rate

本文从梯度学习算法的角度中看学习率对于学习算法性能的影响,以及介绍如何调整学习率的一般经验和技巧。

在机器学习中,监督式学习(Supervised Learning)通过定义一个模型,并根据训练集上的数据估计最优参数。梯度下降法(Gradient Descent)是一个广泛被用来最小化模型误差的参数优化算法。梯度下降法通过多次迭代,并在每一步中最小化成本函数(cost function)来估计模型的参数(weights)。

梯度下降的伪代码如下:

重复已下过程,直到收敛为止{

    ωj = ωj - λ ∂F(ωj) / ∂ωj

  }

说明:(1) ωj 是模型参数, F()是成本函数, ∂F(ωj) / ∂ωj 是ωj 的一阶导数,λ 是学习率

   (2)如果F()是单调函数,经过多次迭代会得到最小的成本函数;如果F()非单调,那么我们有可能陷入局部最优,一个简单的解决办法是通过多次尝试不同的ωj 初始值,对比不同估计参数下的成本函数的值是否一致,来发现是否陷入局部最优。

   (3)梯度下降法未必是最优的计算权重参数的方法,但是作为一种简单快速的方法,常常被使用。参照Andrew Ng的Stanford公开课程。

梯度下降过程的图示如下:

学习率的调整

为了能够使得梯度下降法有较好的性能,我们需要把学习率的值设定在合适的范围内。学习率决定了参数移动到最优值的速度快慢。如果学习率过大,很可能会越过最优值;反而如果学习率过小,优化的效率可能过低,长时间算法无法收敛。所以学习率对于算法性能的表现至关重要。

对于不同大小的数据集,调节不同的学习率

根据我们选择的成本函数F()不同,问题会有区别。当平方误差和(Sum of Squared Errors)作为成本函数时, ∂F(ωj) / ∂ωj 会随着训练集数据的增多变得越来越大,因此学习率需要被设定在相应更小的值上。

解决此类问题的一个方法是将学习率λ 乘上1/N,N是训练集中数据量。这样每部更新的公式变成下面的形式:

ωj = ωj - (λ/N) * ∂F(ωj) / ∂ωj

相关内容可参考: Wilson et al. paper “The general inefficiency of batch training for gradient descent learning”

另外一种解决方法是:选择一个不被训练集样本个数影响的成本函数,如均值平方差(Mean Squared Errors)。

在每次迭代中调节不同的学习率

在每次迭代中去调整学习率的值是另一种很好的学习率自适应方法。此类方法的基本思路是当你离最优值越远,你需要朝最优值移动的就越多,即学习率就应该越大;反之亦反。

但是这里有一个问题,就是我们并不知道实际上的最优值在哪里,我们也不知道每一步迭代中我们离最优值有多远。

解决办法是,我们在每次迭代的最后,使用估计的模型参数检查误差函数(error function)的值。如果相对于上一次迭代,错误率减少了,就可以增大学习率,以5%的幅度;如果相对于上一次迭代,错误率增大了(意味着跳过了最优值),那么应该重新设置上一轮迭代ωj 的值,并且减少学习率到之前的50%。这种方法叫做 Bold Driver.

建议:归一化输入向量

归一化输入向量在机器学习问题中是一个通用的方法。在一些应用中,由于使用距离或者特征方差,要求必须归一化输入向量,因为如果不归一化将导致结果会严重被具有大方差的特征和不同的尺度影响。归一化输入能够帮助数值最优方法(例如,梯度下降法)更快,更准确地收敛。

尽管有一些不同的归一化变量的方法,[0,1]归一化(也叫做min-max)和z-score归一化是两种最为广泛应用的。

XminmaxNorm = (X - min(X)) / (max(X) - min(X));

XzscoreNorm = (X - mean(X)) / std(X);

说明:本文为http://blog.datumbox.com/tuning-the-learning-rate-in-gradient-descent/ 的译文版,原文作者 Vasilis Vryniotis.

希望有助于大家理解与使用!

原文发布于微信公众号 - Spark学习技巧(bigdatatip)

原文发表时间:2018-05-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏计算机视觉战队

深度判别和共享特征学习的图像分类

秋雨思童年,落花念爱霖!一场秋雨的洗礼,让我们进入了真正能感觉得到的秋季。秋季是丰收的季节,不知朋友您收获如何?但是我相信您一定硕果累累,满载着各种成果、业绩和...

35970
来自专栏开心的学习之路

神经网络体系搭建(一)——神经网络

本篇是神经网络体系搭建的第一篇,解决体系搭建的前四个问题,详见神经网络体系搭建(序) 神经网络 ? 最简单的神经网络 神经网络的定义就不再赘述,直接从最简单的神...

347100
来自专栏达观数据

达观数据深度学习资料之卷积神经网络(下篇)

达观数据深度学习资料之卷积神经网络(下篇) 4.2什么是池化? 在通过卷积获得特征后进行分类,依然面临计算量大的挑战。及时一张96×96像素的图片,经过400...

379100
来自专栏机器之心

深度学习目标检测模型全面综述:Faster R-CNN、R-FCN和SSD

选自medium 机器之心编译 机器之心编辑部 Faster R-CNN、R-FCN 和 SSD 是三种目前最优且应用最广泛的目标检测模型,其他流行的模型通常与...

46970
来自专栏机器学习算法工程师

机器学习中的超参数的选择与交叉验证

1. 超参数有哪些   与超参数对应的是参数。参数是可以在模型中通过BP(反向传播)进行更新学习的参数,例如各种权值矩阵,偏移量等等。超参数是需要进行程序员自己...

38690
来自专栏人工智能头条

用反卷积(Deconvnet)可视化和理解卷积网络

33730
来自专栏企鹅号快讯

机器学习——神经网络代价函数、反向传播、梯度检验、随机初始化

机器学习(十二) ——神经网络代价函数、反向传播、梯度检验、随机初始化 (原创内容,转载请注明来源,谢谢) 一、代价函数 同其他算法一样,为了获得最优化的神经网...

32870
来自专栏人工智能头条

李理:详解卷积神经网络

24570
来自专栏量子位

CNN超参数优化和可视化技巧详解

王小新 编译自 Towards Data Science 量子位 出品 | 公众号 QbitAI 在深度学习中,有许多不同的深度网络结构,包括卷积神经网络(CN...

54640
来自专栏机器学习与自然语言处理

Stanford机器学习笔记-6. 学习模型的评估和选择

6. 学习模型的评估与选择 Content   6. 学习模型的评估与选择     6.1 如何调试学习算法     6.2 评估假设函数(Evalua...

38790

扫码关注云+社区

领取腾讯云代金券