Deep learning系列(十)随机梯度下降

1. 梯度下降

梯度下降是常用的神经网络模型参数求解方法,根据每次参数更新使用样本数量的多少,可以分为以下三类:

  • 批量梯度下降(batch gradient descent);
  • 小批量梯度下降(mini-batch gradient descent);
  • 随机梯度下降(stochastic gradient descent);

批量梯度下降计算全部训练集样本梯度的平均,然后更新梯度,伪码如下:

while True:
  weights_grad = evaluate_gradient(loss_fun, data, weights)
  weights += - step_size * weights_grad # perform parameter update

对于大规模数据库来说,比如ILSVRC,可以包含几百万个样本,若采用批量梯度下降的话,需要计算几百万次梯度计算,然后计算平均,才能更新一次参数,无论从时间效率还是内存占用来说都是不可取的,一种常用的做法将训练数据分批(batch)进行训练,称为小批量梯度下降。比如对于卷积神经网络来说,每次在训练集中选择包含256个样本的一批数据,然后使用这批数据计算梯度,完成参数更新,代码如下:

while True:
  data_batch = sample_training_data(data, 256) # sample 256 examples
  weights_grad = evaluate_gradient(loss_fun, data_batch, weights)
  weights += - step_size * weights_grad # perform parameter update

通常来说,通过小批量样本计算出来的梯度是对使用整个训练集计算出来的梯度一个非常好的近似,使用小批量梯度下降,可以极大地提高算法收敛速度。

小批量梯度下降的极端是每批数据只包含一个样本,这时算法称为随机梯度下降,也称为在线梯度下降(on-line gradient descent)。其伪码为:

while True:
  data_batch = sample_training_data(data, 1) # use a single example
  weights_grad = evaluate_gradient(loss_fun, data_batch, weights)
  weights += - step_size * weights_grad # perform parameter update

在神经网络训练过程中,很少使用随机梯度下降,因为小批量梯度下降可以利用矩阵和向量计算进行加速。通常我们讲随机梯度下降(SGD)时,也可以指代小批量梯度下降。

2. 随机梯度下降加速

如果把要优化的目标函数看成山谷的话,可以把要优化的参数看成滚下山的石头,参数随机化为一个随机数可以看做在山谷的某个位置以0速度开始往下滚。目标函数的梯度可以看做给石头施加的力,由力学定律知: F=ma ,所以梯度与石头下滚的加速度成正比。因而,梯度直接影响速度,速度的累加得到石头的位置,对这个物理过程进行建模,可以得到参数更新过程为:

# Momentum update
v = momentum * v - learning_rate * dx # integrate velocity
x += v # integrate position

代码中v指代速度,其计算过程中有一个超参数momentum,称为动量(momentum)。虽然名字为动量,其物理意义更接近于摩擦,其可以降低速度值,降低了系统的动能,防止石头在山谷的最底部不能停止情况的发生。动量的取值范围通常为[0.5, 0.9, 0.95, 0.99],一种常见的做法是在迭代开始时将其设为0.5,在一定的迭代次数(epoch)后,将其值更新为0.99。

在实践中,一般采用SGD+momentum的配置,相比普通的SGD方法,这种配置通常能极大地加快收敛速度。

3. 学习率的更新

在算法迭代过程中逐步降低学习率(step_size)通常可以加快算法的收敛速度。常用的用来更新学习率的方法有三种:

  • 逐步降低(Step decay),即经过一定迭代次数后将学习率乘以一个小的衰减因子。典型的做法包括经过5次迭代(epoch)后学习率乘以0.5,或者20次迭代后乘以0.1。
  • 指数衰减(Exponential decay),其数学表达式可以表示为:
  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
