机器学习(九)——用牛顿法来最大化ℓ(θ)

原文:http://cs229.stanford.edu/notes/cs229-notes1.pdf


回到使用sigmoid函数作为g(z)g(z) 的 logistic回归问题,让我们讨论一种不同的最大化  l(θ)l(θ) 的算法。

开始之前,我们先想一下牛顿法去求函数零点。假如我们有一些函数 f:RRf:R↦R, 接着我们希望找到一个 θθ ,满足 f(θ)=0f(θ)=0,其中 θRθ∈R 是一个实数。牛顿法就是对 θθ 进行如下的更新:

θ:=θf(θ)f(θ)θ:=θ−f(θ)f′(θ)

这个方法可以很自然地进行解释,我们可以把它理解成:在当前猜测的 θθ 值处用一个线性函数来对近似表示函数 ff ,即这条直线是 f 的切线,找到当前线性函数等于零的点,把这一个零点作为 θθ 的下一次猜测值,然后依次类推。

下面是牛顿法实际操作中的图像:

newton-method-1

在第一幅图中,我们看到函数 ff 在 y=0y=0 处画了一条直线,而我们想找到 θθ 使得 f(θ)=0f(θ)=0 ;满足要求的 θθ 值大概在 1.3 处。假设我们的算法初始化 θ=4.5θ=4.5 ,根据牛顿法,在 ff 上θ=4.5θ=4.5 处作一条切线,找出计算结果为0的点,如下图所示:

newton-method-2

那么大概在 2.8 的位置,就是我们下一个猜测的 θθ 值,然后重复步骤得到新的 θθ 在1.8 处。

newton-method-3

在一定次数的迭代后,我们就能迅速地得到 θ=1.3θ=1.3.

牛顿法的给出的解决思路是让f(θ)=0f(θ)=0。如果我们想要利用它来最大化一些函数 ll 呢?函数 ll 的最大值的点应该对应着它的导数 l(θ)l′(θ) 等于零的点。所以通过令f(θ)=l(θ)f(θ)=l′(θ),我们就可以同样用牛顿法来找到 ll 的最大值,然后得到下面的更新规则:

θ:=θl(θ)l′′(θ)θ:=θ−l′(θ)l″(θ)

(再思考一下: 如果要用牛顿法来求一个函数的最小值而不是最大值,该怎么修改?)

最后,在咱们的logistic回归问题背景中,θθ 是一个有值的向量,所以我们要对牛顿法进行扩展来适应这个情况。牛顿法进行扩展到多维情况,也叫牛顿-拉普森法(Newton-Raphson method),如下所示:

θ:=θH1θl(θ)θ:=θ−H−1∇θl(θ)这里的 θl(θ)∇θl(θ) 和之前提过的一样,是 l(θ)l(θ) 关于 θiθi 的偏导数向量;HH 是一个 n×nn×n 矩阵 (实际上如果包含截距项的话,应该是n+1×n+1n+1×n+1矩阵),也叫作 Hessian ,由下面的式子定义:

Hij=2l(θ)θiθjHij=∂2l(θ)∂θi∂θj

牛顿法通常都能比(批量)梯度下降法收敛得更快,而且达到最小值所需要的迭代次数也少很多。然而,牛顿法中的单次迭代往往要比梯度下降法耗费更多的性能开销,因为要查找和转换一个n×nn×n 的 Hessian矩阵;不过只要这个 n 不是太大,牛顿法通常就还更快一些。当用牛顿法来在逻辑回归中求似然函数 l(θ)l(θ) 的最大值的时候,得到这一结果的方法也叫做 Fisher scoring.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我的思路是这样的: 最速下降法能找出全局最优点,但在接近最优点的区域内就会陷入“齿型”迭代中,使其每进行一步迭代都要花掉非常久的时间,这样长久的等待是无法忍受的,不信你就在我那个程序的第一步迭代中把精度取得很小如:0.000000001等,其实我等过一个钟都没有什么结果出来。 再者我们考究一下 牛顿迭代法求最优问题牛顿法相对最速下降法的速度就快得多了,而且还有一个好处就是能高度逼近最优值,而不会出现死等待的现象。 如后面的精度,你可以取如:0.0000000000001等。 但是牛顿法也有缺点,就是要求的初始值非常严格,如果取不好,逼近的最优解将不收敛,甚至不是最优解。 就算收敛也不能保证那个结就是全局最优解,所以我们的出发点应该是:为牛顿法找到一个好的初始点,而且这个初始点应该是在全局最优点附近,这个初始点就能保证牛顿法高精度收敛到最优点,而且速度还很快。 思路概括如下: 1。用最速下降法在大范围找到一个好的初始点给牛顿法:(最速下降法在精度不是很高的情况下逼近速度也是蛮快的) 2。在最优点附近改用牛顿法,用最速下降法找到的点为牛顿法的初始点,提高逼近速度与精度。 3。这样两种方法相结合,既能提高逼近的精度,还能提高逼近的速度,而且还能保证是全局最优点。这就充分吸收各自的优点,扬长避短。得到理想的结果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值