网站优化排名方法,互联网营销推广方案,杭州住房和城乡建设局网站首页,seo sem是啥梯度下降#xff08;最速下降法#xff09;
梯度下降法(Gradient Descent#xff0c;GD)常用于求解无约束情况下凸函数(Convex Function)的极小值#xff0c;是一种迭代类型的算法#xff0c;因为凸函数只有一个极值点#xff0c;故求解出来的极小值点就是函数的最小值点…梯度下降最速下降法
梯度下降法(Gradient DescentGD)常用于求解无约束情况下凸函数(Convex Function)的极小值是一种迭代类型的算法因为凸函数只有一个极值点故求解出来的极小值点就是函数的最小值点。梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向因为该方向为当前位置的最快下降方向所以梯度下降法也被称为“最速下降法”。梯度下降法中越接近目标值变量变化越小。 计算公式如下 α被称为步长或者学习率(learning rate)表示自变量θ每次迭代变化的大小。收敛条件当目标函数的函数值变化非常小的时候或者达到最大迭代次数的时候就结束循环。
如图所示 深度学习的优化算法说白了就是梯度下降。每次的参数更新有两种方式。
遍历全部数据集算一次损失函数然后算函数对各个参数的梯度更新梯度。这种方法每更新一次参数都要把数据集里的所有样本都看一遍计算量开销大计算速度慢不支持在线学习这称为批量梯度下降Batch gradient descent。每看一个数据就算一下损失函数然后求梯度更新参数这个称为随机梯度下降stochastic gradient descent。这个方法速度比较快但是收敛性能不太好可能在最优点附近晃来晃去hit不到最优点。两次参数的更新也有可能互相抵消掉造成目标函数震荡的比较剧烈。为了克服两种方法的缺点现在一般采用的是一种折中手段小批量梯度下降mini-batch gradient decent这种方法把数据分为若干个批按批来更新参数这样一个批中的一组数据共同决定了本次梯度的方向下降起来就不容易跑偏减少了随机性。另一方面因为批的样本数与整个数据集相比小了很多计算量也不是很大。
基本上现在的梯度下降都是基于mini-batch的所以Keras的模块中经常会出现batch_size就是指这个。
梯度 在微积分里面对多元函数的参数求∂偏导数把求得的各个参数的偏导数以向量的形式写出来就是梯度。比如函数f(x,y), 分别对x,y求偏导数求得的梯度向量就是(∂f/∂x, ∂f/∂y)T,简称grad f(x,y)或者▽f(x,y)。对于在点(x0,y0)的具体梯度向量就是(∂f/∂x0, ∂f/∂y0)T.或者▽f(x0,y0)如果是3个参数的向量梯度就是(∂f/∂x, ∂f/∂y∂f/∂z)T,以此类推。 那么这个梯度向量求出来有什么意义呢他的意义从几何意义上讲就是函数变化增加最快的地方。具体来说对于函数f(x,y),在点(x0,y0)沿着梯度向量的方向就是(∂f/∂x0, ∂f/∂y0)T的方向是f(x,y)增加最快的地方。或者说沿着梯度向量的方向更加容易找到函数的最大值。反过来说沿着梯度向量相反的方向也就是 -(∂f/∂x0, ∂f/∂y0)T的方向梯度减少最快也就是更加容易找到函数的最小值。
在机器学习算法中在最小化损失函数时可以通过梯度下降法来一步步的迭代求解得到最小化的损失函数和模型参数值。反过来如果我们需要求解损失函数的最大值这时就需要用梯度上升法来迭代了。
梯度下降法算法详解
梯度下降的直观解释
首先来看看梯度下降的一个直观的解释。比如我们在一座大山上的某处位置由于我们不知道怎么下山于是决定走一步算一步也就是在每走到一个位置的时候求解当前位置的梯度沿着梯度的负方向也就是当前最陡峭的位置向下走一步然后继续求解当前位置梯度向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去一直走到觉得我们已经到了山脚。当然这样走下去有可能我们不能走到山脚而是到了某一个局部的山峰低处。
从上面的解释可以看出梯度下降不一定能够找到全局的最优解有可能是一个局部最优解。当然如果损失函数是凸函数梯度下降法得到的解就一定是全局最优解。
梯度下降的相关概念 步长Learning rate也叫学习率α步长决定了在梯度下降迭代的过程中每一步沿梯度负方向前进的长度。用上面下山的例子步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。 特征feature指的是样本中输入部分比如2个单特征的样本x(0),y(0),x(1),y(1)x(0),y(0),x(1),y(1),则第一个样本特征为x(0)x(0)第一个样本输出为y(0)y(0)。 假设函数hypothesis function在监督学习中为了拟合输入样本而使用的假设函数记为hθ(x)。比如对于单个特征的m个样本x(i),y(i)(i1,2,…m)x(i),y(i)(i1,2,…m),可以采用拟合函数如下 hθ(x)θ0θ1x。 损失函数loss function为了评估模型拟合的好坏通常用损失函数来度量拟合的程度。损失函数极小化意味着拟合程度最好对应的模型参数即为最优参数。在线性回归中损失函数通常为样本输出和假设函数的差取平方。比如对于m个样本xi,yi(i1,2,…m)xi,yi(i1,2,…m),采用线性回归损失函数为 其中xi表示第i个样本特征yi表示第i个样本对应的输出hθ(xi)为假设函数。
梯度下降的详细算法
梯度下降法的算法可以有代数法和矩阵法也称向量法两种表示过程理解基本一样合并在一起写。 先决条件 确认优化模型的假设函数和损失函数。 算法相关参数初始化主要是初始化θ0,θ1…,θn算法终止距离ε以及步长α。在没有任何先验知识的时候我喜欢将所有的θθ初始化为0 将步长初始化为1。在调优的时候再优化。 算法过程 1确定当前位置的损失函数的梯度对于θi,其梯度表达式如下∂θiJ(θ0,θ1…,θn 2用步长乘以损失函数的梯度得到当前位置下降的距离即α*∂θiJ(θ0,θ1…,θn) 3确定是否所有的θi,梯度下降的距离都小于ε如果小于ε则算法终止当前所有的θi(i0,1,…n)即为最终结果。否则进入步骤4. 4更新所有的θ对于θi其更新表达式如下。更新完毕后继续转入步骤1. θiθi−α∂ * θiJ(θ0,θ1…,θn
梯度下降的算法调优 算法的步长选择。在前面的算法描述中我提到取步长为1但是实际上取值取决于数据样本可以多取一些值从大到小分别运行算法看看迭代效果如果损失函数在变小说明取值有效否则要增大步长。前面说了。步长太大会导致迭代过快甚至有可能错过最优解。步长太小迭代速度太慢很长时间算法都不能结束。所以算法的步长需要多次运行后才能得到一个较为优的值。 算法参数的初始值选择。 初始值不同获得的最小值也有可能不同因此梯度下降求得的只是局部最小值当然如果损失函数是凸函数则一定是最优解。由于有局部最优解的风险需要多次用不同初始值运行算法关键损失函数的最小值选择损失函数最小化的初值。 归一化。由于样本不同特征的取值范围不一样可能导致迭代很慢为了减少特征取值的影响可以对特征数据归一化和标准化这样可以提高算法的收敛速度也能提高准确率。
梯度下降法分类BGDSGDMBGD
批量梯度下降法Batch Gradient Descent是梯度下降法最常用的形式具体做法也就是在更新参数时使用所有的样本来进行更新由于我们有m个样本这里求梯度的时候就用了所有m个样本的梯度数据。随机梯度下降法Stochastic Gradient Descent其实和批量梯度下降法原理类似区别在与求梯度时没有用所有的m个样本的数据而是仅仅选取一个样本j来求梯度。
随机梯度下降法批量梯度下降法是两个极端一个采用所有数据来梯度下降一个用一个样本来梯度下降。自然各自的优缺点都非常突出。对于训练速度来说随机梯度下降法由于每次仅仅采用一个样本来迭代训练速度很快而批量梯度下降法在样本量很大的时候训练速度不能让人满意。对于准确度来说随机梯度下降法用于仅仅用一个样本决定梯度方向导致解很有可能不是最优。对于收敛速度来说由于随机梯度下降法一次迭代一个样本导致迭代方向变化很大不能很快的收敛到局部最优解。
小批量梯度下降法Mini-batch Gradient Descent)是BGD和SGD的折衷也就是对于m个样本我们采用N个样本来迭代1Nm。一般可以取N10当然根据样本的数据可以调整这个N的值。
梯度下降法和其他无约束优化算法的比较
在机器学习中的无约束优化算法除了梯度下降以外还有前面提到的最小二乘法此外还有牛顿法和拟牛顿法。 梯度下降法和最小二乘法相比梯度下降法需要选择步长而最小二乘法不需要。梯度下降法是迭代求解最小二乘法是计算解析解。如果样本量不算很大且存在解析解最小二乘法比起梯度下降法要有优势计算速度很快。但是如果样本量很大用最小二乘法由于需要求一个超级大的逆矩阵这时就很难或者很慢才能求解解析解了使用迭代的梯度下降法比较有优势。 梯度下降法和牛顿法/拟牛顿法相比两者都是迭代求解不过梯度下降法是梯度求解而牛顿法/拟牛顿法是用二阶的海森矩阵的逆矩阵或伪逆矩阵求解。相对而言使用牛顿法/拟牛顿法收敛更快。但是每次迭代的时间比梯度下降法长。