次梯度法相关概念

参考:
https://blog.csdn.net/bitcarmanlee/article/details/51896348
https://en.wikipedia.org/wiki/Subgradient_method
https://en.wikipedia.org/wiki/Subderivative#The_subgradient
https://zhuanlan.zhihu.com/p/36784881 有次梯度的例子
https://www.cnblogs.com/connorzx/p/4797194.html

基础概念

次导数

如果函数f(x)在某点不可导,那么在该点函数f(x)就不存在导数,但在该点会存在次导数。
次导数,即通过该不可导点(x0,f(x0))的一条直线的斜率,该直线要在函数图像之下或者和函数图像重合,不能超过函数图像或与函数图像相交。即可以用下图来表示:
这里写图片描述
图中蓝色线段表示函数图像f(x),红色线代表函数f(x)在x0处的次导数,而图中的函数并不是处处可微。
严格地说,凸函数f:I→R在点x0的次导数,是实数c使得:
这里写图片描述

对于I内所有的x,我们可以证明,在点x0的次导数的集合是一个非空闭区间[a, b],其中a和b是单侧极限。
这里写图片描述
它们一定存在并满足a≤b。
所有次导数的集合[a,b]称为函数f在x0处的次微分

次微分

直观地说,所有上图中红色直线的斜率的集合被称为f(x)在x0处的次微分,也就是说函数在某点的次微分是该点次导数的集合。特别的,当函数在x0点可导时,次微分只有一个点组成,这个点就是函数在x0处的导数。
举个例子:
考虑凸函数f(x)=|x| ,由于函数在f(x)不可导,在x0=0点的次微分是区间[−1, 1]。当x0<0时,次微分是单元素集合{-1},而x0 >0 ,次微分则是单元素集合{1}。
值得注意的是,次梯度和次微分只是对凸函数定义的。

梯度

这里写图片描述
学了好久的梯度居然忘了梯度的具体定义,这里贴上。也就是说,梯度中每一个元素都是多元函数对某个变量求的偏导数。

次梯度

需要说明的是上面的概念是对一元函数的而言的,当然次导数和次微分也可以推广到多元函数。
结合上面梯度的定义来看,次导数是次梯度的一种特殊情况,即函数f只是一元函数。在忽略变量个数时,可以认为次导数和次梯度是一个概念。
一维次梯度称为次导数,通过求函数在某点的每一分量的次导数(对应可导中求对每个变量求偏导)可以求出函数在该点的次梯度。在一元函数中,某点所有次导数的集合被称为次微分,而在多元函数中,所有次梯度的集合被称为次微分。函数f在某不可微点的子梯度不唯一,特别的,当f可微的时候,子梯度和梯度等价。【不知道这样理解是否正确】
次梯度的定义为:
这里写图片描述
值得注意的是,上面次梯度定义式中的y是针对函数f中所有的点。这里次梯度g就是一个向量,而不是像次导数的定义式中c只是一个实数

次梯度法

次梯度法(subgradient method)是传统梯度下降方法的拓展,用来处理不可微(non-differentiable )的凸函数。它的优势是比传统方法处理问题范围大,但劣势是算法收敛速度慢。而传统的梯度下降方法只能处理可导函数。
经典的子梯度迭代为:
这里写图片描述
这里写图片描述
值得注意的是,不同于用于可微函数的梯度下降算法,其梯度的反方向一定是下降的,次梯度法的反方向并不一定朝函数值减小的方向,也有可能朝函数值增大的方向。即负次梯度方向不一定是下降方向。所以常用的方式是一直保留最小的函数值,直到结果收敛。这里写图片描述
如下,用一张图片表示次梯度在函数图像上的位置及其在某点利用某次梯度逼近该函数在该点的方程的形式。x1点可导,x2点不可导。
这里写图片描述
这里多说一句,其实无论是梯度法还是次梯度法,本质上我们都在使用一阶泰勒展开式的原理去逼近在某点的原函数。正如泰勒展开式的思想所述,将目标函数在某点附近展开为泰勒(Taylor)多项式来逼近原函数。

