当前位置: 首页 > article >正文

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} [0220](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 λ∣∣u2,那么此时假设 λ \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} [0220](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,都还是有路可走的!


http://www.kler.cn/news/328644.html

相关文章:

  • .Net 基于IIS部署blazor webassembly或WebApi
  • 用Python+flask+mysql等开发的Excel数据资产落地工具
  • 【一文读懂】C#如何实现通用的排序功能
  • 车辆重识别(利用扩散模型合成有效数据进行行人再识别预训练)论文阅读2024/9/27
  • 【树莓派系列】树莓派首次开机配置
  • LeetCode 面试经典150题 50.Pow(x,n)
  • VMware 设置静态IP
  • 鸿蒙开发(NEXT/API 12)【硬件(取消注册智慧出行连接状态的监听)】车载系统
  • 记录Mybatis分页查询排序问题: Encountered unexpected token: “and“ “AND“
  • C++:STL(四)之vector的基本介绍与使用方式|容器接口
  • Python NumPy 数据分析:处理复杂数据的高效方法
  • 数据结构-3.9.栈在递归中的应用
  • React、Vue.js和Angular三大主流框架的选择对比
  • yum使用阿里云的镜像源报错 Failed connect to mirrors.aliyuncs.com:80; Connection refused“
  • 智能工厂非标自动化集成商
  • 【Python】数据可视化之点线图
  • trixbox call php发起电话呼叫
  • Vortex GPGPU的github流程跑通与功能模块波形探索
  • 回执单识别-银行回单识别API-文字识别OCR API
  • 解决 Git LFS 切换分支失败问题
  • Android AMS介绍
  • PCL LocalMaximum消除局部最大的点
  • Egress Gateway 是一个重要的组件,用于管理从服务网格内部到外部服务的流量
  • scrapy快速上手
  • Mybatis-Plus新花样(二)
  • Robot Operating System——带有协方差矩阵的三维空间中的位姿(位置和方向)
  • 基于 Seq2Seq 的中英文翻译项目(pytorch)
  • 番外篇 | 复现AC-YOLOv5,进行自动化织物缺陷检测
  • Mybatis 9种动态 sql 标签使用
  • 基于深度学习的任务序列中的快速适应