第⼆二章 机器器学习基础 2.1 各种常⻅见算法图示 2.2 监督学习、⾮非监督学习、半监督学习、弱监督学习? 2.3 监督学习有哪些步骤 2.4 多实例例学习? 2.5 分类⽹网络和回归的区别? 2.6 什什么是神经⽹网络? 2.7 理理解局部最优与全局最优 2.8 分类算法 2.8.1 常⽤用分类算法的优缺点? 2.8.2 正确率能很好的评估分类算法吗? 2.8.3 分类算法的评估⽅方法? 2.8.4 什什么样的分类器器是最好的? 2.9 逻辑回归 2.9.1 理理解逻辑回归 2.9.2 逻辑回归与朴素⻉贝叶斯有什什么区别? 2.9.3线性回归与逻辑回归的区别?(贡献者:⻩黄钦建-华南理理⼯工⼤大学) 2.10 代价函数 2.10.1 为什什么需要代价函数? 2.10.2 代价函数作⽤用原理理 2.10.3 为什什么代价函数要⾮非负? 2.10.4 常⻅见代价函数? 2.10.5 为什什么⽤用交叉熵代替⼆二次代价函数 2.11 损失函数 2.11.1 什什么是损失函数? 2.11.2 常⻅见的损失函数 2.11.3 逻辑回归为什什么使⽤用对数损失函数? 2.11.4 对数损失函数是如何度量量损失的? 2.12 梯度下降 2.12.1 机器器学习中为什什么需要梯度下降? 2.12.2 梯度下降法缺点? 2.12.3 梯度下降法直观理理解? 2.12.4 梯度下降法算法描述? 2.12.5 如何对梯度下降法进⾏行行调优? 2.12.7 随机梯度和批量量梯度区别? 2.12.8 各种梯度下降法性能⽐比较 2.13 计算图的导数计算图解? 2.14 线性判别分析(LDA) 2.14.1 线性判别分析(LDA)思想总结 2.14.2 图解LDA核⼼心思想 2.14.3 ⼆二类LDA算法原理理? 2.14.4 LDA算法流程总结? 2.14.5 LDA和PCA区别? 2.14.6 LDA优缺点? 2.15 主成分分析(PCA) 2.15.1 主成分分析(PCA)思想总结 2.15.2 图解PCA核⼼心思想 2.15.3 PCA算法推理理 2.15.4 PCA算法流程总结 2.15.5 PCA算法主要优缺点 2.15.6 降维的必要性及⽬目的 2.15.7 KPCA与PCA的区别? 2.16 模型评估 2.16.1 模型评估常⽤用⽅方法? 2.16.2 机器器学习中的Bias,Error和Variance有什什么区别和联系? 2.16.3 经验误差与泛化误差 2.16.4 图解⽋欠拟合、过拟合 2.16.5 如何解决过拟合与⽋欠拟合? 2.16.6 交叉验证的主要作⽤用? 2.16.7 k折交叉验证? 2.16.8 混淆矩阵 2.16.9 错误率及精度 2.16.10 查准率与查全率 2.16.11 ROC与AUC 2.16.12 如何画ROC曲线? 2.16.13 如何计算TPR,FPR? 2.16.14 如何计算Auc? 2.16.15 为什什么使⽤用Roc和Auc评价分类器器? 2.16.17 直观理理解AUC 2.16.18 代价敏敏感错误率与代价曲线 2.16.19 模型有哪些⽐比较检验⽅方法 2.16.20 偏差与⽅方差 2.16.21为什什么使⽤用标准差? 2.16.22点估计思想 2.16.23 点估计优良性原则? 2.16.24 点估计、区间估计、中⼼心极限定理理之间的联系? 2.16.25 类别不不平衡产⽣生原因? 2.16.26 常⻅见的类别不不平衡问题解决⽅方法 2.17 决策树 2.17.1 决策树的基本原理理 2.17.2 决策树的三要素? 2.17.3 决策树学习基本算法 2.17.4 决策树算法优缺点 2.17.5熵的概念以及理理解 2.17.6 信息增益的理理解 2.17.7 剪枝处理理的作⽤用及策略略? 2.18 ⽀支持向量量机 2.18.1 什什么是⽀支持向量量机 2.18.2 ⽀支持向量量机解决的问题? 2.18.3 核函数作⽤用? 2.18.4 对偶问题 2.18.5 理理解⽀支持向量量回归 2.18.6 理理解SVM(核函数) 2.18.7 常⻅见的核函数有哪些? 2.18.8 软间隔与正则化 2.18.9 SVM主要特点及缺点? 2.19 ⻉贝叶斯 2.19.1 图解极⼤大似然估计 2.19.2 朴素⻉贝叶斯分类器器和⼀一般的⻉贝叶斯分类器器有什什么区别? 2.19.3 朴素与半朴素⻉贝叶斯分类器器 2.19.4 ⻉贝叶斯⽹网三种典型结构 2.19.5 什什么是⻉贝叶斯错误率 2.19.6 什什么是⻉贝叶斯最优错误率 2.20 EM算法解决问题及实现流程 2.21 降维和聚类 2.21.1 为什什么会产⽣生维数灾难? 2.21.2 怎样避免维数灾难 2.21.3 聚类和降维有什什么区别与联系? 2.21.4 四种聚类⽅方法之⽐比较 2.21.5 SOM聚类算法 2.21.6 FCM聚类算法 2.22 GBDT和随机森林林的区别 2.23 ⼤大数据与深度学习之间的关系

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值