最近一段时间算是狠狠地了补了很多数学知识,也发现了数学作为工程中的强大工具能力,无论是在机器学习中推导cost function还是在求解优化问题时,都会用到Hessian矩阵。
我们需要知道一个重要的结论:Hessian矩阵是半正定的,具体的推导不讲,这里主要讲讲怎么理解这个半正定性。
对一元函数f(x)来说,就极值而言,一阶导为0是极值点的必要但不充分条件,一阶导为0且二阶导>0是极小值的充要条件。为什么呢,因为有泰勒展开。如果一阶导为0,二阶导>0,dx不论是多少,f(x)一定不比f(x0)小。
你把多元函数也泰勒展开,主要区别在于:
- 二阶导变成了Hessian。
- 以前只要考虑x怎么变,现在还要考虑y怎么变,x和y怎么一起变,头疼了很多。以二元为例,
从一元的情况类比过来,如果一阶导为0,是不是极小值完全取决于不同的dx, dy下,能不能做到最后一项一直非负。只有对于任意
,一直大于0的情况,我们才能说这是极小值。如果一直小于0,这就是极大值。如果它一会正一会负,就是鞍点。然后“对于任意,一直>0”这是啥?半正定的定义嘛!它就是这么引出来的,也是我们为什么需要半正定这个概念的原因(之一)。(我们假设函数有一些“良好”的性质,比如连续,可微等。)
所以我们知道了Hessian矩阵的半正定指的是在大于0的时候可以判断出该导函数为0的点为极小值点,但是当Hessian矩阵算法
等于0的时候,就没办法判断此点的是否是极值点。
所以在优化理论中的原始牛顿法及阻尼牛顿法的缺陷就在这里,因为Hessian是半正定的所以,不能保证每次都能收敛到极小值点。