ML(附录1)——梯度下降

  梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。在机器学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降法和批量梯度下降法。

  简单地说,梯度下降就是沿着沿梯度下降的方向求解极小值时的自变量。

  关于梯度的知识可参考《多变量微积分5——梯度与方向导数》

梯度下降的原理

  二元函数w(x,y) = (x – 10)2 + (y – 10)2,其梯度:

  如果在w上选取一点(xn, yn),w沿着梯度下降方向,在x方向上的变化率:

  自变量x沿着梯度下降方向的变化:

  反复迭代,在达到临界点时,就可求得w在极小值时的x;同理可求得在极小值时的y。

  问题是这样做实在太慢,迭代过程及其耗时,所以人们在此基础上设计出更加快速的处理办法——舍弃精确值,求得可接受的近似值。

梯度下降法

计算过程

  实际应用中,梯度下降法增加了“学习率”的概念:

  上式中的α就是学习率,也称为“步长”。梯度下降算法每次迭代,都会受到学习速率α的影响。

  本节剩余内容摘自 https://blog.csdn.net/chenguolinblog/article/details/52138510

  如果α较小,则达到收敛所需要迭代的次数就会非常高;如果α较大,则每次迭代可能不会减小代价函数的结果,甚至会超过局部最小值导致无法收敛。如下图所示情况:

  根据经验,可以从以下几个数值开始试验α的值,0.001 ,0.003, 0.01, 0.03, 0.1, 0.3, 1, …

  α初始值位0.001, 不符合预期乘以3倍用0.003代替,不符合预期再用0.01替代,如此循环直至找到最合适的α,然后对于这些不同的 α 值,绘制 J(θ)随迭代步数变化的曲线,然后选择看上去使得 J(θ)快速下降的一个α值。观察下图,可以发现这2种情况下代价函数 J(θ)的迭代都不是正确的:

  根据经验,可以从以下几个数值开始试验α的值,0.001 ,0.003, 0.01, 0.03, 0.1, 0.3, 1, …

  α初始值位0.001, 不符合预期乘以3倍用0.003代替,不符合预期再用0.01替代,如此循环直至找到最合适的α,然后对于这些不同的 α 值,绘制 J(θ)随迭代步数变化的曲线,然后选择看上去使得 J(θ)快速下降的一个α值。观察下图,可以发现这2种情况下代价函数 J(θ)的迭代都不是正确的:

  第一幅图,曲线在上升,明显J(θ)的值变得越来越大,说明应该选择较小的α

  第二幅图,J(θ)的曲线,先下降,然后上升,接着又下降,然后又上升,如此往复。通常解决这个问题,还是选取较小的α。

  闹心事太多,先到这里,待续。。。。

批量梯度下降法

随机梯度下降法

小批量梯度下降法

示例及码实现



  作者:我是8位的

  出处:http://www.cnblogs.com/bigmonkey

  本文以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,非商业用途!

  扫描二维码关注公众号“我是8位的”

原文地址:https://www.cnblogs.com/bigmonkey/p/8711430.html

时间: 2024-11-09 10:06:08

ML(附录1)——梯度下降的相关文章

二叔看ML第一:梯度下降

原理 梯度下降是一个很常见的通过迭代求解函数极值的方法,当函数非常复杂,通过求导寻找极值很困难时可以通过梯度下降法求解.梯度下降法流程如下: 上图中,用大写字母表示向量,用小写字母表示标量. 假设某人想入坑,他站在某点,他每移动一小步,都朝着他所在点的梯度的负方向移动,这样能保证他尽快入坑,因为某个点的梯度方向是最陡峭的方向,如下图所示,此图画的不太能表达这个观点,但是懒得盗图了,意会吧: 以下举两个例子,两个例子中的被求函数都很简单,其实直接求导算极值更好,此处仅用来说明梯度下降法的步骤. 实

线性规划、梯度下降、正规方程组——斯坦福ML公开课笔记1-2

