Machine Learning 学习笔记 (2) —— 另一种寻找极值的方法:牛顿法

【总目录】http://www.cnblogs.com/tbcaaa8/p/4415055.html

1. 用牛顿法解方程

牛顿法是一种求解方程的迭代算法,也可以用于方程组的求解。其思想是利用方程(尤其是非线性方程)的线性部分,对原方程进行近似。不失一般性,考虑方程f(x)=0。对f(x)在x=t处进行泰勒展开,可得f(x)=f(t)+f‘(t)(x-t)+...

取线性部分代替f(x),带入方程f(x)=0,可得f(t)+f‘(t)(x-t)=0 ,进而解出x=t-f(t)/f‘(t)。将方程的解写为迭代形式,可以得到牛顿法的迭代公式:

[例]使用牛顿法解方程x3+x=2

第一步:求f(x)及f‘(x),即f(x)=x3+x-2, f‘(x)=3x2+1

第二步:选择迭代初始值。初始值一般应选在解的附近,以防算法不收敛。这里选择x(0)=2

第三步:根据迭代公式和初始值迭代求解。迭代过程如下:

k x(k) f(x(k))
0 2.00 8.00
1 1.38 2.04
2 1.08 0.35
3 1.00 0.02
4 1.00 0.00

结论:经过4次迭代后,函数取值变为0,即原方程的根已找到。

牛顿法的收敛条件及收敛速度略去。在机器学习的应用中,可以采用尝试不同初始值的方法减少不收敛现象的发生;若牛顿法收敛,一般可以达到二次收敛的收敛速度,与梯度下降法相比,迭代次数明显减少。

2. 用牛顿法解方程组

在本系列上一篇文章中,我们使用梯度下降法求解损失函数J的极小值;而从上面的描述来看,牛顿迭代只是用来求解方程的根,这与多元函数的极小值又有什么联系呢?其实,要求多元函数的极小值,只需令多元函数对每一个自变量的偏导数为0,并解出此时每一个自变量的取值即可。于是,多元函数极小值问题,被转化为多元非线性方程组求解问题。

首先考虑多元函数的泰勒展开。不失一般性,以f1(x1,x2,...,xn)为例,在点(t1,t2,...,tn)的泰勒展开式如下:

取线性部分代替f1(x),并令其为0,有:

将其整理为向量形式,并分离出自变量,可以得到:( 为了简便,以下使用f1代替f1(t1,t2,...,tn) )

假定方程组由一系列方程{f1=0, f2=0, ..., fn=0}组成,可以将上式整理为矩阵形式:

上式中的n*n矩阵为雅可比矩阵(Jacobian Matrix),简记为J(F)。同时,将自变量(x1,...,xn)记为X,将(t1,...,tn)记为T,将(f1,...,fn)记为F,则有:

化简后可得:

将方程组的解写为迭代形式,即可得到适用于方程组求解的牛顿法迭代公式:

至此可以发现,虽然牛顿法的迭代次数比梯度下降法小得多,但是在每一次迭代过程中,都需要重新计算J(F)的逆矩阵。若n为特征维数,则通常逆矩阵的计算需要Θ(n3)的时间复杂度。使用Strassen方法可以使逆矩阵计算的时间复杂度降至Θ(nlog27),也可以使用数值方法近似求解逆矩阵,但当特征维数较大时,这两种方法仍然很慢。因此,仅在特征维数较小时,牛顿法才能够快速收敛。特殊地,当取n=1时,上式可退化为本文第1节推导出的,用于求解单个方程的牛顿迭代公式。

3. 使用牛顿法求函数的极值

若用▽f(X)表示函数f(X)的梯度向量,带入普通牛顿法迭代公式中,即可得到用于求函数极值的迭代公式:

考虑到:

迭代公式可以在形式上进一步化简:

其中,H(f)表示函数f(x1,...,xn)的海森矩阵(Hessian Matrix)。

就具体问题而言,本系列上一篇文章需要求损失函数的极小值。除了之前介绍的梯度下降法之外,还可以使用本文章介绍的牛顿法。对应的迭代公式为:

时间: 2024-10-16 04:59:17

Machine Learning 学习笔记 (2) —— 另一种寻找极值的方法:牛顿法的相关文章

Machine Learning 学习笔记

Machine Learning 学习笔记在海军陆战队服役超过 10 年后,我于去年 7 月份退役了.随后在 8 月份找到了一份赌场的工作做公关,到今年 2 月中旬的时候又被辞退了.到 5 月中旬的时候我在 DE 协会找到了一份临时的"初级用户体验工程师"工作,而到了 8 月底我则成了正式的"用户体验工程师". 当我丢掉赌场的那份工作时,我就在想公关这行可能真的不适合我.我想做一名程序员.于是我开始节衣缩食学习编程.家人对我的情况非常担心.从 2 月份到 5 月份的

