🚀 在初始神经网络那一节(链接如下:初识机器学习)是遇到了两个问题,第一个是在求解函数未知参数数时会遇到
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^{'} θ′这点来说,在该点的近似的损失函数函数就变成了