local minima 的问题如何解决

🚀 在初始神经网络那一节(链接如下:初识机器学习)是遇到了两个问题,第一个是在求解函数未知参数数时会遇到local minima的问题,在哪里我们并没有过多解释,就是说一般遇不到并且很好解决;第二个问题是当时使用的是线性模型,大大限制住了准确率,所以在第二节(线性模型到神经网络)就将模型变得有弹性进化为了神经网路以及深度网络;而这一节将进一步了解local minima的问题

1)优化求解失败

在定义好模型后,就进入训练阶段,即得出相应的损失函数(Loss函数),然后对损失函数使用梯度下降的方法求解最优的参数,但是使用梯度下降求解参数的时候可能就会卡在local minima(局部最优),从而导致梯度下降求解不出来最优的未知参数(全局最优)。

其实所谓的要通过梯度下降走到全局最优点的话,也就是要该点的偏导都为零,即要为极值点。而local minima的问题就在于,梯度下降走到一点,要是该点的偏导都为零,则会停下来,可是偏导为零的点并不一定最优,也并不一定为极值点;所以这些导数为零的点都会导致梯度下降求解停下来,而这些点并不一定是local minima,也有可能为下图中的saddle point(鞍点),而只有真正遇见local minima的时候,才是真的无路可走了,而导数为零导致梯度下降求解停下来不是正真的local minima 而是saddle point 的话,那也许是有路可走的,对于鞍点来说,四周仍然有两侧可以走,使其损失更低。

所以总结来说,导数为零的是crititical point ( 可疑点 ),若为local minima则无路可走,若为saddle point则有路可走。

该怎么区分是local minima还是saddle point

