学习率:从梯度学习算法中看学习率的影响——如何调整学习率

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

梯度下降的伪代码如下:



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

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

  }

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

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

   (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 inef?ciency 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.

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

时间: 2024-10-05 00:39:05

学习率:从梯度学习算法中看学习率的影响——如何调整学习率的相关文章

梯度优化算法总结(转载)以及solver中相关参数解释

原文地址:http://sebastianruder.com/optimizing-gradient-descent/ 如果熟悉英文的话,强烈推荐阅读原文,毕竟翻译过程中因为个人理解有限,可能会有谬误,还望读者能不吝指出.另外,由于原文太长,分了两部分翻译,本篇主要是梯度下降优化算法的总结,下篇将会是随机梯度的并行和分布式,以及优化策略的总结. 梯度下降是优化中最流行的算法之一,也是目前用于优化神经网络最常用到的方法.同时,每个优秀的深度学习库都包含了优化梯度下降的多种算法的实现(比如, las

基于R语言的梯度推进算法介绍

通常来说,我们可以从两个方面来提高一个预测模型的准确性:完善特征工程(feature engineering)或是直接使用Boosting算法.通过大量数据科学竞赛的试炼,我们可以发现人们更钟爱于Boosting算法,这是因为和其他方法相比,它在产生类似的结果时往往更加节约时间. Boosting算法有很多种,比如梯度推进(Gradient Boosting).XGBoost.AdaBoost.Gentle Boost等等.每一种算法都有自己不同的理论基础,通过对它们进行运用,算法之间细微的差别

机器学习(二):感知机学习算法

感知机是一种线性分类模型,属于判别模型 f(x)  = sign(wx+b) ;  f(x)∈{+1,-1}; 其中M为错分类点的集合M. 感知机学习算法是误分类驱动的,采用随机梯度下降法进行参数更新. w<-----w + γyixi b<-----b + γyi γ为学习率,反复迭代直到所有样本均分类正确. 总结: 输入:训练数据集T={(x1,y1),(x2,y2).....(xn,yn)},学习率γ∈[0,1] 输出:w,b 感知模型f(x) = sign(wx+b) (1)选取初值

各大公司广泛使用的在线学习算法FTRL详解

各大公司广泛使用的在线学习算法FTRL详解 现在做在线学习和CTR常常会用到逻辑回归( Logistic Regression),而传统的批量(batch)算法无法有效地处理超大规模的数据集和在线数据流,google先后三年时间(2010年-2013年)从理论研究到实际工程化实现的FTRL(Follow-the-regularized-Leader)算法,在处理诸如逻辑回归之类的带非光滑正则化项(例如1范数,做模型复杂度控制和稀疏化)的凸优化问题上性能非常出色,据闻国内各大互联网公司都第一时间应

【神经网络和深度学习】笔记 - 第三章 如何提高神经网络学习算法的效果

文章导读: 1.交叉熵损失函数 1.1 交叉熵损失函数介绍 1.2 在MNIST数字分类上使用交叉熵损失函数 1.3 交叉熵的意义以及来历 1.4 Softmax 2. 过拟合和正则化 2.1 过拟合 2.2 正则化 2.3 为什么正则化可以减轻过拟合问题 2.4 正则化的其它方法 3. 参数初始化 4. 其它方法 4.1 随机梯度下降算法的改进 4.2 其它神经元模型 我们前面已经学习了反向传播算法,它是我们学习神经网络的基础.这一章将会介绍一系列的方法技巧来改善反向传播算法的效果,进而改善学

深度学习算法实践7---前向神经网络算法原理

总体上来讲,神经网络的算法是比较复杂的,后面有非常精妙的数学原理,而且对这些数学方法,还需要证明其具有收敛性,所以很多神经网络的书籍,绝大部分都是一些数学模型介绍.推导和证明,对于非数学专业的我们来说,感沉像看天书一样.其实神经网络的精髓是将现实中的问题进行抽象,建立适合神经网络表示的模型,然后应用神经网络进行处理,不断调整优化网络结构和参数,直到最终达到满意的效果.所以成功应用神经网络,不需要太过高深的数学基础.但是如果可以适当掌握神经网络背后的数学原理,对于我们理解参数的含义,选择合适的网络

感知机学习算法 python实现

参考李航<统计学习方法> 一开始的感知机章节,看着不太复杂就实现一下... 1 """ 2 感知机学习算法的原始形式 3 例2.1 4 """ 5 import numpy as np 6 7 class Perceptron: 8 def __init__(self,w,b,alpha): 9 self.w = w 10 self.b = b 11 self.alpha = alpha 12 13 def loss(self,x,y

RBF神经网络学习算法及与多层感知器的比较

对于RBF神经网络的原理已经在我的博文<机器学习之径向基神经网络(RBF NN)>中介绍过,这里不再重复.今天要介绍的是常用的RBF神经网络学习算法及RBF神经网络与多层感知器网络的对比. 一.RBF神经网络学习算法 广义的RBF神经网络结构如下图所示: N-M-L结构对应着N维输入,M个数据中心点centers,L个输出. RBF 网络常用学习算法 RBF 网络的设计包括结构设计和参数设计.结构设计主要解决如何确定网络隐节点数的问题.参数设计一般需考虑包括3种参数:各基函数的数据中心和扩展常

Factorization Machines 学习笔记(四)学习算法

  最近学习了一种叫做 Factorization Machines(简称 FM)的算法,它可对任意的实值向量进行预测.其主要优点包括: 1) 可用于高度稀疏数据场景:2) 具有线性的计算复杂度.本文将对 FM 框架进行简单介绍,并对其训练算法 - 随机梯度下降(SGD)法和交替最小二乘(ALS)法进行详细推导. 相关链接: (一)预测任务 (二)模型方程 (三)回归和分类 (四)学习算法 作者: peghoty 出处: http://blog.csdn.net/itplus/article/d