1. > 智能数码 >

梯度下降法原理 梯度下降法视频教程

关于对率回归的求解,梯度下降和解析解相比有什么特点和优势,为什么?

梯度下降法是一个最优化算法,通常也称为最速下降法。最速下降法是求解无约束优化问题最简单和最古老的方法之一,最速下降法是用负梯度方向为搜索方向的,最速下降法越接近目标值,步长越小,前进越慢。梯度下降核心思想是基于偏导数原理求函数最小值,因此要求原函数的二次导数恒大于等于0(可证)。沿偏导数梯度下降最快(用泰勒公式证明)那么问题来了,基于偏导数,那么理论上只要有跟线性公式系数数量相等的样本数,就可求出系数值。为何需要梯度下降?主要有两点:1、数据存在噪声,根据有限样本可能求不出理论解,或者理论解包含了噪声信息。2、划分样本的超平面存在多解,偏导理论解只是针对有限样本信息的最有划分超平面。

随机梯度下降法原理和步骤

随机梯度下降主要用来求解类似于如下求和形式的优化问题:

[公式]

梯度下降法:

[公式]

当[公式]很大时,每次迭代计算所有的[公式]会非常耗时。

随机梯度下降的想法就是每次在[公式]中random选取一个计算代替如上的[公式],以这个随机选取的方向作为下降的方向。

[公式][公式]

由于[公式], 当选取step size [公式]时,算法在期望的意义下收敛。

注意到在[公式] 靠近极小值点[公式]时,[公式],这导致随机梯度下降法精度低。由于方差的存在,要使得算法收敛,就需要[公式]随[公式]逐渐减小。因此导致函数即使在强凸且光滑的条件下,收敛速度也只有[公式]. 后来提出的变种SAG,SVRG,SDCA都是在降方差,为了保证在[公式]时,方差趋于0。以上提到的几种变种都能达到线性收敛速度。

梯度下降法原理 梯度下降法视频教程梯度下降法原理 梯度下降法视频教程


梯度下降和牛顿法

这里主要讨论梯度下降法和牛顿法的原理

形式: ,其中 为损失函数, 为模型参数

下面将推导这一形式的由来.

首先,需要用到多元函数的一级泰勒展开式:

如果忽略高阶无穷小,即 是 的 领域,那么等号就会变为近似相等,即:

要使得损失函数 下降更快,只需要等式右边得到最小值。

由 可知,当 与 的夹角余弦 时等式右边可取得最小值。

由于 对应的方向单位向量可表示为:

当 与 的方向相反(夹角余弦 )时有: ,其中 为正数。由于分母为标量,因此可以合并到 中,化简为:

需要注意的是, 和 要离的充分近,也就是在它的 邻域里面,才能忽略掉泰勒展开里面的一次以上的项,否则就不能忽略它了,它就不是高阶无穷小了,约等于的条件就不成立了,所以 步长不能够太大,由此我们就得到了梯度下降法的公式。

形式: , 其中为Hessian矩阵

下面将推导这一形式的由来。

首先,需要用到多元函数的二级泰勒展开式:

如果忽略高阶无穷小,即 是 的 邻域,那么等号就会变为近似相等,即:

如果是二次函数的话,我们找它梯度等于0的点是非常好找的,基于约等于的式子,两边同时求导。

因为

且H是对称矩阵,所以:

下面可以求解一次方程, 如果 hessian 矩阵可逆 ,就可以两边乘上 H 的逆矩阵,令 ,则

两边同时乘H 的逆矩阵,有

注意一下H和 都是 点处取得的,稍作调整为:

有同学肯定会说,那我们去求解方程组,那不是一次就可以求得梯度等于 0 的点 了嘛, 但是因为我们忽略了后面的高阶无穷小,所以我们只是近似的找到了梯度等于 0 的点,但 是它并没有真正找到,所以我们下次要继续去用这个公式去迭代。

迭代优化时会加上步长:

如果我们的 是二次函数的话,牛顿法一步就可以收敛,前提是步长不做设置,等于 1 的 时候就可以了,这是因为如果原函数 是二次函数的话,泰勒展开里面就不是约等于,而是直接等于。

