0%
boxmoe_header_banner_img

加载中

解决Optimization失败


avatar
mizuki 2026年9月15日 2026年9月28日 18

引言

在任务管理(任务攻略 – 小园得志)那篇文章中我们分析过,有时loss过大并不是model的原因,而是因为optimization失败的原因,这篇文章来解决optimization失败的问题

一.为什么会Optimization失败

造成optimization失败的原因一般是gradient很低,但是loss很高,造成了local minima或者saddle point,这两个统称为critical point

二.概念

相信大家一定听过local minima,但是对saddle point的概念还比较陌生,这里对这两个概念再进行讲解区分

  • 1. local minima(局部最小值)

local minima用一个山谷来比喻,相当于掉到了一个山谷,在当前位置附近,没有下降方向,gradient = 0 或接近0,算法容易停在这里

  • 2. saddle point(鞍点)

saddle point更像一个马鞍,某些方向 loss 增大,某些方向 loss 减小,只是目前看似陷入了死胡同,其实是有解决方法的

这两种概念的关系就如下图所示:

三.如何判断

这里主要是根据泰勒公式进行判断,给定一组参数θ,计算θ附近的loss function形状,具体公示如下:

这里的g是指gradient(梯度),g 是loss function的一阶信息,用来表示当前点loss变化最快的方向

H指的是hessian(海森矩阵),描述loss function在不同方向上的二阶变化,也就是曲率,并且也是用来判断这两种类型的关键,我们接着往下看

当达到critical point的时候,gradient为0,关于g的参数就为0,如图所示:

接着我们用eigen values(方向曲率)进行判断,而H就是判断eigen values的关键

先设v = θ – θ’

可以得到这样一个等式:

Hv=λv

v:eigen vector(特征方向)

λ:eigen value(这个方向上的曲率)

为什么 Hessian 可以判断 eigen value 正负?

因为我们看:vTHvv^THv

把:Hv=λvHv=\lambda v

代进去:vTHv=vT(λv)v^THv=v^T(\lambda v)

得到:=λvTv=\lambda v^Tv

因为:vTv>0v^Tv>0

所以:vTHvv^THv

的正负完全由:λ\lambda

决定

因此Hessian H 的结构决定 eigen values 的正负,于是有以下判断:

1.H is positive definite

所有的eigen values > 0,为local minima

2.H negative definite

所有的eigen values < 0,为local maxima

3.不同方向上的曲率符号不同,Hessian的eigen values中同时存在正值和负值

这种则为saddle point

四.如何更新参数

首先我们要确认是saddle point,接下来就可以更新参数了,目前我还不会解决local minima的方法

  • 1.寻找负曲率的方向

也就是寻找H中eigen values <0 的情况,在这个方向上,L(θ)<L(θ′),因此loss会下降

  • 2.如何寻找负曲率的方向

利用 Hessian 的 eigen vector。

满足:Hu=λuHu=\lambda u

其中:

  • uu:eigen vector(方向)
  • λ\lambda:eigen value(这个方向的曲率)

代入:uTHuu^THu

得到:uTHu=uT(λu)u^THu = u^T(\lambda u)

所以:=λuTu=\lambda u^Tu

因为:uTu=∣∣u∣∣2>0u^Tu=||u||^2>0

所以:

符号由:λ\lambda

决定

  • 3. 更新参数

最后按照这个式子进行更新,𝜽 =𝜽′+αu

  • θ′:当前 saddle point
  • u:下降方向
  • α:步长
  • 4.不常用原因

虽然这个可以解决saddle point的问题,但其实这个方法是不常用的,因为耗费hessian很高,计算hessian过于贵

所以我们通常还是通过避开saddle point以此得到结果

五.哪个更常见

对于local minima和saddle point来说,saddle point更常见,因此不用担心,就算遇到了critical point,一般也是可以解决的

总结

这就是全篇内容了,希望对你有帮助

上一次更新已经跑远了✨ 计算中...
(‾◡◝) 本内容里的一些消息,可能已经跟不上时间啦~


评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字

插入代码
后退
前进
刷新
复制
粘贴
全选
删除
返回首页
0%
目录
顶部
底部
📖 文章导读