(斯坦福机器学习课程笔记)牛顿法算法学习

这篇博客主要介绍了牛顿法在机器学习中的应用,特别是用于寻找函数极值点的过程。通过泰勒公式二阶展开解释了牛顿法的迭代原理,并对比了牛顿法与梯度下降法在优化问题上的差异。尽管牛顿法因计算二阶导数的Hessian矩阵导致效率较低,但在适当情况下能提供更快的收敛速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码均使用PYTHON3.x

牛顿法算法复杂些,作以下笔记备忘。

下图(来自http://www.myexception.cn/cloud/1987100.html,侵删)
这里写图片描述

为了找到 f(x) 取极值的点,即,牛顿法的思路是:
1、牛顿法只是求 f(x)=0 的根!!!!!!!(x可以是向量)
2、初始化一个 x0 点,在 x=x0 的条件下做曲线的切线

f(x)f(x0)xx0=f(x0)

3、求切线上 f(x)=0 的点,令f(x)=0,得
x=x0f(x0)f(x0)

4、迭代方法为
xn+1=xnf(xn)f(xn)

以上是牛顿法的迭代步骤
以下是牛顿法用于优化问题
5、上面说了牛顿法只是求出 f(x)=0 的根。如果要用牛顿法求极值点,**分别对
cost(θ) 的每个分量用牛顿法**,就可以得到代价函数的极值条件了

6、代价函数的迭代步骤是

xn+1=xnc(xn)2c(xn)

(为了不出现歧义,将f(x)改成了c(x))
或者写成
xn+1=xn[2c(xn)]1c(xn)

其中 2 是hessian矩阵

==================================================
为了加深理解, 这里是另一种理解方法,但以下我的理解是不完整的
f(x) 用泰勒公式二阶展开,得

f(x)=f(x0)+f(x0)(xx0)+2f(x0)(xx0)2

其中, f(x) 就是代价函数,方程右边是关于 xx0 的二次方程,在
xx0=f(x0)2f(x0)

取极值。由于泰勒公式二阶展开只是一个估算,得出的值只是比初始值更接近的值,所以要经过迭代算法得出更接近的值(缺迭代可以收敛的证明)

======================================================
牛顿法与梯度下降法的比较
梯度下降法的迭代公式是

xn+1=xnaf(xn)

其中 a 是学习率,f(x)是代价函数

而牛顿法用于优化问题的迭代公式是

xn+1=xnf(xn)2f(xn)

可以看到,与梯度下降法相比,牛顿法只是将学习率 a 替换成了2f(xn)1

这可以理解为,梯度下降法和牛顿法的区别是:牛顿法根据代价函数的二阶导数信息,自动计算出了合适的学习率,因此有更快的迭代速度。而作为交换,牛顿法需要计算庞大的hessian矩阵,矩阵的大小为参数个数 * 参数个数,计算速度慢,消耗资源大。
因此实际中,牛顿法并不常用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值