白话斯坦福机器学习课程-CS229 - 牛顿方法

这篇博客介绍了斯坦福大学机器学习课程CS229中的牛顿方法及其在Logistic Regression中的应用。文章详细阐述了牛顿方法的基本原理和优势,包括二次收敛特性。此外,还探讨了指数分布族,特别是伯努利分布和高斯分布作为指数分布的特例,以及如何将这些分布用于广义线性模型,如Logistic Regression和线性回归。最后,提到了多项式分布和softmax函数在多分类问题中的作用。
摘要由CSDN通过智能技术生成

主要内容:

  • logistic Regression,牛顿方法。
  • 指数分布族(exponential family)
  • 广义线性模型(GLMs:Generalized Linear Models)

1. 回归上一篇:

上一篇讲了 Logistic Regression 模型,它是一个分类算法,模型表示为: P ( y = 1 ∣ x ; θ ) = h θ ( x ) P( y = 1 | x; \theta) = h_\theta(x) P(y=1x;θ)=hθ(x),其中 h θ ( x ) h_\theta(x) hθ(x)表示为: h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_\theta(x) = g(\theta^Tx) = \frac{1}{1 + e^{-\theta^{T}x}} hθ(x)=g(θTx)=1+eθTx1。 其对数似然率表示为: l ( θ ) = l o g L ( θ ) = ∑ i = 1 m y ( i ) l o g h ( x ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − h ( x ( i ) ) ) l(\theta) = log L(\theta) = \sum_{i=1}^m y^{(i)} log h(x^{(i)}) + (1 - y^{(i)}) log (1 - h(x^{(i)})) l(θ)=logL(θ)=i=1my(i)logh(x(i))+(1y(i))log(1h(x(i))),对它进行求导:在这里插入图片描述
, 使用梯度上升的规则来进行极大似然估计,得出 Logistic Regression 中的参数 θ \theta θ θ j : = θ j + α ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) \theta_j := \theta_j + \alpha (y^{(i)} - h_\theta(x^{(i)})) x_j^{(i)} θj:=θj+α(y(i)hθ(x(i)))xj(i), 这里使用梯度上升的规则,即一次更新只使用一个训练样本。

2. 牛顿方法:

它是用来进行模型拟合的算法,对 Logistic Regression 进行拟合,而且运行速度比梯度上升算法快。

2.1 描述牛顿方法:

假设函数 f ( θ ) f(\theta) f(θ),为了找到 θ \theta θ,使得 f ( θ ) = 0 f(\theta) = 0 f(θ)=0。思考问题,并将问题演化为算法,用极大似然估计的模型对这个函数进行拟合,如图表示,其演算过程: 在这里插入图片描述

解释:先初始化参数 θ \theta θ(图上横轴),记作 θ ( 0 ) \theta^{(0)} θ(0),牛顿方法在这点运行,并在这点上对 f f f 函数求值,再计算这点上的导数。 之后对这一点上的 f f f 值进行线性逼近,作这点上的切线,交于 x x x 轴,标记为 θ ( 1 ) \theta^{(1)} θ(1)。同样,在牛顿方法下一次迭代时,在 θ ( 1 ) \theta^{(1)} θ(1) 上做同样的事情。

推出: θ ( 1 ) = θ ( 0 ) − f ( θ ( 0 ) ) f ′ ( θ ( 0 ) ) \theta^{(1)} = \theta^{(0)} - \frac{f(\theta^{(0)})}{f^{'}(\theta^{(0)})} θ(1)=θ(0)f(θ(0))f(θ(0))。更一般的说,对于牛顿方法的一次迭代有: θ ( t + 1 ) = θ ( t ) − f ( θ ( t ) ) f ′ ( θ ( t ) ) \theta^{(t + 1)} = \theta^{(t)} - \frac{f(\theta^{(t)})}{f^{'}(\theta^{(t)})} θ(t+1)=θ(t)f(θ(t))f(θ(t))。 对于上面这个算法来说,它能找到一个 θ \theta θ,使得 f ( θ ) = 0 f(\theta) = 0 f(θ)=0。 同理,采用对数似然率,使函数最大化来求值。 假设函数 l ( θ ) l(\theta) l(θ),要使它最大化,令导数值为0,即需要找到一个点,使导数值为0,则表示为: θ ( t + 1 ) = θ ( t ) − l ′ ( θ ( t ) ) l ′ ′ ( θ ( t ) ) \theta^{(t + 1)} = \theta^{(t)} - \frac{l^{'}(\theta^{(t)})}{l^{''}(\theta^{(t)})} θ(t+1)=θ(t)l(θ(t))l(θ(t))。这个式子一定能找到一个局部最优值使函数最大化。

实际上,牛顿方法是一个收敛速度快的算法,收敛速度术语称为:二次收敛。 即它的每一次迭代都会使函数的解的有效数字的数目加倍,且不考虑常量因子,如:一次迭代中,函数解距离最优解还差 0.01,误差即即为 0.01,一次迭代过后,误差的量级编程 0.001的次方,以此类推; 这样的性质只有当函数解距离最优解的值足够近时才会出现; 但由于常熟因子或其他因素可能会使得收敛速度减慢。

算法的一般化表示为:
θ ( t + 1 ) = θ ( t ) − H − 1 ∇ θ l \theta^{(t +1)} = \theta^{(t)} - H^{-1} \nabla_\theta l θ(t+1)=θ(t)H1θl ∇ θ l \nabla_\theta l θl 是目标函数的梯度,<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值