神经网络优化:病态矩阵与条件数

一、病态矩阵

求解方程组时如果对数据进行较小的扰动,则得出的结果具有很大波动,这样的矩阵称为病态矩阵。

病态矩阵是一种特殊矩阵。指条件数很大的非奇异矩阵。病态矩阵的逆和以其为系数矩阵的方程组的界对微小扰动十分敏感,对数值求解会带来很大困难。

例如:

现在有线性方程组: Ax = b, 解方程

                                                     

很容易得到解为: x1 = -100, x2 = -200. 如果在样本采集时存在一个微小的误差,比如,将 A 矩阵的系数 400 改变成 401: 

                                                    

则得到一个截然不同的解: x1 = 40000, x2 = 79800.

当解集 x 对 A 和 b 的系数高度敏感,那么这样的方程组就是病态的 (ill-conditioned).

 

二、条件数

判定矩阵是否病态以及衡量矩阵的病态程度通常是看矩阵A的条件数K(A)的大小

            K(A)=\frac{\left \| A^{-1} \right \|}{\left \| A \right \|}

 K(A) 称为 A 的条件数,它很大时,称 A 为病态,否则称良态; K(A) 愈大, A 的病态程度就愈严重。

三、神经网络中的具有病态条件的Hessian矩阵

H=\bigtriangledown ^{2}E为海森矩阵。

这里我们关注H的条件数,因为这个量反映了误差E的曲面特征,如局部最小值、鞍点等。H的条件数为:

                  \left | \frac{\lambda _{max}}{\lambda _{min}}\right |

条件数越大,病态问题越严重。

如果网络的H的条件数很大,则网络是病态的(ill-conditioning),可能呈现如下形式。

神经网络优化:病态矩阵与条件数_第1张图片

当海森条件数很差时,梯度下降法也会表现的很差。这是因为一个方向上倒数增加的很快,而另一个方向上增加的很慢。梯度下降不知道倒数的这种变化,所以它不知道应该优先探索倒数长期为负的方向,病态条件也导致很难选择合适的步长。步长必须足够小,以免冲过最小而向具有较强正曲率的方向上升。这通常意味着步长太小,以至于在其他较小曲率的方向上进展不明显。

参考:

《深度学习》 Ian Goodfellow.

 

 

 

你可能感兴趣的:(机器学习中的数学,病态矩阵,条件数)