Coursera Machine Learning 学习笔记(一)

之前就对Machine Learning很感兴趣,假期得闲看了Coursera Machine Learning 的全部课程,整理了笔记以便反复体会. I. Introduction (Week 1) - What is machine learning 对于机器学习的定义,并没有一个被一致认同的答案. Arthur Samuel (1959) 给出对机器学习的定义: 机器学习所研究的是赋予计算机在没有明确编程的情况下仍能学习的能力. Samuel设计了一个西洋棋游戏,他让程序自己跟自己下棋,并

[Python & Machine Learning] 学习笔记之scikit-learn机器学习库

1. scikit-learn介绍 scikit-learn是Python的一个开源机器学习模块,它建立在NumPy,SciPy和matplotlib模块之上.值得一提的是,scikit-learn最先是由David Cournapeau在2007年发起的一个Google Summer of Code项目,从那时起这个项目就已经拥有很多的贡献者了,而且该项目目前为止也是由一个志愿者团队在维护着. scikit-learn最大的特点就是,为用户提供各种机器学习算法接口,可以让用户简单.高效地进行数

machine learning学习笔记

看到Max Welling教授主页上有不少学习notes,收藏一下吧,其最近出版了一本书呢还,还没看过. http://www.ics.uci.edu/~welling/classnotes/classnotes.html Statistical Estimation [ps]- bayesian estimation- maximum a posteriori (MAP) estimation- maximum likelihood (ML) estimation- Bias/Variance

Machine Learning学习笔记(1)

1.机器学习可以做什么? 搜索引擎.垃圾邮件过滤.人脸识别等等,不仅用于人工智能领域,生物.医疗.机械等很多领域都有应用. 2.机器学习的定义 A computer program is said to learn from experience E with respect to some task T and some performance measure P,if its performance on T,as measured by P,improves with experience

Coursera Machine Learning 学习笔记(四)

 II. Linear Regression with One Variable (Week 1) - Model representation 以之前预测房价的问题为例,假设我们回归问题的训练集(Training Set)如下所示: 我们用如下符号来描述回归问题中的量: - m 代表训练集中实例的数量 - x 代表特征/输入变量 - y 代表目标变量/输出变量 - (x,y) 代表训练集中的实例 -  代表第i个观察实例 - h 代表学习算法的解决方案或函数,也称为假设(hypothesi

Coursera Machine Learning 学习笔记(六)

- Gradient descent 梯度下降算法是一个用来求得函数最小值的算法,这里我们将使用梯度下降算法来求出代价函数的最小值. 梯度下降的思想是:开始的时候我们随机选择一个参数的组合并计算代价函数,之后我们寻找下一个能使得代价函数值下降最多的参数的组合. 我们持续如此过程直到一个局部最小值(local minimum),由于我们并没有完全尝试完所有参数的组合,所以我们不能够确定我们得到的局部最小值是否为全局最小值(global minimum),而且选择不同的参数组合,我们可能会找到不同的

Coursera Machine Learning 学习笔记(二)

- Supervised Learning 对于监督学习我们先看一个例子,下图中表示的是一个房价预测的例子.图中横坐标表示房屋占地面积,纵坐标表示房屋交易价格.图中的每个叉则表示一个房屋实例. 现在,我们希望能够预测一个房屋占地面积为750平方英尺的房屋的交易价格是多少.简单的方法是根据这些数据点的分布,画出一条合适的直线,然后根据这条直线来预测.当然,在此房价预测例子中,一个二次函数更加适合已有数据的分布.因此,我们可能会更加希望使用这个二次函数的曲线来进行房价预测. 因此,我们称上述这样的学

Machine Learning 学习笔记 (1) —— 线性回归与逻辑回归

[总目录]http://www.cnblogs.com/tbcaaa8/p/4415055.html 1. 梯度下降法 梯度下降法是一种用来寻找函数最小值的算法.算法的思想非常简单:每次沿与当前梯度方向相反的方向走一小步,并不断重复这一过程.举例如下: [例]使用梯度下降法,求的最小值. 第一步:求解迭代格式.根据“每次沿与当前梯度方向相反的方向走一小步”的思想,可知 第二步:选择迭代的初始值.初始值一般可以随意选择,但恰当的初始值有助于提升收敛速度.本例中选择 第三步:根据迭代格式和初始值进行