梯度下降法与实现(牛顿法比较)

目录


一、梯度下降算法

  • 1.梯度下降的相关概念

  • 2.梯度下降的数学原理

  • (1)对数损失函数

  • (2)数学推导过程

  • (3)梯度下降算法实例

  • (3-1)单变量函数的梯度下降

  • (3-2)多变量函数的梯度下降

二、牛顿法
三、梯度下降算法与牛顿法对比


梯度算法适用于求极值的问题,极值包括(极大值、极小值),所以一般求极大值使用梯度上升法,求极小值采用梯度下降算法

梯度下降法每次学习不断更新权值,最后收敛于极值点,凸函数收敛于全局极值点,非凸函数可能收敛于局部极值点。如下图所示,在非凸函数上,导致收敛于局部极值点。
局部最优解不一定是全局最优解,全局最优解一定是局部最优解。
在这里插入图片描述

梯度就是某一函数在某点得方向倒数闲着该方向取得最大值,即函数在当前位置的导数,可以简述为该公式在这里插入图片描述线上相近两点做差当在这里插入图片描述逐渐趋近于0时,α值存在,即函数在此点可导,α为此处的导数。

梯度下降算法

1.是最优化每个样本的损失函数。每一次迭代得到的损失函数不是,每次每次向着全局最优的方向,但是大体是向着全局最优,最终的结果往往是在最优解的附近。
2.当目标函数是凸函数的时候,结果一定是全局最优解。
3.适合大规模样本训练的情况。

一、梯度下降的相关概念

  • 步长 :步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度,用上面的图中所示,步长就是在当前这一步所在的位置沿着最陡峭最容易下山的位置走的那一步的长度。
  • 特征 :指的是样本中输入部分,比如2个单特征的样本(x(0),y(0)),(x(1),y(1)),则第一个样本特征为x(0),第一个样本输出为y(0)。
  • 假设函数(hypothesis function):在监督学习中,为了拟合输入样本,而使用的假设函数,记为hθ(x)。比如对于单个特征的m个样本(x(i),y(i))(i=1,2,…m),可以采用拟合函数如下: hθ(x)=θ0+θ1x。
  • 损失函数(loss function):为了评估模型拟合的好坏,通常用损失函数来度量拟合的程度。损失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数。在线性回归中,损失函数通常为样本输出和假设函数的差取平方。比如对于m个样本(xi,yi)(i=1,2,…m),采用线性回归,损失函数为:

在这里插入图片描述
    其中xi表示第i个样本特征,yi表示第i个样本对应的输出,hθ(xi)为假设函数。

二、梯度下降的数学原理
卷积神经网络中使用损失函数来衡量数据的拟合程度,不断使损失函数最小,即求损失函数的最小值。使用梯度下降求最优解(最小值),除此之外,牛顿法也可求最优解,在下一节文中会对两种算法做对比。

1.对数损失函数
接下来就是重点了,在利用w系数向量与特征x求得结果时,如何度量该结果的可信程度?这里就要使用到损失函数,我们用损失函数衡量预测值和真实值差异,不同于线性回归的最小二乘法,逻辑回归中通常使用对数损失函数,下面解释。

在这里插入图片描述

并且这里强调一点,可能有人一直搞不清楚逻辑回归中哪里用到了梯度下降算法,或者逻辑回归中是如何使用梯度下降算法的。现在就是答案了,逻辑回归中我们使用梯度下降来最优化损失函数J(w),当该函数值最小,即拟合效果最佳 。

现在来说说为什么不使用平方损失函数?
通过数学上的解释:设置损失函数的目的是接下来通过最优化方法求得损失函数的最小值,损失最小即代表模型最优。在最优化求解中,只有凸函数才能求得全局最小值,非凸函数往往得到的是局部最优。然而,平方损失函数用于逻辑回归求解时得到的是非凸函数,即大多数情况下无法求得全局最优。所以,这里使用了对数损失函数避免这个问题。

在这里插入图片描述

(矩阵中即每条样本的每个特征与对应误差矩阵相乘,再除样本数)

