**
俗话说:好记性不如烂笔头,通过写文章的方式既可以加深自己的理解,又可以与大家分享,双赢,何乐而不为?
古人陆游又曾说:纸上得来终觉浅,用来形容大学中的知识再合适不过了,方到用时,才有更深刻的理解,才对数学家们的智慧才更加敬佩!
**
回归正题
1、方法概述及演变过程
牛顿迭代法 是一种线性化方法,其基本是想是将非线性方程
f
(
x
)
=
0
f(x)=0
f(x)=0逐步归结为某种线性方程来求,也是求解 单变量非线性方程 最实用的方法之一,该方法在单根附近二阶收敛。和梯度下降法均属于最优化方法(后面会分析两者的优缺点),但应用时要选用较好的初值
x
0
x_{0}
x0 近似才能保证迭代收敛,否则可能会发散(后面会举例说明)。
下山法,顾名思义,就是确保迭代过程中单调递减,即
∣
f
(
x
k
+
1
)
∣
<
∣
f
(
x
k
)
∣
式
(
1.1
)
|f(x_{k+1})|<|f(x_{k})| \qquad 式(1.1)
∣f(xk+1)∣<∣f(xk)∣式(1.1)
将牛顿迭代法与下山法结合起来,得到 牛顿下山法,确保了迭代过程中,稳定收敛。
2、牛顿迭代法
牛顿公式的推导:
设已知方程
f
(
x
)
=
0
f(x)=0
f(x)=0 有近似根
x
k
x_{k}
xk,且
f
′
(
x
k
)
!
=
0
f'(x_k) !=0
f′(xk)!=0,将函数在点进行一阶泰勒展开,有
f
(
x
)
≈
f
(
x
k
)
+
f
′
(
x
k
)
(
x
−
x
k
)
式
(
2.1
)
f(x)\approx f(x_k)+f'(x_k)(x-x_k) \qquad 式(2.1)
f(x)≈f(xk)+f′(xk)(x−xk)式(2.1)
则方程
f
(
x
)
=
0
f(x)=0
f(x)=0 可以近似表示为
f
(
x
k
)
+
f
′
(
x
k
)
(
x
−
x
k
)
=
0
f(x_k)+f'(x_k)(x-x_k)=0
f(xk)+f′(xk)(x−xk)=0,这是个线性方程,记其根为
x
k
+
1
x_{k+1}
xk+1,可以推导得到:
x
k
+
1
=
x
k
−
f
(
x
k
)
/
f
′
(
x
k
)
(
k
=
0
,
1
,
2......
)
式
(
2.2
)
x_{k+1}= x_k - f(x_k)/f'(x_k) \qquad (k = 0,1,2... ...) \qquad式(2.2)
xk+1=xk−f(xk)/f′(xk)(k=0,1,2......)式(2.2)
以上就是牛顿公式,是不是比想象中的简单。
牛顿公式的几何解释:
方程
f
(
x
)
=
0
f(x)=0
f(x)=0 的根
x
∗
x^*
x∗可以解释为曲线
y
=
f
(
x
)
y=f(x)
y=f(x)与
x
x
x轴 的交点的横坐标,如下图所示
设
x
k
x_k
xk 是根
x
∗
x^*
x∗的某个近似值,过曲线
y
=
f
(
x
)
y=f(x)
y=f(x) 上横坐标为
x
k
x_k
xk 的点
P
k
P_k
Pk引切线,并将该切线与
x
x
x轴的交点的横坐标
x
k
+
1
x_{k+1}
xk+1作为
x
∗
x^*
x∗的新的近似值,可以得到切线方程为(点斜式:
y
−
y
0
=
k
(
x
−
x
0
)
y-y_0 = k(x-x_0)
y−y0=k(x−x0)):
y
=
f
(
x
k
)
+
f
′
(
x
k
)
(
x
−
x
k
)
式
(
2.3
)
y=f(x_k)+f'(x_k)(x-x_k) \qquad 式(2.3)
y=f(xk)+f′(xk)(x−xk)式(2.3)
令
y
=
0
y=0
y=0 这样求得的解即为牛顿公式(式2.2)
收敛过程如下图所示
牛顿公式的应用
求解
x
2
−
C
=
0
x^2 - C =0
x2−C=0,应用牛顿公式得到:
x
k
+
1
=
x
k
−
(
x
2
−
C
)
/
2
x
x_{k+1} =x_k- (x^2-C)/2x
xk+1=xk−(x2−C)/2x,即
x
k
+
1
=
1
/
2
(
x
k
+
C
/
x
k
)
式
(
2.4
)
x_{k+1} =1/2(x_k +C/x_k) \qquad式(2.4)
xk+1=1/2(xk+C/xk)式(2.4)
实例:求
115
\sqrt{115}
115 ,取初值
x
0
=
10
x_0=10
x0=10,
C
=
115
C=115
C=115代入 式(2.4) 进行迭代
3、牛顿下山法
牛顿下山法的起因
在前文中已经说过,牛顿迭代法在应用时要选用较好的初值
x
0
x_{0}
x0 近似才能保证迭代收敛,否则可能会发散,现在进行举例说明:
例如,用牛顿法求解方程
x
3
−
x
−
1
=
0
x^3-x-1=0
x3−x−1=0 在
x
=
1.5
x=1.5
x=1.5 附近的一个根
x
∗
x^*
x∗.
根据上面的例子可以看出,不同的初值,会得到不同的结果,在某些情况下牛顿迭代反而会导致 根的偏离,这就是牛顿下山法的因。
牛顿下山法的产生
为了防止牛顿迭代发散,对迭代过程再附加一项要求,即使其具有单调性:加入式(1.1)
∣
f
(
x
k
+
1
)
∣
<
∣
f
(
x
k
)
∣
式
(
3.1
)
|f(x_{k+1})|<|f(x_{k})| \qquad 式(3.1)
∣f(xk+1)∣<∣f(xk)∣式(3.1)
保证了牛顿迭代快速迭代的同时,具有收敛性,那么怎么使牛顿迭代公式能够满足 式(1.1)呢?数学家们的智慧是令人折服的,具体怎么做呢?是不是让迭代得到的
x
k
+
1
与
x
k
x_{k+1} 与 x_k
xk+1与xk 的值差别更小(迭代更加精细)就会好一点呢?事实上就是这么做的的。
令:
x
k
+
1
′
=
x
k
−
f
(
x
k
)
f
′
(
x
k
)
式
(
3.2
)
x'_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)}\qquad 式(3.2)
xk+1′=xk−f′(xk)f(xk)式(3.2)
将
x
k
+
1
′
x'_{k+1}
xk+1′ 与
x
k
x_{k}
xk 进行加权平均,得
x
k
+
1
=
λ
x
k
+
1
′
+
(
1
−
λ
)
x
k
式
(
3.3
)
x_{k+1} = \lambda x'_{k+1}+(1-\lambda)x_k\qquad 式(3.3)
xk+1=λxk+1′+(1−λ)xk式(3.3)
将式(3.2)代入式(3.3)中,得
x
k
+
1
=
x
k
−
λ
f
(
x
k
)
f
′
(
x
k
)
(
0
<
λ
<
=
1
)
式
(
3.4
)
x_{k+1} = x_k - \lambda \frac{f(x_k)}{f'(x_k)}\qquad(0<\lambda<=1) \qquad 式(3.4)
xk+1=xk−λf′(xk)f(xk)(0<λ<=1)式(3.4)
得到的式(3.4)即牛顿下山公式,牛顿下山法由此产生,其中
λ
\lambda
λ为下山因子。
选择下山因子时从
λ
=
1
\lambda =1
λ=1开始,依次减半进行试算(
λ
=
1
/
2
、
1
/
4
、
1
/
8
、
.
.
.
\lambda =1/2、1/4、1/8、...
λ=1/2、1/4、1/8、...),直到满足下降条件式(3.1)为止。
牛顿下山法的应用
继续解方程
x
3
−
x
−
1
=
0
x^3-x-1=0
x3−x−1=0 在
x
0
=
0.6
x_0=0.6
x0=0.6 附近的一个根
x
∗
x^*
x∗.
4、牛顿下山法和梯度下降法区别
对于牛顿下山法求极值的的疑问?
牛顿下山法用于求解函数零点,而梯度下降法用于求解函数极值,它们能有什么联系区别呢?一开始我也是这样觉得的,好像搭不上边。。。。。。
确实如此,牛顿法最初的作用是用来求解函数的零点,但换个思路,函数的极值是不是一定在函数导数的零点的地方呢?(可能是极大值、极小值、驻点),是不是拨开云雾,豁然开朗,嘿嘿,数学的魅力可能就在于此!
所以牛顿法求函数极小值只需要判断其导函数零点左右两边的正负号即可!
区别
从收敛速度上看 ,牛顿法是二阶收敛,梯度下降是一阶收敛,前者收敛速度更快。梯度法仅考虑方向,牛顿法不但考虑了方向还兼顾了步长的大小,其对步长的估计使用的是二阶逼近。
牛顿法的优缺点总结:
优点:二阶收敛(对于求极值来说),收敛速度快。
缺点:当变量为多维向量时,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂;不能直接求解得到最小值(需要判断左右两边)
梯度下降法优缺点总结
优点:简单粗暴,计算量小。
缺点:在远离极小值的地方下降很快,而在靠近极小值的地方下降很慢。