对于给定一组 θ ′ \theta^{'} θ′,其实我们是可以通过泰特展开知道 θ ′ \theta^{'} θ′附近的一个近似的损失函数,即如下图所示的 L ( θ ′ ) L(\theta^{'}) L(θ′) 函数。

其中的 ( θ − θ ′ ) T g (\theta-\theta^{'})^Tg (θ−θ′)Tg的g也是一个向量,因为损失函数中的 θ \theta θ本身就是一个向量,一组待求解的未知参数,所以求一阶导数,需要对 θ \theta θ 向量中的每一个分别求导,同样的当泰勒展开到二阶的时候,其中的 H H H 就表示对 θ \theta θ求二阶导数。

其中 H H H 也叫Hessian,是一个矩阵。 其中是对每一个未知参数的二阶导数,所以未知参数为2个的时候,其 H H H矩阵就为2×2的矩阵。

由于是crititical point ,其该点的一次微分都为零,所以 ( θ − θ ′ ) T g (\theta-\theta^{'})^Tg (θ−θ′)Tg这项是零,所以对于在 θ ′ \theta^{'} θ′这点来说,在该点的近似的损失函数函数就变成了 L ( θ ) = L ( θ ′ ) + 1 / 2 ( θ − θ ′ ) T H ( θ − θ ′ ) L(\theta)=L(\theta^{'})+1/2(\theta-\theta^{'})^TH(\theta-\theta^{'}) L(θ)=L(θ′)+1/2(θ−θ′)TH(θ−θ′)

这样就可以通过 1 / 2 ( θ − θ ′ ) T H ( θ − θ ′ ) 1/2(\theta-\theta^{'})^TH(\theta-\theta^{'}) 1/2(θ−θ′)TH(θ−θ′)式子来判断crititical point 的类型,到底是local minima 、local max 还是saddle point

为了表示方便将 θ − θ ′ \theta-\theta^{'} θ−θ′ 使用 v v v 来代替,

  • 要是对于点 θ ′ \theta^{'} θ′ 附近的任意一点 θ \theta θ 带入其 v T H v v^THv vTHv都大于零的话,说明 L ( θ ) > L ( θ ′ ) L(\theta)>L(\theta^{'}) L(θ)>L(θ′),也就是说,在 θ ′ \theta^{'} θ′附近的点都大于 L ( θ ′ ) L(\theta^{'}) L(θ′)的值,所以为local minima

  • local max

  • saddle point

显然不可能将所有的 v v v都带进去计算看其是否是大于零的,但是在线性代数中学过,对于式子 v T H v v^THv vTHv都大于零的话,说明 H H H 矩阵它是正定的,即所有的特征值都是正的(eigen values are positive) ;同样的要判定式子 v T H v v^THv vTHv小于零的话,即要说明 H H H 矩阵它是负定的,即所有的特征值都是负的(eigen values are negtive) ;所以以后要判定一个点到底是什么点,就只需要计算Hessian矩阵的特征值,特征值都为正,则为local minima;特征值都为负,则为local max;特征值有正有负的话,则为saddle point

举一个例子 ,来看看梯度下降遇到微分为零的点而导致的终止训练,判断该点是否为鞍点,若为鞍点怎么一步步逃离鞍点去往global minima

例子中,其模型的函数如下图所示,是含两个未知参数 w 1 w 2 w_1w_2 w1w2的模型。同时其训练数据也只有(1,1)。

先采用暴搜的方式,穷举所有的 w 1 w 2 w_1w_2 w1w2绘制了如下的误差平面图(error surface)。在error surface中,其颜色越艳丽表示误差就越大,显然存在很多的crititical point,在原点处的点显然是saddle point ,在向二四象限走的时候误差会增大,在向一三象限走的时候误差会减小。显然就是一个saddle point

假设现在不进行暴搜,只是通过计算来看是否是saddle point,即只需要先得到损失函数,如下图所示:

然后先计算损失函数的一阶导数值,然后来判断(0,0)是什么点,通过下图可以看出,分别计算了 w 1 w 2 w_1w_2 w1w2的偏导数,将(0,0)带入得到其一阶导数都为零,所以(0,0)是一个可疑点。

现在需要进一步判断可疑点(0,0)到底为什么点,即需要计算二阶导数,即计算Hessian矩阵所有特征值即可判断。

如上图所示,分别得到了二阶导数的值,也就是得到了Hessian矩阵,其如下 [ 0 − 2 − 2 0 ] (Hessian) \begin{bmatrix} 0 & -2 \\ -2 & 0 \end{bmatrix} \tag{Hessian} [0−2−20](Hessian)

然后再计算Hessian矩阵所有的特征值,其有两个特征值,一个特征值为2,一个为-2,所以该点为鞍点。

2)怎么逃离鞍点

在某一点处停下来之后,若判断其为鞍点,说明还是有路可以走的,那该怎么逃离鞍点呢?

同样的Hessian矩阵也可以告诉我们参数的跟新方向,假设 u u u 是 H H H 矩阵的特征向量, λ \lambda λ 是 H H H 矩阵的特征值,所以对于 u T H u u^THu uTHu 来说,其进一步被化简为了 λ ∣ ∣ u ∣ ∣ 2 \lambda||u||^2 λ∣∣u∣∣2,那么此时假设 λ \lambda λ是小于零的话,立马就可以推得 u T H u u^THu uTHu 小于零。

从而进一步推得 L ( θ ) < L ( θ ′ ) L(\theta)<L(\theta^{'}) L(θ)<L(θ′)

所以可以得到,只要 u u u 是 H H H 矩阵的特征向量且 u = θ − θ ′ u=\theta-\theta^{'} u=θ−θ′ 时,就是让损失更小,所以只需要让 θ \theta θ 朝着 θ = u + θ ′ \theta=u+\theta^{'} θ=u+θ′的方向走,就可以让损失变小;所以也就是让其朝着Hessian矩阵为负的特征值对应的特征向量的方向走,因为更新的 θ \theta θ是 u + θ ′ u+\theta^{'} u+θ′,即在 θ ′ \theta^{'} θ′的基础上再走 u u u,即Hessian矩阵的特征向量。

例子, 在求得上述例子的Hessian矩阵 [ 0 − 2 − 2 0 ] (Hessian) \begin{bmatrix} 0 & -2 \\ -2 & 0 \end{bmatrix} \tag{Hessian} [0−2−20](Hessian)

其有两个特征值,一个特征值为 λ = 2 \lambda=2 λ=2 ,一个为 λ = − 2 \lambda=-2 λ=−2,该点为鞍点,选择其中 λ = − 2 \lambda=-2 λ=−2的特征值,其中一个特征向量为 [ 1 1 ] (特征向量) \begin{bmatrix} 1 \\ 1 \end{bmatrix} \tag{特征向量} [11](特征向量),即如下图所示向(1,1)的方向去寻找最优解,很显然这是正确的。

3)local minima怎么解决

在上面很好的解决了,如果遇到的是鞍点的话可以通过 H H H 矩阵很好的逃离,那local minima 呢?又该怎么解决?

其实所谓的local minima真的很少,在二维来看,这就是一个local minima ,可是一旦扩展到三维世界后,也许就是一个saddle point,所以说,也许在低纬度的世界里,可能无路可走,可是一旦到了高维世界以后,也许到处都是路,不在有local minima

而在我们今天训练的数据当中,输入动辄成百上千甚至更大,在这么高的维度上,也许到处是路,几乎不会出现local minima的问题。

如下图所示,图中每一个点都代表训练完成停下来(即到了crititical point)的一个神经网络,纵轴为训练完成后的损失,横轴为minimum ratio,其为H矩阵正的特征值的数量比上总的特征值数量。

可以看见大多数网络训练停下来后,最极端的情况minimum ratio为0.6,也还是有负的特征值的,每个停下来的点都还是saddle point,都还是有路可走的!

相关推荐
迅易科技1 小时前
借助腾讯云质检平台的新范式,做工业制造企业质检的“AI慧眼”
人工智能·视觉检测·制造
古希腊掌管学习的神2 小时前
[机器学习]XGBoost(3)——确定树的结构
人工智能·机器学习
ZHOU_WUYI2 小时前
4.metagpt中的软件公司智能体 (ProjectManager 角色)
人工智能·metagpt
靴子学长3 小时前
基于字节大模型的论文翻译(含免费源码)
人工智能·深度学习·nlp
AI_NEW_COME4 小时前
知识库管理系统可扩展性深度测评
人工智能
海棠AI实验室4 小时前
AI的进阶之路:从机器学习到深度学习的演变(一)
人工智能·深度学习·机器学习
hunteritself4 小时前
AI Weekly『12月16-22日』:OpenAI公布o3,谷歌发布首个推理模型,GitHub Copilot免费版上线!
人工智能·gpt·chatgpt·github·openai·copilot
IT古董5 小时前
【机器学习】机器学习的基本分类-强化学习-策略梯度(Policy Gradient,PG)
人工智能·机器学习·分类
centurysee5 小时前
【最佳实践】Anthropic:Agentic系统实践案例
人工智能
mahuifa5 小时前
混合开发环境---使用编程AI辅助开发Qt
人工智能·vscode·qt·qtcreator·编程ai