牛顿法与Hessian矩阵

牛顿法可以用于求解方程的根和无约束最优化问题。其背后的数学原理分别对应的是一阶泰勒展开和二阶泰勒展开。

回顾泰勒公式展开:
f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + 1 2 f ′ ′ ( x 0 ) ( x − x 0 ) 2 + O ( ( x − x 0 ) 3 ) f(x)= f(x_0)+f'(x_0)(x-x_0)+{1 \over 2}f''(x_0)(x-x0)^2+O((x-x_0)^3) f(x)=f(x0)+f(x0)(xx0)+21f(x0)(xx0)2+O((xx0)3)

牛顿法求解方程的根

假设我们要求 f ( x ) f(x) f(x)的实数根,也就是解方程 f ( x ) = 0 f(x)=0 f(x)=0,也就是求 f ( x ) f(x) f(x) x x x轴的交点。

f ( x ) f(x) f(x) x 0 x_0 x0处一阶泰勒展开,并令其等于0
f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) = 0 (1) \tag{1}f(x_0)+f'(x_0)(x-x_0)=0 f(x0)+f(x0)(xx0)=0(1)
可以发现,(1)式其实是一条直线。也就是 f ( x ) f(x) f(x) x = x 0 x=x_0 x=x0处的切线方程。我们求出切线方程与 x x x轴的交点 x a = x 0 − f ( x 0 ) f ′ ( x 0 ) x_a=x_0-{f(x_0) \over f'(x_0)} xa=x0f(x0)f(x0)
在这里插入图片描述

在上图中,蓝色的点为 f ( x ) = 0 f(x)=0 f(x)=0的根,黑色的点是 x a x_a xa,我们继续求出 f ( x ) f(x) f(x) x = x a x=x_a x=xa处的切线方程与 x x x轴的交点 x b = x a − f ( x a ) f ′ ( x a ) x_b=x_a-{f(x_a) \over f'(x_a)} xb=xaf(xa)f(xa)

在这里插入图片描述

就这样依次迭代,我们发现每次求出的 f ( x ) f(x) f(x)的切线方程与 x x x轴的交点都更接近于 f ( x ) f(x) f(x)真实的根
在这里插入图片描述
下图第50次迭代就收敛了,就可以将 x 50 x_{50} x50作为方程 f ( x ) = 0 f(x)=0 f(x)=0的解。
在这里插入图片描述
所以在一阶牛顿法中,迭代公式是 x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1}=x_n-{f(x_n) \over f'(x_n)} xn+1=xnf(xn)f(xn)

牛顿法求解最优化问题

在机器学习中,有很多问题最后都转化为优化问题来解决,通常就是求损失函数的极值问题。在数学中,极值问题通常是令一阶导数为零,也就是求 f ( x ) f(x) f(x)的极值点。这种情况就是求 f ′ ( x ) = 0 f'(x)=0 f(x)=0的根。

f ( x ) f(x) f(x) x = x 0 x=x_0 x=x0处二阶泰勒展开。
f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + 1 2 f ′ ′ ( x 0 ) ( x − x 0 ) 2 + O ( ( x − x 0 ) 3 ) (2) \tag{2} f(x)= f(x_0)+f'(x_0)(x-x_0)+{1 \over 2}f''(x_0)(x-x0)^2+O((x-x_0)^3) f(x)=f(x0)+f(x0)(xx0)+21f(x0)(xx0)2+O((xx0)3)(2)
忽略高阶项,对(2)式求导并令其为0
f ′ ( x ) = f ′ ( x 0 ) + f ′ ′ ( x 0 ) ( x − x 0 ) = 0 f'(x)=f'(x_0)+f''(x_0)(x-x_0)=0 f(x)=f(x0)+f(x0)(xx0)=0
求得其迭代公式为 x n + 1 = x n − f ′ ( x 0 ) f ′ ′ ( x 0 ) x_{n+1}=x_{n}-{f'(x_0) \over f''(x_0)} xn+1=xnf(x0)f(x0)

由于梯度下降法只用到了一阶导数,而牛顿法用到了二阶导数,所以牛顿法收敛更快。
在这里插入图片描述

牛顿法与Hessian矩阵

以上推导只针对了单变量的问题,对于多变量的情况,牛顿法的迭代公式变成:
在这里插入图片描述
用到了一阶偏导数和二阶偏导数,分别对应雅可比矩阵和海塞矩阵。
J J J表示雅克比矩阵,对应一阶偏导数:
在这里插入图片描述
H H H表示Hessian矩阵,对应二阶偏导数:
在这里插入图片描述
多变量的牛顿法由于引入了Hessian矩阵,增加了复杂性,特别是当

  • Hessian 矩阵非正定(非凸)导致无法收敛;
  • Hessian 矩阵维度过大带来巨大的计算量。

针对这个问题,在 牛顿法无法有效执行的情况下,提出了很多改进方法,比如 拟牛顿法(Quasi-Newton Methods)可以看作是牛顿法的近似。

拟牛顿法 只需要用到一阶导数,不需要计算Hessian矩阵 以及逆矩阵,因此能够更快收敛,关于拟牛顿法之后学习了再更新。 总体来讲,拟牛顿法 都是用来解决 牛顿法 本身的 复杂计算、难以收敛、局部最小值等问题。

参考:https://blog.csdn.net/linolzhang/article/details/60151623
https://zhuanlan.zhihu.com/p/46536960

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值