机器学习—梯度下降算法
来源:互联网 发布:软件测评收费 编辑:程序博客网 时间:2024/06/06 02:27
梯度下降算法
一、梯度下降算法是一个最优化算法,它是沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值的一种方法。
二、众所周知,我们从山顶下山,想要求得到山脚路程最短的一条路径,那么我们每次都应该沿着最陡峭的方向下山。
下山问题即我们这里所说的梯度下降问题。最陡峭的方向即为函数斜率绝对值最大的方向。那么,为什么沿斜率方向函数值下降的最快呢?我们可以运用高等数学的知识来证明这个结论。
若函数z=f(x,y)的增量与pp'两点切线距离之比在p'沿着方向趋于p时,趋于零极限存在,则称函数在p点沿着方向的方向导数,表示为:
对函数z求偏导,对x有:
对y有:
则
设有向量,和向量
则上式可写成如下形式(其中θ为两向量之间的夹角):
当θ=kπ时,取得极值:
由此可知,当下降方向与斜率方向相同(相反)时,其上升(下降)速度最快。
三、现在,我们设有一组样本点(xi,yi),由该组样本点,我们可以得到一个预测函数h(x),设样本的实际函数y与预测函数h(x)之间的差值的平方为J(x),表示为:
要想使得h(x)与实际函数y拟合,就要使得J(x)取得最小值,这里就要用到梯度下降算法。
设定θ的初值,以及下降的步长ɑ,沿着斜率方向下降,以求得J(x)最小值,利用以下公式对θ的值进行更新:
每下降一次,θ的值更新一次,直到J(x)取得最小值时,θ才停止更新,此时的θ使得预测函数h(x)与实际函数y拟合最好,即为函数h(x)的理想值。
四、梯度下降算法又有批量梯度下降算法和随机梯度下降算法两种:
(1)批量梯度下降算法:
批量梯度下降算法在迭代过程中要利用到所有的样本,其迭代公式如下:
利用批量梯度下降法得到的是一个全局最优解,但是每迭代一步,都要用到训练集所有的数据,如果m很大,那么这种方法的迭代速度就不理想。
批量梯度下降算法代码如下:
运行结果如下:
(2)随机梯度下降算法:
随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本(每次迭代随机选取一个样本点,只是迭代次数比批量梯度下降要多),就已经将迭代到θ最优解了。
对于随机梯度下降算法,将J(x)表示成以下形式:
(注:cost为costfunction函数)
每个样本的损失函数,对θ求偏导得到对应梯度,来更新θ:
随机梯度下降算法代码:
运行结果:
(3)批量梯度下降算法与随机梯度下降算法的比较:
1、批量梯度下降---最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函 数最小。
2、随机梯度下降---最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大 的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近。
五、梯度下降算法中步长α取值问题
如果步长ɑ,步子太小,迭代很多次都可能到不了终点:而步长太大,可能越跑越远,出现之字下降。
解决方法:
1.手动测试法
2.固定步进
3.步长衰减
4.自适应步长
1 0
- 机器学习——梯度下降算法
- 机器学习—梯度下降算法
- 机器学习-梯度下降算法
- 机器学习算法-梯度下降
- 机器学习:梯度下降算法
- 机器学习:梯度下降算法
- 机器学习算法——梯度下降法
- 机器学习笔记——梯度下降算法
- 机器学习sklearn19.0——梯度下降算法
- 【机器学习】(2):梯度下降算法
- 机器学习算法--梯度下降法
- 机器学习04-logistic梯度下降算法
- 机器学习入门(5)--梯度下降算法
- 机器学习之梯度下降算法
- 机器学习算法之梯度下降法
- 从零开始机器学习002-梯度下降算法
- 《机器学习》 梯度下降
- 《机器学习》 梯度下降
- 今天如此之忙
- css选择器
- 错误的安全配置
- swift_003(Swift的?和!)
- Python字符串之格式规约
- 机器学习—梯度下降算法
- CNN数值初始化——xavier(上)
- Thinkphp 逻辑与,逻辑或的复合查询
- 判断某个字符串是否以某个字符串开头或结尾
- mime详解
- hdu 2059 龟兔赛跑【dp】
- 一次由于内存问题程序被kill的测试 (3)
- 第十周 项目3-利用二叉树遍历思想解决问题
- MySQL 5.7.9版本sql_mode=only_full_group_by问题