有了梯度方向后,又要引入一个概念 ——步长,由于上面求得的只是最值的移动方向,而并没有距离上的移动,所以引入一个参数,步长一般又叫学习率,该值太大局部线性近似就不成立,偏差较大;该值太小收敛太慢,导致一个长时间的训练。所以后续调参需要注意该值的选择。

有了学习率与梯度方向,现在就可以通过多次迭代使用梯度下降来优化对数损失函数,过程如下:

在这里插入图片描述

2.数学推导过程
简单来说,泰勒展开式的核心思想就是利用函数的局部线性相似这个概念。以一阶泰勒展开式为例:

在这里插入图片描述

在这里插入图片描述
用上面的公式与图形来进行阐述,首先凸函数的某一小段由上图的粉色曲线表示,其中红色直线为粉色曲线的近似线性拟合。该直线的斜率等于函数在处的导数。根据直线方程公式,很容易推导出的近似表达式为上面的公式:

在这里插入图片描述

简述一下推导过程,定义线性公式y = kx + b,表示在w0处的导数,也就是梯度表示为▽f(w0),接着可以带入点(w0,f(w0)),得到b值,从而得到了y = ▽f(w0)x + f(w0) - ▽f(w0)w0,最后再带入点(w, f(w))便得到了上面的最终公式。
f(w) ≈ f(w0) + (w - w0)▽f(w0)便是我们利用一阶泰勒展开式推导得出,而其中主要利用的数学思想就是曲线函数的局部线性拟合相似。
在了解了一阶泰勒展开式后,又该如何去理解梯度下降算法呢?接下来的重点就是如何去推导出梯度下降算法。

从上面的推导首先我们知道了一阶泰勒公式如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(迫于时间关系,从其他文章摘抄)

3.梯度下降算法实例

(1)单变量函数的梯度下降

我们假设有一个单变量的函数
在这里插入图片描述
函数的微分
在这里插入图片描述
初始化,起点为
在这里插入图片描述
学习率为
在这里插入图片描述
根据梯度下降的计算公式
在这里插入图片描述
我们开始进行梯度下降的迭代计算过程:
在这里插入图片描述
如图,经过四次的运算,也就是走了四步,基本就抵达了函数的最低点。
在这里插入图片描述
(2)多变量函数的梯度下降

我们假设有一个目标函数
在这里插入图片描述
现在要通过梯度下降法计算这个函数的最小值。我们通过观察就能发现最小值其实就是 (0,0)点。但是接下来,我们会从梯度下降算法开始一步步计算到这个最小值!
我们假设初始的起点为:
在这里插入图片描述
初始的学习率为:
在这里插入图片描述
函数的梯度为:
在这里插入图片描述
进行多次迭代:
在这里插入图片描述
我们发现,已经基本靠近函数的最小值点
在这里插入图片描述

二、 牛顿法

首先牛顿法是求解函数值为0时的自变量取值的方法。
利用牛顿法求解目标函数的最小值其实是转化成求使目标函数的一阶导为0的参数值。这一转换的理论依据是,函数的极值点处的一阶导数为0.

其迭代过程是在当前位置x0求该函数的切线,该切线和x轴的交点x1,作为新的x0,重复这个过程,直到交点和函数的零点重合。此时的参数值就是使得目标函数取得极值的参数值。
其迭代过程如下:
在这里插入图片描述
迭代的公式如下:
在这里插入图片描述
当θ是向量时,牛顿法可以使用下面式子表示:
在这里插入图片描述
其中H叫做海森矩阵,其实就是目标函数对参数θ的二阶导数。

三、牛顿法和梯度下降法的比较

1.牛顿法:
是通过求解目标函数的一阶导数为0时的参数,进而求出目标函数最小值时的参数。
收敛速度很快。
海森矩阵的逆在迭代过程中不断减小,可以起到逐步减小步长的效果。

缺点:海森矩阵的逆计算复杂,代价比较大,因此有了拟牛顿法。

2.梯度下降法:是通过梯度方向和步长,直接求解目标函数的最小值时的参数。
越接近最优值时,步长应该不断减小,否则会在最优值附近来回震荡。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绛洞花主敏明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值