邢台wap网站建设,网站后台图片不显示,大连模版网站,上海搬家公司收费标准2.5 梯度下降方法介绍 学习目标 掌握梯度下降法的推导过程知道全梯度下降算法的原理知道随机梯度下降算法的原理知道随机平均梯度下降算法的原理知道小批量梯度下降算法的原理 上一节中给大家介绍了最基本的梯度下降法实现流程#xff0c;本节我们将进一步介绍梯度下降法的详细… 2.5 梯度下降方法介绍 学习目标 掌握梯度下降法的推导过程知道全梯度下降算法的原理知道随机梯度下降算法的原理知道随机平均梯度下降算法的原理知道小批量梯度下降算法的原理 上一节中给大家介绍了最基本的梯度下降法实现流程本节我们将进一步介绍梯度下降法的详细过算法推导过程和常见的梯度下降算法。 1 详解梯度下降算法 1.1梯度下降的相关概念复习 在详细了解梯度下降的算法之前我们先复习相关的一些概念。 步长(Learning rate) 步长决定了在梯度下降迭代的过程中每一步沿梯度负方向前进的长度。用前面下山的例子步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。特征(feature) 指的是样本中输入部分比如2个单特征的样本(x(0),y(0)),(x(1),y(1))(x^{(0)},y^{(0)}),(x^{(1)},y^{(1)})(x(0),y(0)),(x(1),y(1)),则第一个样本特征为x(0)x^{(0)}x(0)第一个样本输出为y(0)y^{(0)}y(0)。假设函数(hypothesis function) 在监督学习中为了拟合输入样本而使用的假设函数记为hθ(x)h_\theta (x)hθ(x)。比如对于单个特征的m个样本(x(i),y(i))(i1,2,...m)(x^{(i)},y^{(i)})(i1,2,...m)(x(i),y(i))(i1,2,...m),可以采用拟合函数如下 hθ(x)θ0θ1xh_\theta (x)\theta _0\theta _1xhθ(x)θ0θ1x。损失函数(loss function) 为了评估模型拟合的好坏通常用损失函数来度量拟合的程度。损失函数极小化意味着拟合程度最好对应的模型参数即为最优参数。在线性回归中损失函数通常为样本输出和假设函数的差取平方。比如对于m个样本(xi,yi)(i1,2,...m)(x_i,y_i)(i1,2,...m)(xi,yi)(i1,2,...m)采用线性回归损失函数为 其中xix_ixi表示第i个样本特征yiy_iyi表示第i个样本对应的输出hθ(xi)h_\theta (x_i)hθ(xi)为假设函数。 1.2 梯度下降法的推导流程
1) 先决条件 确认优化模型的假设函数和损失函数。
比如对于线性回归假设函数表示为 hθ(x1,x2,...,xn)θ0θ1x1...θnxnh_\theta (x_1,x_2,...,x_n)\theta _0\theta _1x_1...\theta _nx_nhθ(x1,x2,...,xn)θ0θ1x1...θnxn, 其中θi(i0,1,2...n)\theta _i (i 0,1,2... n)θi(i0,1,2...n)为模型参数xi(i0,1,2...n)x_i (i 0,1,2... n)xi(i0,1,2...n)为每个样本的n个特征值。这个表示可以简化我们增加一个特征x01x_01x01 这样 同样是线性回归对应于上面的假设函数损失函数为 2) 算法相关参数初始化,
主要是初始化θ0,θ1...,θn\theta _0,\theta _1...,\theta _nθ0,θ1...,θn,算法终止距离ε以及步长α\alphaα 。在没有任何先验知识的时候我喜欢将所有的θ\thetaθ 初始化为0 将步长初始化为1。在调优的时候再 优化。
3) 算法过程
3.1) 确定当前位置的损失函数的梯度对于θi\theta _iθi,其梯度表达式如下 3.2) 用步长乘以损失函数的梯度得到当前位置下降的距离即 对应于前面登山例子中的某一步。
3.3) 确定是否所有的θi\theta _iθi,梯度下降的距离都小于ε如果小于ε则算法终止当前所有的θi(i0,1,...n)\theta _i(i0,1,...n)θi(i0,1,...n)即为最终结果。否则进入步骤4.
4)更新所有的θ\thetaθ 对于θi\theta _iθi其更新表达式如下。更新完毕后继续转入步骤1. 下面用线性回归的例子来具体描述梯度下降。假设我们的样本是: 损失函数如前面先决条件所述 则在算法过程步骤1中对于θi\theta _iθi 的偏导数计算如下 由于样本中没有x0x_0x0上式中令所有的x0jx_0^jx0j为1.
步骤4中θi\theta _iθi的更新表达式如下 从这个例子可以看出当前点的梯度方向是由所有的样本决定的加1m\frac{1}{m}m1 是为了好理解。由于步长也为常数他们的乘积也为常数所以这里α\alphaα¨NBSP;1m\frac{1}{m}m1 可以用一个常数表示。 在下面一节中咱们会详细讲到梯度下降法的变种他们主要的区别就是对样本的采用方法不同。这里我们采用的是用所有样本。
2 梯度下降法大家族
首先我们来看一下常见的梯度下降算法有
全梯度下降算法(Full gradient descent),随机梯度下降算法(Stochastic gradient descent),小批量梯度下降算法(Mini-batch gradient descent),随机平均梯度下降算法(Stochastic average gradient descent)
它们都是为了正确地调节权重向量通过为每个权重计算一个梯度从而更新权值使目标函数尽可能最小化。其差别在于样本的使用方式不同。
2.1 全梯度下降算法(FG)
批量梯度下降法是梯度下降法最常用的形式具体做法也就是在更新参数时使用所有的样本来进行更新。
计算训练集所有样本误差对其求和再取平均值作为目标函数。
权重向量沿其梯度相反的方向移动从而使当前目标函数减少得最多。
其是在整个训练数据集上计算损失函数关于参数θ\thetaθ 的梯度 由于我们有m个样本这里求梯度的时候就用了所有m个样本的梯度数据。 注意
因为在执行每次更新时我们需要在整个数据集上计算所有的梯度所以批梯度下降法的速度会很慢同时批梯度下降法无法处理超出内存容量限制的数据集。批梯度下降法同样也不能在线更新模型即在运行的过程中不能增加新的样本。
2.2 随机梯度下降算法(SG)
由于FG每迭代更新一次权重都需要计算所有样本误差而实际问题中经常有上亿的训练样本故效率偏低且容易陷入局部最优解因此提出了随机梯度下降算法。
其每轮计算的目标函数不再是全体样本误差而仅是单个样本误差即每次只代入计算一个样本目标函数的梯度来更新权重再取下一个样本重复此过程直到损失函数值停止下降或损失函数值小于某个可以容忍的阈值。
此过程简单高效通常可以较好地避免更新迭代收敛到局部最优解。其迭代形式为 但是由于SG每次只使用一个样本迭代若遇上噪声则容易陷入局部最优解。
2.3 小批量梯度下降算法(mini-batch)
小批量梯度下降算法是FG和SG的折中方案,在一定程度上兼顾了以上两种方法的优点。
每次从训练样本集上随机抽取一个小样本集在抽出来的小样本集上采用FG迭代更新权重。
被抽出的小样本集所含样本点的个数称为batch_size通常设置为2的幂次方更有利于GPU加速处理。
特别的若batch_size1则变成了SG若batch_sizen则变成了FG.其迭代形式为 上式中也就是我们从m个样本中选择x个样本进行迭代(1xm), 2.4 随机平均梯度下降算法(SAG)
在SG方法中虽然避开了运算成本大的问题但对于大数据训练而言SG效果常不尽如人意因为每一轮梯度更新都完全与上一轮的数据和梯度无关。
随机平均梯度算法克服了这个问题在内存中为每一个样本都维护一个旧的梯度随机选择第i个样本来更新此样本的梯度其他样本的梯度保持不变然后求得所有梯度的平均值进而更新了参数。
如此每一轮更新仅需计算一个样本的梯度计算成本等同于SG但收敛速度快得多。
其迭代形式为
θiθi−αn(hθ(x0(j),x1(j),...xn(j))−yj)xi(j)\theta _i\theta _i-\frac{\alpha }{n}(h_\theta (x^{(j)}_0,x^{(j)}_1,...x^{(j)}_n)-y_j)x_i^{(j)}θiθi−nα(hθ(x0(j),x1(j),...xn(j))−yj)xi(j)
我们知道sgd是当前权重减去步长乘以梯度得到新的权重。sag中的a就是平均的意思具体说就是在第k步迭代的时候我考虑的这一步和前面n-1个梯度的平均值当前权重减去步长乘以最近n个梯度的平均值。n是自己设置的当n1的时候就是普通的sgd。这个想法非常的简单在随机中又增加了确定性类似于mini-batch sgd的作用但不同的是sag又没有去计算更多的样本只是利用了之前计算出来的梯度所以每次迭代的计算成本远小于mini-batch sgd和sgd相当。效果而言sag相对于sgd收敛速度快了很多。这一点下面的论文中有具体的描述和证明。SAG论文链接https://arxiv.org/pdf/1309.2388.pdf
拓展阅读 梯度下降法算法比较和进一步优化
3 小结
全梯度下降算法(FG)【知道】 在进行计算的时候,计算所有样本的误差平均值,作为我的目标函数随机梯度下降算法(SG)【知道】 每次只选择一个样本进行考核小批量梯度下降算法(mini-batch)【知道】 选择一部分样本进行考核随机平均梯度下降算法(SAG)【知道】 会给每个样本都维持一个平均值,后期计算的时候,参考这个平均值