几个常见问题: 1.为什么损失函数采用最小二乘法,而不是绝对值形式,也不采用最小三乘法?关于这个问题的答案,后面的课程会给出,主要是从最大似然函数角度给出的合理化解释,如果你追问,最大似然函数就代表科学的.合理的吗?那你听说过大数定律.极限中心定律吗?感觉有点像哲学问题了. 2.梯度下降法中提到学习率的问题,我们的目标函数是一个凸二次函数(就是你吃饭的碗的形状),我们知道学习率大会导致震荡,太小会走的慢,那么有没有必要动态调节这个学习率的大小,刚开始下降时可以先大,快收敛时再变小?这个是没有必要

梯度下降深入浅出

查看原文请点这里 在看Ng的ml课程,第二课中讲的是梯度下降算法,所以把与梯度下降算法有关的数学知识复习整理了一下便于自己理解.相信在不断的深入学习中对gradient descent将会有更深更全面的了解,到时候我将不断补充本篇文章. 目录 微分 导数 方向导数 梯度 梯度下降算法 梯度下降算法的应用 数学公式显示不出来,有要看的到我的博客去看吧. http://binhua.info/machinelearning/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E

机器学习_logistic回归和梯度下降

原文:http://blog.csdn.net/dongtingzhizi/article/details/15962797  Logistic回归总结 PDF下载地址:http://download.csdn.net/detail/lewsn2008/6547463 1.引言 看了Stanford的Andrew Ng老师的机器学习公开课中关于Logistic Regression的讲解,然后又看了<机器学习实战>中的LogisticRegression部分,写下此篇学习笔记总结一下. 首先说

[Exercise]随机梯度下降、logistic回归

代码: 1 import numpy as np 2 import csv 3 import math as mt 4 5 def hypo(tt,xx): #hypothesis函数 6 exp=mt.e 7 tmp=0.0 8 for i in range(0,4): 9 tmp+=tt[i]*xx[i] 10 ans=mt.pow(exp,tmp)/(1+mt.pow(exp,tmp)) 11 return ans 12 13 def GDA(tt,iter): #随机梯度下降 14 fo

机器学习笔记01:线性回归(Linear Regression)和梯度下降(Gradient Decent)

最近在Coursera上看吴大神的Machine Learning,感觉讲的真的很棒.所以觉得应该要好好做做笔记,一方面是加强自己对ML中一些方法的掌握程度和理解,另一方面也能方便自己或者同样爱好ML的同学. 线性回归(Linear Regression) 线性回归(Linear Regression)应该是机器学习中最基本的东西了.所谓回归,想必大家在高中时期的课程里面就接触过,给定一系列离散的点(x0,y0),求一条直线 f(x)=ax+b 以使得最小.在machine learning 中

机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)

本文介绍了机器学习中基本的优化算法-梯度下降算法和随机梯度下降算法,以及实际应用到线性回归.Logistic回归.矩阵分解推荐算法等ML中. 梯度下降算法基本公式 常见的符号说明和损失函数 X :所有样本的特征向量组成的矩阵 x(i) 是第i个样本包含的所有特征组成的向量x(i)=(x(i)1,x(i)2...,x(i)n) y(i) 第i个样本的label,每个样本只有一个label,y(i)是标量(一个数值) hθ(x(i)) :拟合函数,机器学习中可以用多种类型的拟合函数 θ 是函数变量,

【ML-3】梯度下降(Gradient Descent)小结

目录 简述 梯度下降与梯度上升 梯度下降法算法详解 梯度下降法大家族(BGD,SGD,MBGD) 梯度下降法和其他无约束优化算法的比较 总结 ? ? 在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法(在[2]中已经讲解了).这里就对梯度下降法做一个完整的总结. 一.简述 在微积分里面,对多元函数的参数求?偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度. 比如函数f(x,y), 分别对x,

2.监督学习应用.梯度下降

// 搜索算法 --- 挨个尝试 1. 梯度下降 批梯度下降, 随机梯度下降 2. 矩阵求导方法