机器学习基础——梯度下降
来源:互联网 发布:精彩返奖统计软件 编辑:程序博客网 时间:2024/05/17 08:33
一、概述
最近看了随机梯度下降算法,虽然比较基础简单,但是在机器学习领域里面有着广泛的运用。这里将随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )进行对比。以便理解和记忆。
二、梯度下降
梯度下降法:
①先随机给出参数的一组值,然后按代价函数(或者叫损失函数)的梯度方向更新参数。使得在每次更新后,结构都能够让损失函数变小,最终达到全局最小值。
②在梯度下降法中,目标函数J其实可以看做是参数的函数,因为在给出了样本和样本对应的值,目标函数J就只剩下参数部分了,这时可以把参数看做是自变量,则目标函数变成参数的函数了。
③梯度下降算法同时更新代价函数中的每个参数,且每个参数更新的形式是一样的,即用上一次该参数的值减掉学习率乘以目标函数对该参数的偏导数即使得代价函数沿着变化最快的方向移动。(ps:不了解梯度的同学可以上网看看)
④当学习速率固定(但不能太大),梯度下降法也是可以收敛到一个局部最小点的,因为梯度值会越来越小,它和固定的学习率相乘后的积也会越来越小。
2.1 批量梯度下降(Batch Gradient Descent)
以线性回归(Linear Regression)为例,h(x)是预测模型,J(
我们的目的,是求出
批量梯度下降算法的思路:
① 把J(
② 由于要最小化损失函数(loss function),按照J(
其中
③ 可以看出,如果对模型h(x)使得J(
2.2 随机梯度下降(Stochastic Gradient Descent)
如果我们需要训练一个大型的训练集,那么随机梯度下降算法用来替代批量梯度下降算法是个不错的选择。
随机梯度下降算法的思路:
① 把J(
② 接着,对训练集D进行randomly shuffle,得到一个新的训练集D1。
③ 然后,对每个代价函数,分别更新
④ 随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况(例如上百万),那么可能只用其中几万个或更少的样本,就已经将
下图为批量梯度下降和随机梯度下降的对比:
三、遗留问题
一、学习率的选取
一般来讲,学习率不宜过大,过大的话很容易使解震荡,反倒不容易收敛。而太小又影响到速度,如用BGD对中大型训练集,选取很小的学习率
通常可以考虑选
二、特征缩放
在多维特征问题中,我们要保证这些特征都有相近的尺度,这可以帮助梯度下降算法更快的收敛(converge)。以房价问题为例,假设我们的特征分别为
而将特征缩放后,代价函数的等高线图变得圆润,使得代价函数达到最小值所需的迭代次数显著降低。
三、与牛顿法的比较
梯度下降法是用来求函数值最小处的参数值,而牛顿法是用来求函数值为0处的参数值,这两者的目的初看是感觉有所不同,但是再仔细观察下牛顿法是求函数值为0时的情况,如果此时的函数是某个函数A的导数,则牛顿法也算是求函数A的最小值(当然也有可能是最大值)了,因此这两者方法目的还是具有相同性的。牛顿法的参数求解也可以用矢量的形式表示,表达式中有hession矩阵和一元导函数向量。
首先的不同之处在于梯度法中需要选择学习率,而牛顿法不需要选择任何参数。第二个不同之处在于梯度法需要大量的迭代次数才能找到最小值,而牛顿法只需要少量的次数便可完成。但是梯度法中的每一次迭代的代价要小,其复杂度为O(n),而牛顿法的每一次迭代的代价要大,为O(n^3)。因此当特征的数量n比较小时适合选择牛顿法,当特征数n比较大时,最好选梯度法。这里的大小以n等于1000为界来计算。
- 机器学习基础——梯度下降
- 机器学习——梯度下降法
- 机器学习——梯度下降
- 机器学习笔记——梯度下降:
- 机器学习——梯度下降算法
- 机器学习—梯度下降算法
- 《机器学习》 梯度下降
- 《机器学习》 梯度下降
- 机器学习 ~~ 梯度下降
- 机器学习 梯度下降
- 机器学习----梯度下降
- 机器学习-梯度下降
- 机器学习--梯度下降
- 机器学习基础(五十九)—— 高级优化算法(梯度下降、L-BFGS、共轭梯度)
- 可扩展机器学习——梯度下降(Gradient Descent)
- 机器学习算法——梯度下降法
- 机器学习笔记——梯度下降法
- 机器学习【2】线性回归——梯度下降法
- vue-router路径计算问题
- Codevs 1183 泥泞的道路
- CI 3.0 隐藏index.php
- Gym
- vue-cli入门(三)——人员管理实例
- 机器学习基础——梯度下降
- 修改Unity的脚本模板
- HBuilder和Eclipse的SVN的服务地址改变后,如何设置图示。
- 容器 What, Why, How
- MyEclipse设置代码提示功能
- 深度学习笔记之win7下TensorFlow的安装
- Jsp标准标签库
- 剑指offer 删除链表中重复的结点
- 爬虫的一点经验