梯度下降法、随机梯度下降法、小批量梯度下降法

本文以二维线性拟合为例,介绍批量梯度下降法、随机梯度下降法、小批量梯度下降法三种方法,求解拟合的线性模型参数。

需要拟合的数据集是 $(X_1, y_1), (X_2, y_2)..., (X_n, y_n)$,其中$X^i=(x_1^i, x_2^i)$,表示2个特征,$y^j$是对应的回归值。

拟合得到的函数是 $h_{\theta_1, \theta_2}(X)$,尽可能使${h_{{\theta _1},{\theta _2}}}(X) \approx y$。

损失函数是$J(\theta_1, \theta_2) = \sum\limits_{i = 1}^n {{{({h_{\theta_1, \theta_2} }({x_i}) - {y_i})}^2}}$。

损失函数是我们的性能评价指标,损失函数越小,代表我们得到函数$h_{\theta_1, \theta_2}(X)$越能够拟合该数据集。

由于负梯度(函数的导数即为梯度)的方向是局部下降最快的地方,所以为了最小化损失函数,我们沿着损失函数的负梯度方向来调整参数。

1 批量梯度下降法(Batch Gradient Descent)

批量梯度下降法每次更新参数$\theta$都要计算所有的样本数,求全局最优,所以训练开销很大,算法描述如下:

1. 初始化$\theta_1, \theta_2$,设置学习率$\alpha$和终止条件$\varepsilon$

2. 计算$\theta_1, \theta_2$的梯度(偏导数),判断是否都小于终止条件$\varepsilon$,若小于输出参数$\theta_1, \theta_2$,若不小于,重复第三步。

3. 更新$\theta_1, \theta_2$

$\theta_1 = \theta_1 - \alpha(\frac{\partial }{{\partial {\theta _1}}}J({\theta _1},{\theta _2}))$

${\theta _1} = {\theta _1} - \alpha \sum\limits_{i = 0}^n {({h_{{\theta _1},{\theta _2}}}({x_1}^i,{x_2}^i) - {y^i}){x_1}^i} $

$\theta_2 = \theta_2 - \alpha(\frac{\partial }{{\partial {\theta _2}}}J({\theta _1},{\theta _2}))$

${\theta _2} = {\theta _2} - \alpha \sum\limits_{i = 0}^n {({h_{{\theta _1},{\theta _2}}}({x_1}^i,{x_2}^i) - {y^i}){x_2}^i} $

批量梯度法稳定地下降,速度较慢。

2 随机梯度下降法(Stochastic Gradient Descent)

随机梯度下降法原理上与批量梯度下降法类似,不同的是更新参数$\theta$时,不是计算所有的样本数,而是随机计算一个样本。

加快了每次迭代的计算速度,但是收敛不稳定,更新公式如下:

${\theta _1} = {\theta _1} - \alpha ({h_{{\theta _1},{\theta _2}}}({x_1}^i,{x_2}^j) - {y^i}){x_1^j}$

随机梯度法快速下降,但同时也有更大幅度的波动。

3 小批量梯度下降法(Mini-batch Gradient Descent)

小批量梯度下降法是批量梯度下降法和随机梯度下降法的一种平衡,对于$n$个样本,每次随机用$m$个样本,进行批量梯度更新。

是对速度和稳定性进行了折中,更新公式如下:

${\theta _1} = {\theta _1} - \alpha \sum\limits_{i = 0}^x {({h_{{\theta _1},{\theta _2}}}({x_1}^i,{x_2}^i) - {y^i}){x_1}^i} $

 小批量梯度法较快速下降,有小幅波动。

参考:

1. http://sofasofa.io/tutorials/python_gradient_descent/index.php

原文地址:https://www.cnblogs.com/yijuncheng/p/9846315.html

时间: 2024-10-04 05:54:45

梯度下降法、随机梯度下降法、小批量梯度下降法的相关文章

批量梯度下降BGD、随机梯度下降SGD和小批量梯度下降MBGD对比

一般线性回归函数的假设函数为: 对应的损失函数为: (这里的1/2是为了后面求导计算方便)下图作为一个二维参数(,)组对应能量函数的可视化图: 下面我们来比较三种梯度下降法 批量梯度下降法BGD (Batch Gradient Descent) 我们的目的是要误差函数尽可能的小,即求解weights使误差函数尽可能小.首先,我们随机初始化weigths,然后不断反复的更新weights使得误差函数减小,直到满足要求时停止.这里更新算法我们选择梯度下降算法,利用初始化的weights并且反复更新w

批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解

https://www.cnblogs.com/lliuye/p/9451903.html 梯度下降法作为机器学习中较常使用的优化算法,其有着三种不同的形式:批量梯度下降(Batch Gradient Descent).随机梯度下降(Stochastic Gradient Descent)以及小批量梯度下降(Mini-Batch Gradient Descent).其中小批量梯度下降法也常用在深度学习中进行模型的训练.接下来,我们将对这三种不同的梯度下降法进行理解.  为了便于理解,这里我们将使

