简述
在看伊恩·古德费洛的深度学习,4.3节基于梯度的优化方法时提到
仅使用梯度信息的优化算法称为 一阶优化算法 ,如梯度下降。
使用Hessian矩阵的优化算法称为 二阶最优化算法 ,如牛顿法。
牛顿法和拟牛顿法时求解无约束最优化问题的常用方法,收敛速度快。
牛顿法是迭代算法,每一步需要求解目标函数的海赛矩阵的逆矩阵,计算比较复杂;
拟牛顿法通过正定矩阵近似海赛矩阵的逆矩阵或海赛矩阵,简化这一计算过程。
下面记录一下对牛顿法的一点理解
牛顿法(Newton‘s method)
储备知识:泰勒展开式
当=0时就是麦克劳伦展开式
以及常见函数的展开式
应用A:求解方程
将利用泰勒公式在处展开到一阶
令=0,求解得到
比更接近于=0
可以推出
实例:用牛顿法求开根号
从上面的推到已知
如果求X^2 = 2
那么:f(x) = x^2-2
更一般的:f(x)=x^2−a
所以f(x)的一次导是: f′(x)=2x
牛顿迭代式:
from math import sqrt
def newton(num):
a = sqrt(num)
b = num // 2
count = 1
while abs(a-b) > 0.000000000001:
print(count, b)
count += 1
b = 0.5*(1.0*b + (1.0*num)/b)
return b
print(newton(2))
print(sqrt(2))
应用B:最优化
将利用泰勒公式展开到二阶
当趋向于0时,
求解
得到迭代公式 ,n=0,1,2……
可以看到牛顿法的迭代步长为
常见的最优化方法有:梯度下降法、牛顿法、拟牛顿法、共轭梯度法等等
如下图红色曲线是利用牛顿法迭代求解;绿色曲线是利用梯度下降法迭代求解。
从本质上来讲,最优化求解问题的迭代形式都是,其中n是系数,是函数的梯度,即函数上升的方向,是梯度下降的方向。
最优化问题的标准形式是:求目标函数最小值,只要每次迭代沿着下降的方向可以逐渐达到最优
参考博文:Newton法(牛顿法 Newton Method)
待补充