梯度下降法的变形 - 随机梯度下降 -minibatch -并行随机梯度下降

问题的引入:

考虑一个典型的有监督机器学习问题,给定m个训练样本S={x(i),y(i)},通过经验风险最小化来得到一组权值w,则现在对于整个训练集待优化目标函数为:

其中为单个训练样本(x(i),y(i))的损失函数,单个样本的损失表示如下:

引入L2正则,即在损失函数中引入,那么最终的损失为:

注意单个样本引入损失为(并不用除以m):

正则化的解释

这里的正则化项可以防止过拟合,注意是在整体的损失函数中引入正则项,一般的引入正则化的形式如下:

其中L(w)为整体损失,这里其实有:

这里的 C即可代表,比如以下两种不同的正则方式:

下面给一个二维的示例图:我们将模型空间限制在w的一个L1-ball 中。为了便于可视化,我们考虑两维的情况,在(w1, w2)平面上可以画出目标函数的等高线,而约束条件则成为平面上半径为C的一个 norm ball 。等高线与 norm ball 首次相交的地方就是最优解

可以看到,L1-ball 与L2-ball 的不同就在于L1在和每个坐标轴相交的地方都有“角”出现,而目标函数的测地线除非位置摆得非常好,大部分时候都会在角的地方相交。注意到在角的位置就会产生稀疏性,例如图中的相交点就有w1=0,而更高维的时候(想象一下三维的L1-ball 是什么样的?)除了角点以外,还有很多边的轮廓也是既有很大的概率成为第一次相交的地方,又会产生稀疏性,相比之下,L2-ball 就没有这样的性质,因为没有角,所以第一次相交的地方出现在具有稀疏性的位置的概率就变得非常小了。

因此,一句话总结就是:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。

Batch Gradient Descent

有了以上基本的优化公式,就可以用Gradient Descent 来对公式进行求解,假设w的维度为n,首先来看标准的Batch Gradient Descent算法:

repeat until convergency{

  for j=1;j<n ; j++:

    

}

这里的批梯度下降算法是每次迭代都遍历所有样本,由所有样本共同决定最优的方向。

stochastic Gradient Descent

随机梯度下降就是每次从所有训练样例中抽取一个样本进行更新,这样每次都不用遍历所有数据集,迭代速度会很快,但是会增加很多迭代次数,因为每次选取的方向不一定是最优的方向.

repeat until convergency{

  random choice j from all m training example:

    

}

mini-batch Gradient Descent

这是介于以上两种方法的折中,每次随机选取大小为b的mini-batch(b<m), b通常取10,或者(2...100),这样既节省了计算整个批量的时间,同时用mini-batch计算的方向也会更加准确。

repeat until convergency{

  for j=1;j<n ; j+=b:

    

}

最后看并行化的SGD:

若最后的v达到收敛条件则结束执行,否则回到第一个for循环继续执行,该方法同样适用于minibatch gradient descent。

时间: 2024-11-15 17:35:07

梯度下降法的变形 - 随机梯度下降 -minibatch -并行随机梯度下降的相关文章

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

Gradient Descent(Batch Gradient)也就是梯度下降法是一种常用的的寻找局域最小值的方法.其主要思想就是计算当前位置的梯度,取梯度反方向并结合合适步长使其向最小值移动.通过柯西施瓦兹公式可以证明梯度反方向是下降最快的方向. 经典的梯度下降法利用下式更新参量,其中J(θ)是关于参量θ的损失函数,梯度下降法通过不断更新θ来最小化损失函数.当损失函数只有一个global minimal时梯度下降法一定会收敛于最小值(在学习率不是很大的情况下) 上式的梯度是基于所有数据的,如果

机器学习中常见问题_几种梯度下降法

一.梯度下降法 在机器学习算法中,对于很多监督学习模型,需要对原始的模型构建损失函数,接下来便是通过优化算法对损失函数进行优化,以便寻找到最优的参数.在求解机器学习参数的优化算法中,使用较多的是基于梯度下降的优化算法(Gradient Descent, GD). 梯度下降法有很多优点,其中,在梯度下降法的求解过程中,只需求解损失函数的一阶导数,计算的代价比较小,这使得梯度下降法能在很多大规模数据集上得到应用.梯度下降法的含义是通过当前点的梯度方向寻找到新的迭代点. 基本思想可以这样理解:我们从山