梯度下降法和牛顿法的关系

梯度下降法只用到了一阶导数的信息,牛顿法既用到了一阶导数的信息,也用到了二阶导数的信息。

梯度下降法是用线性函数来代替目标函数,牛顿法是用二次函数来代替目标函数, 所以说牛顿法的收敛速度是更快的。

但是牛顿法也有它的局限,hessian 矩阵不一定可逆,第二个即使存在,我们来解一个线性 方程组,当 hessian 矩阵规模很大,解线性方程组是非常耗时的,因此出现了一种改进的算 法叫拟牛顿法

梯度下降法原理和步骤

大部分的机器学习模型里有直接或者间接地使用了梯度下降的算法。虽然不同的梯度下降算法在具体的实现细节上会稍有不同,但是主要的思想是大致一样的。梯度下降并不会涉及到太多太复杂的数学知识,只要稍微了解过微积分里导数的概念,就足够完全理解梯度下降的思想了。

梯度下降的目的

绝大多数的机器学习模型都会有一个损失函数。比如常见的均方误差(Mean Squared Error)损失函数:

[公式] (1)

其中, [公式] 表示样本数据的实际目标值, [公式] 表示预测函数 [公式] 根据样本数据 [公式] 计算出的预测值。从几何意义上来说,它可以看成预测值和实际值的平均距离的平方。(关于更多的损失函数的介绍,可以参见这篇文章。)

损失函数用来衡量机器学习模型的精确度。一般来说,损失函数的值越小,模型的精确度就越高。如果要提高机器学习模型的精确度,就需要尽可能降低损失函数的值。而降低损失函数的值,我们一般采用梯度下降这个方法。所以,梯度下降的目的,就是为了最小化损失函数。

梯度下降的原理

寻找损失函数的最低点,就像我们在山谷里行走,希望找到山谷里最低的地方。那么如何寻找损失函数的最低点呢?在这里,我们使用了微积分里导数,通过求出函数导数的值,从而找到函数下降的方向或者是最低点(极值点)。

损失函数里一般有两种参数,一种是控制输入信号量的权重(Weight, 简称 [公式] ),另一种是调整函数与真实值距离的偏差(Bias,简称 [公式] )。我们所要做的工作,就是通过梯度下降方法,不断地调整权重 [公式] 和偏差b,使得损失函数的值变得越来越小。

假设某个损失函数里,模型损失值 [公式] 与权重 [公式] 有下图这样的关系。实际模型里,可能会有多个权重 [公式] ,这里为了简单起见,举只有一个权重 [公式] 的例子。权重 [公式] 目前的位置是在A点。此时如果求出A点的梯度 [公式] ,便可以知道如果我们向右移动,可以使损失函数的值变得更小。

通过计算梯度,我们就可以知道 [公式] 的移动方向,应该让 [公式] 向右走而不是向左走,也可以知道什么时候会到达最低点(梯度为0的地方)。

上面的例子里只出现了一个权重 [公式] , 实际的项目里样本数据会有很多个。对于每一个样本数据,我们都可以求出一个权重的梯度。这个时候,我们需要把各个样本数据的权重梯度加起来,并求出它们的平均值,用这个平均值来作为样本整体的权重梯度。

梯度下降法原理和步骤

原理:

寻找损失函数的最低点,就像我们在山谷里行走,希望找到山谷里最低的地方。那么如何寻找损失函数的最低点呢?在这里,我们使用了微积分里导数,通过求出函数导数的值,从而找到函数下降的方向或者是最低点(极值点)。

步骤:

(1) 计算第 i 个训练数据的权重和偏差b相对于损失函数的梯度。于是我们最终会得到每一个训练数据的权重和偏差的梯度值。

(2) 计算所有训练数据权重的梯度的总和。

(3) 计算所有训练数据偏差的梯度的总和。

2. 做完上面的计算之后,我们开始执行下面的计算:

(1) 使用上面第(2)、(3)步所得到的结果,计算所有样本的权重和偏差的梯度的平均值。

(2) 使用下面的式子,更新每个样本的权重值和偏差值。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, website.service08@gmail.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息