NN优化方法对比:梯度下降、随机梯度下降和批量梯度下降

1.前言 这几种方法呢都是在求最优解中经常出现的方法,主要是应用迭代的思想来逼近.在梯度下降算法中,都是围绕以下这个式子展开: 其中在上面的式子中hθ(x)代表,输入为x的时候的其当时θ参数下的输出值,与y相减则是一个相对误差,之后再平方乘以1/2,并且其中 注意到x可以一维变量,也可以是多维变量,实际上最常用的还是多维变量.我们知道曲面上方向导数的最大值的方向就代表了梯度的方向,因此我们在做梯度下降的时候,应该是沿着梯度的反方向进行权重的更新,可以有效的找到全局的最优解.这个θ的更新过程可以描

Tensorflow细节-P84-梯度下降与批量梯度下降

1.批量梯度下降 批量梯度下降法是最原始的形式,它是指在每一次迭代时使用所有样本来进行梯度的更新.从数学上理解如下: 对应的目标函数(代价函数)即为: (1)对目标函数求偏导: (2)每次迭代对参数进行更新: 优点: ??(1)一次迭代是对所有样本进行计算,此时利用矩阵进行操作,实现了并行. ??(2)由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向.当目标函数为凸函数时,BGD一定能够得到全局最优. 缺点: ??(1)当样本数目 m 很大时,每迭代一步都需要对所有样本

批量梯度下降法(Batch Gradient Descent)

批量梯度下降:在梯度下降的每一步中都用到了所有的训练样本. 思想:找能使代价函数减小最大的下降方向(梯度方向). ΔΘ = - α▽J      α:学习速率 梯度下降的线性回归 线性模型的代价函数: 对于更新项,为什么是 - α▽J : Θ如果在极值点右边,偏导大于0,则Θ要减去偏导的值(Θ偏大,减去一个正值) Θ如果在极值点左边,偏导小于0,则Θ要减去偏导的值(Θ偏小,减去一个负值) 实现方法:同步更新每个Θ 特点:梯度下降法即使α取很大也可以收敛到局部最小值. 随着算法的进行,越接近最小值

批量梯度下降与随机梯度下降

下面的h(x)是要拟合的函数,J(theta)损失函数,theta是参数,要迭代求解的值,theta求解出来了那最终要拟合的函数h(theta)就出来了.其中m是训练集的记录条数,j是参数的个数. 1.批量梯度下降(BGD)的求解思路如下: (1)将J(theta)对theta求偏导,得到每个theta对应的的梯度 (2)由于是要最小化风险函数,所以按每个参数theta的梯度负方向,来更新每个theta (3)从上面公式可以注意到,它得到的是一个全局最优解,但是每迭代一步,都要用到训练集所有的数

【转】 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比

梯度下降(GD)是最小化风险函数.损失函数的一种常用方法,随机梯度下降和批量梯度下降是两种迭代求解思路,下面从公式和实现的角度对两者进行分析,如有哪个方面写的不对,希望网友纠正. 下面的h(x)是要拟合的函数,J(theta)损失函数,theta是参数,要迭代求解的值,theta求解出来了那最终要拟合的函数h(theta)就出来了.其中m是训练集的记录条数,j是参数的个数. 1.批量梯度下降的求解思路如下: (1)将J(theta)对theta求偏导,得到每个theta对应的的梯度 (2)由于是

随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比

转自:here 注意下面说的全局最优是特殊的情况,一般还是梯度下降的方法还是很容易变成局部最优. 梯度下降(GD)是最小化风险函数.损失函数的一种常用方法,随机梯度下降和批量梯度下降是两种迭代求解思路,下面从公式的角度对两者进行分析. 下面的h(x)是要拟合的函数,J(theta)损失函数,theta是参数,要迭代求解的值,theta求解出来了那最终要拟合的函数h(theta)就出来了.其中m是训练集的记录条数,j是参数的个数. 1.批量梯度下降的求解思路如下: (1)将J(theta)对the

flink 批量梯度下降算法线性回归参数求解(Linear Regression with BGD(batch gradient descent) )

1.线性回归 假设线性函数如下: 假设我们有10个样本x1,y1),(x2,y2).....(x10,y10),求解目标就是根据多个样本求解theta0和theta1的最优值. 什么样的θ最好的呢?最能反映这些样本数据之间的规律呢? 为了解决这个问题,我们需要引入误差分析预测值与真实值之间的误差为最小. 2.梯度下降算法 梯度下降的场景: 梯度下降法的基本思想可以类比为一个下山的过程.假设这样一个场景:一个人被困在山上,需要从山上下来(i.e. 找到山的最低点,也就是山谷). 但此时山上的浓雾很