[Machine Learning] 梯度下降法的三种形式BGD、SGD以及MBGD

在应用机器学习算法时,我们通常采用梯度下降法来对采用的算法进行训练.其实,常用的梯度下降法还具体包含有三种不同的形式,它们也各自有着不同的优缺点. 下面我们以线性回归算法来对三种梯度下降法进行比较. 一般线性回归函数的假设函数为: $h_{\theta}=\sum_{j=0}^{n}\theta_{j}x_{j}$ 对应的能量函数(损失函数)形式为: $J_{train}(\theta)=1/(2m)\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^{2}$

Stanford机器学习课程笔记——单变量线性回归和梯度下降法

Stanford机器学习课程笔记--单变量线性回归和梯度下降法 1. 问题引入 单变量线性回归就是我们通常说的线性模型,而且其中只有一个自变量x,一个因变量y的那种最简单直接的模型.模型的数学表达式为y=ax+b那种,形式上比较简单.Stanford的机器学习课程引入这个问题也想让我们亲近一下machine learning这个领域吧~吴恩达大神通过一个房屋交易的问题背景,带领我们理解Linear regression with one variable.如下: 不要看这个问题简答,大神就是大神

谷歌机器学习速成课程---3降低损失 (Reducing Loss):梯度下降法

迭代方法图(图 1)包含一个标题为"计算参数更新"的华而不实的绿框.现在,我们将用更实质的方法代替这种华而不实的算法. 假设我们有时间和计算资源来计算 w1 的所有可能值的损失.对于我们一直在研究的回归问题,所产生的损失与 w1 的图形始终是凸形.换言之,图形始终是碗状图,如下所示: 图 2. 回归问题产生的损失与权重图为凸形. 凸形问题只有一个最低点:即只存在一个斜率正好为 0 的位置.这个最小值就是损失函数收敛之处. 通过计算整个数据集中 w1 每个可能值的损失函数来找到收敛点这种

逻辑回归模型梯度下降法跟牛顿法比较

1.综述 机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解.梯度下降的目的是直接求解目标函数极小值,而牛顿法则变相地通过求解目标函数一阶导为零的参数值,进而求得目标函数最小值.在逻辑回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法. 2 梯度下降法 2.1算法描述 1.确定误差范围和下降的步长,确定函数的导函数 2.while(|新值 -旧值| >误差) 3.       旧值=新值 4.       新值=初始值-步长*导函数

『科学计算_理论』优化算法:梯度下降法&amp;牛顿法

梯度下降法 梯度下降法用来求解目标函数的极值.这个极值是给定模型给定数据之后在参数空间中搜索找到的.迭代过程为: 可以看出,梯度下降法更新参数的方式为目标函数在当前参数取值下的梯度值,前面再加上一个步长控制参数alpha.梯度下降法通常用一个三维图来展示,迭代过程就好像在不断地下坡,最终到达坡底.为了更形象地理解,也为了和牛顿法比较,这里我用一个二维图来表示: 懒得画图了直接用这个展示一下.在二维图中,梯度就相当于凸函数切线的斜率,横坐标就是每次迭代的参数,纵坐标是目标函数的取值.每次迭代的过程

FISTA的由来:从梯度下降法到ISTA &amp; FISTA

前言: FISTA(A fast iterative shrinkage-thresholding algorithm)是一种快速的迭代阈值收缩算法(ISTA).FISTA和ISTA都是基于梯度下降的思想,在迭代过程中进行了更为聪明(smarter)的选择,从而达到更快的迭代速度.理论证明:FISTA和ISTA的迭代收敛速度分别为O(1/k2)和O(1/k). 本篇博文先从解决优化问题的传统方法"梯度下降"开始,然后引入ISTA,再上升为FISTA,最后在到其应用(主要在图像的去模糊方

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

这几天在看<统计学习方法>这本书,发现 梯度下降法 在 感知机 等机器学习算法中有很重要的应用,所以就特别查了些资料.  一.介绍       梯度下降法(gradient descent)是求解无约束最优化问题的一种常用方法,有实现简单的优点.梯度下降法是迭代算法,每一步需要求解目标函数的梯度向量.  二.应用场景      1.给定许多组数据(xi, yi),xi (向量)为输入,yi为输出.设计一个线性函数y=h(x)去拟合这些数据. 2.感知机:感知机(perceptron)为二类分类