随机梯度下降法

转载 2015年07月09日 13:47:03

转载这一篇是为了与上一篇作对比:

一、误差准则函数与随机梯度下降:

对于给定的一个点集(X,Y),找到一条曲线或者曲面,对其进行拟合之。同时称X中的变量为特征(Feature),Y值为预测值。

如图:

                                      

一个典型的机器学习的过程,首先给出一组输入数据X,我们的算法会通过一系列的过程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计Y,也被称为构建一个模型。

我们用X1、X2...Xn 去描述feature里面的分量,用Y来描述我们的估计,得到一下模型:


我们需要一种机制去评价这个模型对数据的描述到底够不够准确,而采集的数据x、y通常来说是存在误差的(多数情况下误差服从高斯分布),于是,自然的,引入误差函数:


关键的一点是如何调整theta值,使误差函数J最小化。J函数构成一个曲面或者曲线,我们的目的是找到该曲面的最低点:


假设随机站在该曲面的一点,要以最快的速度到达最低点,我们当然会沿着坡度最大的方向往下走(梯度的反方向)

用数学描述就是一个求偏导数的过程:


这样,参数theta的更新过程描述为以下:

   (α表示算法的学习速率)



二、算法实现与测试:(相当于梯度下降,没有所谓的随机)

通过一组数据拟合 y = theta1*x1 +theta2*x2

  1. #Python 3.3.5  
  2. # matrix_A  训练集  
  3. matrix_A = [[1,4], [2,5], [5,1], [4,2]]  
  4. Matrix_y = [19,26,19,20]  
  5. theta = [2,5]  
  6. #学习速率  
  7. leraing_rate = 0.005  
  8. loss = 50  
  9. iters = 1  
  10. Eps = 0.0001  
  11. while loss>Eps and iters <1000 :  
  12.     loss = 0  
  13.     for i in range(3) :  
  14.         h = theta[0]*matrix_A[i][0] + theta[1]*matrix_A[i][1]   
  15.         theta[0] = theta[0] + leraing_rate*(Matrix_y[i]-h)*matrix_A[i][0]  
  16.         theta[1] = theta[1] + leraing_rate*(Matrix_y[i]-h)*matrix_A[i][1]  
  17.     for i in range(3) :  
  18.         Error = 0  
  19.         Error = theta[0]*matrix_A[i][0] + theta[1]*matrix_A[i][1] - Matrix_y[i]  
  20.         Error = Error*Error  
  21.         loss = loss +Error  
  22.     iters = iters +1  
  23. print ('theta=',theta)  
  24. print ('iters=',iters)  
求解结果:
  1. >>>   
  2. theta= [2.99809592161579454.001522800837675]  
  3. iters= 75  
但如果对输入数据添加一些噪声

  1. matrix_A = [[1.05,4], [2.1,5], [5,1], [4,2]]  
求解结果为:

  1. >>>   
  2. theta= [3.00959506851977253.944718521027671]  
  3. iters= 1000  
可见在有噪声的情况下,要及时调整模型误差精度、迭代次数上限,一期达到我们的需求。

机器学习笔记(一):梯度下降算法,随机梯度下降,正规方程

一、符号解释 M 训练样本的数量 x 输入变量,又称特征 y 输出变量,又称目标 (x, y) 训练样本,对应监督学习的输入和输出 表示第i组的x   表示第i组的y h(x)表示对应算法的函数 是算...
  • Qer_computerscience
  • Qer_computerscience
  • 2017年02月13日 23:39
  • 3903

感知机随机梯度和梯度下降法区别

一、随机梯度下降的随机近似【背景】:       既然是随机近似,则顾名思义,肯定是用近似方法来改善梯度下降时候的时间复杂度问题。       一般梯度下降法采用:∂E/∂wi=∑(h(x...
  • Touch_Dream
  • Touch_Dream
  • 2017年04月03日 21:28
  • 432

批量梯度下降和随机梯度下降matlab 实现

文章出处: 【Machine Learning实验1】batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降) 上面是...
  • carrierlxksuper
  • carrierlxksuper
  • 2014年03月16日 22:35
  • 4331

梯度下降法,随机梯度下降法和随机梯度下降法

梯度下降法在深度学习方面有很大的作用,但是不同情况下产生了不同的梯度下降法。...
  • baidu_15113429
  • baidu_15113429
  • 2018年01月09日 11:57
  • 50

梯度下降法和随机梯度下降法的区别

梯度下降法和随机梯度下降法的区别 转载自:http://www.cnblogs.com/boqun1991/p/4063575.html 这几天在看《统计学...
  • dulingtingzi
  • dulingtingzi
  • 2016年06月29日 15:20
  • 1544

随机梯度下降法相关

在大规模机器学习问题中,很多算法最终都归结为一个这样的优化问题: minimizeω∈Rpg(ω):=1n∑i=1nfi(ω). \text{minimize}_{\omega \in R^p} \...
  • Marcus_XF
  • Marcus_XF
  • 2016年05月28日 21:42
  • 1450

机器学习之梯度下降、批量梯度下降与随机梯度下降

大多数的机器学习算法都涉及某种形式的优化。优化指的是改变以最小化或者最大化某个函数的任务。我们通常以最小化指代大多数优化问题。最大化可由最小化算法最小化来实现。 我们把要最小化或者最大化的函数称为目标...
  • u012507022
  • u012507022
  • 2017年01月07日 21:16
  • 3569

C语言实现随即梯度下降,批量梯度下降法

批量梯度下降:/* * 批量梯度下降实验: * 训练集输入为矩阵: * 1,4 * 2,5 * 5,1 * 4,2 * 输出结果为: * 19 * 26 * 1...
  • li8630
  • li8630
  • 2015年03月13日 15:25
  • 1408

[deeplearning-001] stotisticks gradient descent随机梯度下降算法的最简单例子解释

1.gradient descent梯度下降优化1.1假设要优化一个函数f(x)=(x−1)2f(x)=(x-1)^2。这个函数在x=1x=1 时有最小值,这是解析解。如果用梯度下降法,是这样的: ...
  • u011539200
  • u011539200
  • 2017年10月23日 07:17
  • 241

batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降) C++版

转载自: http://blog.csdn.net/pennyliang/article/details/6998517 批量梯度下降是一种对参数的update进行累积,然后批量更新的一种...
  • ooxyzoo
  • ooxyzoo
  • 2015年01月22日 13:42
  • 940
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:随机梯度下降法
举报原因:
原因补充:

(最多只允许输入30个字)