Optimization Fails becasue.

当你如何训练lpss都无法降低的话,应该如何解决呢

有一种猜想是,loss的微分为0

除了local minima导致gradient是0外,saddle point也会gradient为0

local minima的话基本没有办法解决,但是如果是saddle point的话还是可以继续训练的。

Tayler Series Approximation

对于判断是saddle还是local的问题,需要用微积分的知识去判断。

这就是泰勒展开式,g是gradient,是衡量$l(\theta)$和$l(\theta’)$的差距。 H是海塞矩阵。

如果绿色的方框式子为0就代表走到了critical point,代表梯度为0,因此可以被近似为只有$l(\theta’)$+红色的式子,而通过hessian可以判断是local min, local max或者saddle point。

Hessian

对于$\theta-\theta’$可以写成v代替,那么式子可以简化为$v^THv$,如果这大于0,就说明$l(\theta)$ > $l(\theta’)$

那么根据微积分的定义可得知

  • 如果$l(\theta)$附近的点都大于$l(\theta’)$,那么这个点就是local minima

  • 如果$l(\theta)$附近的点都小于$l(\theta’)$,那么这个点就是local maxima

  • 如果$l(\theta)$附近的点有的大于有的小于$l(\theta’)$,那么这个点就是saddle point

简化的计算方式就是算hessian的eigen value。同样如果全正就是local minima,全负就是local maxima,有正有负就是saddle point

Example

假设有一个很废的function y = w1w2x, 没有bias,那么它的error surface可以画成以下形式

四周的erros是最大的,中间的点就是saddle point,因为error可以增大可以减少。

通过判断可以得出左下角是local minima, 右上角是local maximum。

通过计算的话就是首先对loss求导

假设我们想找的的点w1,w2为0,二次求导后会得到的四个值就是hessian的矩阵值。

代入就可以得到0,-2,-2,0,因为发现eigen value有负有正,因此是saddle point。

Find new point

这里的方式其实就是通过引入新的变量来重新改写式子,因为向量具有方向,因此可以通过对于变量的加减找到新的点。

假设我们的lamda为-2,那么找到的eigen vector是[1,1],那么我们只要沿着1,1的向量方向找值就可以了,然而在实际中用到这种方式的很少,因为计算量非常大,目前大部分用的都是别的方式。

Saddle point v.s. Local Minima

在低纬度没有路的时候,实际上在高纬度是可以找到更低的点,因为deep learning的训练非常复杂,因此实际上可能我们能找到的local minima很少。

在一篇论文的尝试发现,几乎找不到完全都是负或者完全都是正的eigen value,只能找到有正有负的eigen value。因此大部分情况train的时候loss不下降都是因为遇到了saddle point