machine_learning梯度下降法
2018-01-31 15:22
106 查看
machine learning 梯度下降法
批梯度下降法(batch gradient descent)、随机梯度下降法(stochastic gradient descent)
date: January 30, 2018 1:45 PMauther: xuwang
mail: xuwang.me@gmail.com
outline: 本文主要介绍了机器学习算法中的梯度下降法(批梯度下降法和随机梯度下降法),主要可用于linear regression等方法中的参数确定(通过最小化cost function);梯度下降法主要包括批梯度下降法和随机梯度下降法等,除此之外还包括小批量梯度下降法(Mini-batch Gradient Descent)等(本文不着重分析介绍)。
1. Basics
1. 偏导数偏导数:多元函数沿坐标轴的变化率
对于二元函数f(x,y)f(x,y)来说,fx(x,y)fx(x,y)指的是函数在保持yy方向不变的前提下,函数值沿着xx轴方向的变化率;fy(x,y)fy(x,y)指的是函数在保持xx方向不变的前提下,函数值沿着yy轴方向的变化率.
几何意义:偏导数fx(x0,y0)fx(x0,y0)就是曲面f(x,y)f(x,y)被平面y=y0y=y0所截得的曲线在点(x0,y0)(x0,y0)处的切线对于xx轴的斜率;偏导数fy(x0,y0)fy(x0,y0)就是曲面f(x,y)f(x,y)被平面x=x0x=x0所截得的曲线在点(x0,y0)(x0,y0)处的切线对于yy轴的斜率。
注:偏导数指的是多元函数沿坐标轴的变化率,并不能表示多元函数沿着任意方向的变化率(即方向导数)。
2. 方向导数
方向导数:多元函数沿着任意方向uu的变化率,uu为单位向量。
对于二元函数f(x,y)f(x,y)来说,我们假设单位向量u=cosθi+sinθju=cosθi+sinθj,其中θθ是向量与xx轴正向夹角,单位向量uu可以用来表示任意方向导数的方向,如下图。
则uu方向的方向导数为:
Duf=limt→0f(x0+tcosθ,y0+tsinθ)−f(x0,yx−0)tDuf=limt→0f(x0+tcosθ,y0+tsinθ)−f(x0,yx−0)t
上面的极限值即为ff沿着uu方向的方向导数,随着θθ的不同,即可求出任意方向的方向导数。
除此之外,方向导数还可以用偏微分的方法来计算,如下所示:
Duf(x,y)=fx(x,y)cosθ+fy(x,y)sinθDuf(x,y)=fx(x,y)cosθ+fy(x,y)sinθ
3. 梯度
定义:设函数z=f(x,y)z=f(x,y)在平面DD内具有一阶连续偏导数,则对于每一点(x,y)∈D(x,y)∈D,都可以确定一个向量(fx(x,y),fy(x,y))(fx(x,y),fy(x,y)),该向量即为函数z=f(x,y)z=f(x,y)在点(x,y)(x,y)的梯度,记作grad f(x,y)grad f(x,y)。
我们如果将梯度向量记为向量AA,那么我们可以将Duf(x,y)=fx(x,y)cosθ+fy(x,y)sinθDuf(x,y)=fx(x,y)cosθ+fy(x,y)sinθ表示为:
Duf(x,y)=A⋅u=|A|∗|u|∗cosαDuf(x,y)=A⋅u=|A|∗|u|∗cosα
其中αα为方向向量uu和梯度向量AA的夹角,当且仅当两个向量平行时,即cosαcosα为1时,方向导数的值去最大值,此时方向导数的方向即为梯度的方向,导数的含义时函数单位长度内的增量,那么我们可以知道,在梯度方向上函数增长最快。
2. 批梯度下降法(batch gradient descent)
梯度下降法主要用于在给定目标条件下求解模型的参数(parameter),如在linear regression中,我们有hypotheses函数 hh 如下所示: hθ(X(i))=θ0+θ1x(i)1+...θnx(i)nhθ(X(i))=θ0+θ1x1(i)+...θnxn(i)
即:
hθ(X(i))=∑j=0nθjxj=θTX(i)hθ(X(i))=∑j=0nθjxj=θTX(i)
其中,θT=[θ0,θ1,...,θn]θT=[θ0,θ1,...,θn],X(i)=[1,x(i)1,...,x(i)n]X(i)=[1,x1(i),...,xn(i)],nn为每个样本特征数,一共有mm个样本,X(I)X(I)表示第ii个样本。
我们在确定模型的参数θTθT时,要尽可能的让线性函数hθ(X(i))hθ(X(i))拟合出来的值与实际值y(i)y(i)相近(最好相等)。因此我们定义cost functioncost function:
J(θ)=12∑i=1m(hθ(X(i))−y(i))2J(θ)=12∑i=1m(hθ(X(i))−y(i))2
即,让J(θ)J(θ)的值尽可能的小,找到让J(θ)J(θ)值最小的θθ的值。
梯度下降法即用来解决此类问题。
我们对J(θ)J(θ)求关于θjθj的偏导,j={0,...n}j={0,...n},得到偏导为∂∂θjJ(θ)∂∂θjJ(θ)。
在批梯度下降法中,我们从对θθ的值的随机初始化开始,即随机初始化一个θθ点:θT=[θ0,θ1,...,θn]θT=[θ0,θ1,...,θn],在吴恩达的machine learning中将其称为”initial guess”,然后通过不断重复的更改θθ的值使得J(θ)J(θ)的值越来越小,最终达到最小值。其中,θθ值的改变遵循如下公式:
θj:=θj−α∂∂θjJ(θ)θj:=θj−α∂∂θjJ(θ)
其中,αα称为learning ratelearning rate,αα的值如果过小,将会导致迭代的次数过多,经过很漫长的时间才能收敛,αα的值如果过大,将会导致达不到J(θ)J(θ)的最小值,而是在最小值附近来回震荡。
注:我们注意到,在上面的公式中,各个方向的θjθj是减去了其对应方向的偏导数值,合起来即减去了梯度值,由于函数在梯度方向上增长最快,我们便向其反方向不断运动,故为减号。
我们对∂∂θjJ(θ)∂∂θjJ(θ)进行进一步的运算求解可以得到如下的式子:
∂∂θjJ(θ)=∂∂θj12∑i=1m(hθ(X(i))−y(i))2 =∑i=1m2⋅12(hθ(X(i))−y(i))⋅∂∂θj(hθ(X(i))−y(i)) =∑i=1m(hθ(X(i))−y(i))⋅∂∂θj(hθ(X(i))−y(i)) =∑i=1m(hθ(X(i))−y(i))⋅x(i)j∂∂θjJ(θ)=∂∂θj12∑i=1m(hθ(X(i))−y(i))2 =∑i=1m2⋅12(hθ(X(i))−y(i))⋅∂∂θj(hθ(X(i))−y(i)) =∑i=1m(hθ(X(i))−y(i))⋅∂∂θj(hθ(X(i))−y(i)) =∑i=1m(hθ(X(i))−y(i))⋅xj(i)
上式中∂∂θj(hθ(X(i))−y(i))∂∂θj(hθ(X(i))−y(i))对θjθj求偏导的结果是(hθ(X(i))−y(i))(hθ(X(i))−y(i))中θjθj的系数x(i)jxj(i)。
因此,我们将偏导带入θjθj的update公式:
θj:=θj−α∑i=1m(hθ(X(i))−y(i))⋅x(i)jθj:=θj−α∑i=1m(hθ(X(i))−y(i))⋅xj(i)
通过利用上面的θjθj的update公式,我们可以最终达到J(θ)J(θ)的最小值,上述的update rule也被称作LMS update ruleLMS update rule,即lease mean squareslease mean squares(最小均方)。
但是,仔细观察我们便可以发现,每进行一次迭代,我们需要将m个样本的值都带进去进行一次求和(即批梯度下降),我们可以得到批梯度下降的算法如下:
Repeat until convergence{θj:=θj−α∑i=1m(hθ(X(i))−y(i))⋅x(i)j(for every j)}Repeat until convergence{θj:=θj−α∑i=1m(hθ(X(i))−y(i))⋅xj(i)(for every j)}
在样本数不多的情况下这种迭代是可以的,但如果在样本数很大,几十万个样本时,我们进行一次迭代都要花很久的时间,更不用说找到最终的θθ值了,因此在样本数量很多的情况下,随机梯度下降(stochastic gradient descent)就排上了用场。
3. 随机梯度下降法(stochastic gradient descent)
在随机梯度下降法中,我们不用每进行一次θjθj值的update必须计算所有样本的值,而是每次只选择其中一个样本的值进行计算,随机梯度下降算法如下所示: Repeat until convergence{for i=1 to m,{θj=θj−α(hθ(X(i))−y(i))⋅x(i)j(for every j)}}Repeat until convergence{for i=1 to m,{θj=θj−α(hθ(X(i))−y(i))⋅xj(i)(for every j)}}
在上面的算法中,我们对θjθj的每次update只需要代入一个训练样本即可(批梯度下降法则需要遍历整个样本集进行计算)。
很大一部分情况下,随机梯度下降法得到一个θT=[θ0,...,θn]θT=[θ0,...,θn](“close” to the minimum)的速度大大快于批梯度下降法。但是随机梯度下降法的缺点是,他永远不会收敛到最小值minimum,得到的θT=[θ0,...,θn]θT=[θ0,...,θn]使得J(θ)J(θ)的值保持在J(θ)J(θ)最小值附近不断摆动(但是,在实际情况中,我们得到的参数θθ的值是有理由很好的近似认为是真实最小值的θθ值,我们可以通过合理的设置learning rate αlearning rate α的值,通过慢慢的减小αα的值随着算法的运行慢慢减少为0,就优很大的可能保证参数parameters将收敛到全局最小值,而不是在最小值的取值附近摆动)。
因此,当训练样本集合数据量特别大时,随机梯度下降法往往表现的比批梯度下降法更好,在样本量极其大的情况下,可能不用训练完整个样本集就可以获得一个损失值在可接受范围内的模型。
4. 小批量梯度下降法(Mini-batch Gradient Descent)
小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,也就是对于m个样本,我们采用x个样本来迭代,1相关文章推荐
- [Eclipse] failed to create the java virtual machine
- pattern recognition and machine learning 2.2 Multinomial Variables
- Paper String Rewinding Machine wholesale
- @the meaning of life@ about search machine
- POJ 2455 Secret Milking Machine【二分+最大流】
- Failed to create the Java Virtual Machine 解决方法
- Assist you find reliable grinding machine parts
- iPad UIDeviceHardware hw.machine codename
- 从MACHINE_START开始
- hdu 4052 Adding New Machine
- LINUX中的MACH定义之MACHINE_START / MACHINE_END
- The Modern Development of Dryer Machine
- Oracle SQL Developer Unable To Find Java Virtual Machine
- 【Stanford Machine Learning Open Course】编程题解(全)
- 关于PVFS状态机的声明和定义---src/common/misc/state-machine.h
- windows7 (eclipse)JRE or JDK No Java virtual machine was found 解决方法
- 读书笔记:machine-level representation of program<computer system a programmer perspective第二章>
- Stanford Online Machine Learning 学习笔记1——单变量线性回归
- MACHINE_START