例子

摘抄了下面的2个例子,加深一下自己的理解。
这里使用L1范数求出x=0点时的次微分。
这里写图片描述
对于L1范数,可以换一种写法这里写图片描述,再根据次微分就是区间的积就可以算得上面的结果。

具体的问题

这个问题中目标函数只是一维的,所以次梯度的形式就比较简单。
这里写图片描述

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 梯度下降是一种常用的优化算法,可用于求解损失函数的最小值。其基本思想是通过不断迭代调整参数,使得损失函数的值逐渐减小,直到达到最小值。具体而言,梯度下降通过计算损失函数对参数的导数,得到当前位置下降最快的方向,然后按照该方向更新参数。这个过程会不断重复,直到达到一定的迭代数或者损失函数的值收敛到一个阈值。需要注意的是,在实际应用中,梯度下降还需要设置学习率等超参数,以控制每迭代的步长大小。 ### 回答2: 梯度下降是一种最优化算法,用于寻找函数的最小值或最大值。该算法的基本思想是通过迭代的方式不断调整参数的取值,直到达到最优解。 在梯度下降中,首先需要定义一个目标函数,也被称为损失函数,用于衡量参数的取值对应的模型的性能。然后,通过对损失函数进行求导,得到当前参数下的梯度(即目标函数在当前点的斜率),并根据梯度的方向来调整参数的取值。 作为一个迭代算法,梯度下降通过不断地迭代更新参数,直到达到损失函数的最小值。具体地,每一迭代都根据当前参数的梯度和一个称为学习率的超参数来更新参数的取值。学习率决定了每迭代中参数更新的幅度,较大的学习率可能导致参数在最小值附近震荡不收敛,而较小的学习率则可能导致收敛速度过慢。 在梯度下降中,有两种常见的策略可以选择。一种是批量梯度下降(Batch Gradient Descent),每迭代都使用所有样本计算梯度;另一种是随机梯度下降(Stochastic Gradient Descent),每迭代只使用一个样本计算梯度。这两种策略各有优势,批量梯度下降通常更稳定且收敛速度较快,而随机梯度下降则更适合处理大规模数据集。 总的来说,梯度下降是一种基于迭代的最优化算法,通过调整参数的取值,使损失函数达到最小值,从而得到模型的最优解。该算法的灵活性和广泛应用使其成为机器学习和深度学习等领域中不可或缺的优化手段。 ### 回答3: 梯度下降是一种常用的优化算法,用于寻找函数的最小值点。该算法基于导数的概念,通过不断更新参数来进行迭代优化。 梯度下降的过程如下图所示: 1. 首先初始化参数θ为任意值,例如设为0。 2. 然后计算函数的偏导数(梯度)值,表示为∇f(θ)。 3. 根据梯度的方向和大小,更新参数θ,即θ = θ - α∇f(θ),其中α是学习率,控制参数更新的步伐大小。 4. 重复步骤2和3,直到达到预定的迭代数或达到收敛条件。 5. 最终得到的θ即为函数的最小值点。 梯度下降的思想是通过不断沿着梯度的方向进行迭代和调整,逐步接近函数的最小值。梯度下降的关键在于计算导数和选择合适的学习率。梯度的方向指向函数变化最快的方向,因此在更新参数时,按照梯度的负方向进行更新可以逐渐逼近最小值。 需要注意的是,梯度下降是一种局部优化算法,即搜索的最小值点可能是局部最小值而非全局最小值。为了减少这种情况的发生,可以通过调整学习率、设置合适的初始参数、使用更高级的算法等来进一步提高优化的效果。 总之,梯度下降是一种通过迭代调整参数来优化函数的方,是机器学习中常用的基本算法之一。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值