[CS229学习笔记] 3.欠拟合与过拟合,局部加权线性回归,线性回归的概率解释,逻辑回归,及感知机学习算法

本文对应的是吴恩达老师的CS229机器学习的第三课。这节课介绍了欠拟合与过拟合;然后介绍了参数学习算法与非参数学习算法,并例举了非参数学习算法的一个经典例子:局部加权线性回归;接着延续第二节课的内容讲解了线性回归的概率解释;最后介绍了分类任务的一个经典例子:逻辑回归。


欠拟合(under-fitting)与过拟合(over-fitting)

举一个简单的例子,假设我们需要根据房屋的大小来预测其出售的价格。我们可以建立各种不同的模型来进行预测,简单起见,上一节课我们提到了线性回归,于是我们可以用不同阶数的线性回归来预测房价。我们分别构造出输入数据 x x x 1 , 2 , 6 1, 2, 6 1,2,6 次方特征来预测房价曲线,即 h θ ( x ) = θ 0 + θ 1 x , h θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 h_\theta(x)=\theta_0+\theta_1 x, h_\theta(x)=\theta_0+\theta_1 x+\theta_2 x^2 hθ(x)=θ0+θ1x,hθ(x)=θ0+θ1x+θ2x2,以及 h θ ( x ) = θ 0 + θ 1 x + ⋯ + θ 6 x 6 h_\theta(x)=\theta_0+\theta_1 x+\cdots+\theta_6 x^6 hθ(x)=θ0+θ1x++θ6x6。预测曲线如下图所示:

[CS229学习笔记] 3.欠拟合与过拟合,局部加权线性回归,线性回归的概率解释,逻辑回归,及感知机学习算法_第1张图片

从图中我们可以看出,左子图能够一定程度预测房价,但效果没有中间的子图好,而右子图片中的曲线明显不具备好的预测能力。左子图就是我们所说的欠拟合,指模型没有很好地捕捉到数据特征,不能够很好地拟合数据;右子图就是我们所说的过拟合,指模型过于注意训练集的拟合度,引起泛化能力较弱的结果。

欠拟合和过拟合都是我们希望避免的训练情况。为应对这两个问题,不同的模型有不同的方法。这里简单介绍几种:1. 加正则项;2. 改善模型结构;3. early stop;4. 使用bagging/boosting等方法进行模型融合; 5. 数据增强; 6. 对于神经网络,可以用dropout层


局部加权线性回归(locally weighted linear regression, or Loess)

我们可以将机器学习的算法分为参数学习算法(parametric learning algorithm)与非参数学习算法(non-parametric learning algorithm)。所谓参数学习算法指的是模型拥有固定的参数;而非参数学习算法就是模型的参数会随输入数据的增加而增加。我们之前介绍的线性回归等方法就属于参数学习算法;一个常用的非参数学习的例子是:局部加权线性回归。

不同于一般的线性回归模型,局部加权线性回归会重点考虑待预测点附近的点。如下图所示,我们希望在预测 x = 7.5 x=7.5 x=7.5 对应的 y y y 值时,能尽可能地关注到 x = 7.5 x=7.5 x=7.5 附近的值,而忽略一些偏离较远的点。蓝线是常规线性回归得到的结果,可以看到,因为我们的数据点满足正态分布,因此得到的预测直线为水平直线,这显然不能很好地描述数据点之间的关系;而局部加权线性回归则是红线,可以看到红线很好地抓到了 x = 7.5 x=7.5 x=7.5 附近的点的特性,并且给出了一个不错的估计值。

[CS229学习笔记] 3.欠拟合与过拟合,局部加权线性回归,线性回归的概率解释,逻辑回归,及感知机学习算法_第2张图片

那么如何推导局部线性回归呢?方法很简单,我们将对我们的损失函数中的各项作一个加权平均处理,即:

J ( θ ) = 1 2 ∑ i = 1 m w ( i ) ( y ( i ) − θ T x ( i ) ) 2 J(\theta)=\frac{1}{2}\sum_{i=1}^mw^{(i)}\left(y^{(i)}-\theta^T\bold{x}^{(i)}\right)^2 J(θ)=21i=1mw(i)(y(i)θTx(i))2

其中 w ( i ) w^{(i)} w(i) 就是我们引入的权重。那么如何通过这个权重来做到关注于局部的值呢?很简单,我们只需要使待预测点周围的权重变高,同时原理待测点的点的权重变低即可。一个常用的权重函数是:

w ( i ) = exp ⁡ ( − x ( i ) − x 2 τ 2 ) w^{(i)}=\exp\left( -\frac{\bold{x}^{(i)}-\bold{x}}{2\tau^2}\right) w(i)=exp(2τ2x(i)x)

其中 τ \tau τ 为波长函数,用来控制权重随距离而衰减的速率; x \bold{x} x 即为待预测点的坐标。如上图所示,如果我们要预测 x = 7.5 \bold{x}=7.5 x=7.5 初的值,则需要将 x = 7.5 \bold{x}=7.5 x=7.5 代入权重方程,算出每一个 黑× 对应的权重,然后乘以其对应损失函数成分,最后整体优化加权后的 J ( θ ) J(\theta) J(θ)

需要注意的是,虽然此处的权重公式类似于高斯分布,但其实两者之间并无直接关系,权重公式可以选取任意所需形式,只要能体现出局部性即可。钟形分布的权重是一种比较简单且符合要求的形式,故可以选取。

与之前的线性回归类似地,我们也可以将其写成矩阵形式:

J ( θ ) = 1 2 ( X θ − y ) W ( X θ − y ) \Large J(\theta)=\frac{1}{2}\left(X\theta - \bold{y}\right)W \left(X\theta - \bold{y}\right) J(θ)=21(Xθy)W(Xθy)

其中 W W W 为权重矩阵,是一个对角阵:

W = [ w ( 1 ) 0 ⋯ 0 0 w ( 2 ) ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ w ( m ) ] W = \begin{bmatrix}w^{(1)}&0&\cdots&0\\ 0&w^{(2)}&\cdots&0\\ \vdots&\vdots&\ddots&\vdots\\ 0&0&\cdots&w^{(m)} \end{bmatrix} W=w(1)000w(2)000w(m)

对应的 θ \theta θ 矩阵计算公式为(推导过程与线性回归类似,从略):

θ = ( X T W X ) X T W y \Large \theta=\left(X^TWX\right)X^TW\bold{y} θ=(XTWX)XTWy

局部线性回归的好处是可以专注于小范围内的梯度,而缺点也很明显:对于每一个需要预测的点,我们都需要重新建立一个新的权重矩阵以及损失函数用于计算该点的预测值,比如我们如果要预测 x = 8.5 , x = 9.5 x=8.5, x=9.5 x=8.5,x=9.5 的值,那我们就需要重新以为中心建立两个新的权重矩阵,以及两个新的损失函数,然后计算出最小梯度对应的 θ \theta θ 值,随着训练点及预测点的增加,局部加权线性回归算法代价也会逐步增加,这也是非参数学习算法的缺点。那么如何减小计算量呢?课中提到了可以采用KD树,不过没有深入解释。


线性回归的概率解释

接下来我们从概率的角度解释线性回归的意义。对于任意的输入 x ( i ) \bold{x}^{(i)} x(i) 以及输出 y ( i ) y^{(i)} y(i),我们不妨设

y ( i ) = θ T x ( i ) + ε ( i ) (1) y^{(i)}=\theta^T\bold{x}^{(i)}+\varepsilon^{(i)}\tag1 y(i)=θTx(i)+ε(i)(1)

其中 ε ( i ) \varepsilon^{(i)} ε(i) 用于捕获未被建模的效应。比如说,我们用房子的大小作为输入特征来预测房价高低,则 ε ( i ) \varepsilon^{(i)} ε(i) 就是那些其他与房价有关的、未被我们纳入考虑的特征,如房子是否有花园、房子的地理位置等等。如果我们假设 ε ( i ) \varepsilon^{(i)} ε(i) 可以捕获所有剩余的特征,那么这个式子就一定成立。从另一个角度来看, ε ( i ) \varepsilon^{(i)} ε(i) 也可被看作是一种噪声。

接下来,我们假设误差 ε ( i ) \varepsilon^{(i)} ε(i) 服从某一高斯分布 ε ( i ) ∽ N ( 0 , σ 2 ) \varepsilon^{(i)}\backsim N\left(0,\sigma^2\right) ε(i)N(0,σ2)。为什么可以这么假设呢?原因是我们未考虑进来的特征很多是可以被看做独立分布的,根据中心极限定理,这些特征的累加分布服从高斯分布。当然,并不是说 ε ( i ) \varepsilon^{(i)} ε(i) 一定服从高斯分布,只是我们在使用的时候遇到的自然噪声大多数服从高斯分布。

于是, ε ( i ) \varepsilon^{(i)} ε(i) 的概率分布就可以写为:

P ( ε ( i ) ) = 1 2 π σ exp ⁡ ( − ε ( i ) 2 2 σ 2 ) (2) P\left(\varepsilon^{(i)}\right)=\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{\varepsilon^{(i)2}}{2\sigma^2}\right)\tag2 P(ε(i))=2π σ1exp(2σ2ε(i)2)(2)

我们将 ( 1 ) (1) (1) 代入 ( 2 ) (2) (2) 式,则有:

P ( ε ( i ) ) = 1 2 π σ exp ⁡ ( − ε ( i ) 2 2 σ 2 ) = 1 2 π σ exp ⁡ ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) = P ( y ( i ) ∣ x ( i ) ; θ ) \begin{aligned}P\left(\varepsilon^{(i)}\right)&=\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{\varepsilon^{(i)2}}{2\sigma^2}\right)\\ &=\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{\left(y^{(i)}-\theta^T\bold{x}^{(i)}\right)^2}{2\sigma^2}\right)=P\left(y^{(i)}|\bold{x}^{(i)};\theta\right)\end{aligned} P(ε(i))=2π σ1exp(2σ2ε(i)2)=2π σ1exp(2σ2(y(i)θTx(i))2)=P(y(i)x(i);θ)

这个式子的含义是我们可以用 x ( i ) , y ( i ) \bold{x}^{(i)}, y^{(i)} x(i),y(i) 代替 ε \varepsilon ε ,从而得到一个关于 x ( i ) , y ( i ) \bold{x}^{(i)}, y^{(i)} x(i),y(i) 的概率分布,即 y ( i ) ∣ x ( i ) ; θ ∽ N ( θ T x ( i ) , σ 2 ) y^{(i)}|\bold{x}^{(i)};\theta\backsim N\left(\theta^T\bold{x}^{(i)}, \sigma^2\right) y(i)x(i);θN(θTx(i),σ2)。注意在这个式子中,决定 y ( i ) y^{(i)} y(i) 的参数仅仅是 x ( i ) \bold{x}^{(i)} x(i),而 θ \theta θ 则是被看作与之无关的参数,我们需要通过改变 θ \theta θ 的值使所得分布最接近 P ( y ( i ) ∣ x ( i ) ; θ ) P\left(y^{(i)}|\bold{x}^{(i)};\theta\right) P(y(i)x(i);θ),这一过程就是常说的最大似然(maximize likelyhood),详见概率论相关知识,这里不作赘述。那么我们这里的似然函数就是:

L ( θ ) = P ( y ∣ X ; θ ) = ∏ i = 1 m P ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m 1 2 π σ exp ⁡ ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) \begin{aligned}L(\theta)&=P\left(\bold{y}|X;\theta\right)\\ &=\prod_{i=1}^m P\left(y^{(i)}|\bold{x}^{(i)};\theta\right)\\ &=\prod_{i=1}^m \frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{\left(y^{(i)}-\theta^T\bold{x}^{(i)}\right)^2}{2\sigma^2}\right) \end{aligned} L(θ)=P(yX;θ)=i=1mP(y(i)x(i);θ)=i=1m2π σ1exp(2σ2(y(i)θTx(i))2)

为了使上式最大化,我们需要求其导数,而直接利用计算上式的导数并不容易,于是我们常常对其取对数后再求导(对式子取 log ⁡ \log log 并不会改变其极值大小)。我们令 l ( θ ) = log ⁡ ( L ( θ ) ) l(\theta)=\log\left(L(\theta)\right) l(θ)=log(L(θ)),则有

l ( θ ) = log ⁡ ( ∏ i = 1 m 1 2 π σ exp ⁡ ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) ) = ∑ i = 1 m log ⁡ ( 1 2 π σ exp ⁡ ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) ) = ∑ i = 1 m [ log ⁡ ( 1 2 π σ ) + log ⁡ ( exp ⁡ ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) ) ] = ∑ i = 1 m log ⁡ 1 2 π σ + ∑ i = 1 m − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 = ∑ i = 1 m log ⁡ 1 2 π σ − 1 2 σ 2 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 \begin{aligned}l(\theta)&=\log\left(\prod_{i=1}^m \frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{\left(y^{(i)}-\theta^T\bold{x}^{(i)}\right)^2}{2\sigma^2}\right)\right)\\ &=\sum_{i=1}^m \log\left(\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{\left(y^{(i)}-\theta^T\bold{x}^{(i)}\right)^2}{2\sigma^2}\right)\right)\\ &=\sum_{i=1}^m \left[\log\left(\frac{1}{\sqrt{2\pi}\sigma}\right)+\log\left(\exp\left(-\frac{\left(y^{(i)}-\theta^T\bold{x}^{(i)}\right)^2}{2\sigma^2}\right)\right)\right]\\ &=\sum_{i=1}^m \log\frac{1}{\sqrt{2\pi}\sigma}+\sum_{i=1}^m-\frac{\left(y^{(i)}-\theta^T\bold{x}^{(i)}\right)^2}{2\sigma^2}\\ &=\sum_{i=1}^m \log\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{2\sigma^2}\sum_{i=1}^m\left(y^{(i)}-\theta^T\bold{x}^{(i)}\right)^2 \end{aligned} l(θ)=log(i=1m2π σ1exp(2σ2(y(i)θTx(i))2))=i=1mlog(2π σ1exp(2σ2(y(i)θTx(i))2))=i=1m[log(2π σ1)+log(exp(2σ2(y(i)θTx(i))2))]=i=1mlog2π σ1+i=1m2σ2(y(i)θTx(i))2=i=1mlog2π σ12σ21i=1m(y(i)θTx(i))2

利用 log ⁡ \log log 函数我们巧妙地将求积操作变成了求和操作,并对式子进行简化。从上式中我们可以发现:式子中的第一项是一个常数,第二项中的系数也是一个常数,因此,最大化 l ( θ ) l(\theta) l(θ) 就等价于最小化 ∑ i = 1 m ( y ( i ) − θ T x ( i ) ) 2 \sum_{i=1}^m\left(y^{(i)}-\theta^T\bold{x}^{(i)}\right)^2 i=1m(y(i)θTx(i))2,而这就是我们在上一节课中定义的平方误差项 J ( θ ) J(\theta) J(θ),后续计算与上节课无异。至此,我们便完成了从概率角度出发推导的线性回归。


分类(classification)与逻辑回归(logistic regression)

接下来,我们来看一个非常常见的任务:分类任务。假设我们的 y y y 值分为 { 0 , 1 } \{0, 1\} {0,1} 两类,那么我们应该怎么来预测呢?很简单,我们可以用线性回归找到一个函数,然后定义若预测值 y > 0.5 y>0.5 y>0.5 则判定结果为 1 1 1 类,否则结果为 0 0 0 类。如下图所示,
[CS229学习笔记] 3.欠拟合与过拟合,局部加权线性回归,线性回归的概率解释,逻辑回归,及感知机学习算法_第3张图片
可以看到当分类的结果是正确的,红线为所求得的线性方程,当预测值高于 0.5 0.5 0.5,即图中红点时,我们将其判定为 1 1 1 类,否则为 0 0 0 类。但是这种做法也会带来一个问题:由于我们采用的训练点并不是均匀的,导致预测曲线发生了很大偏移,预测值全部错误。
[CS229学习笔记] 3.欠拟合与过拟合,局部加权线性回归,线性回归的概率解释,逻辑回归,及感知机学习算法_第4张图片
那么如何使预测曲线更稳定呢?接下来我们就要介绍一个更稳定的分类算法:逻辑回归(Logistic Regression)。逻辑回归的思想很简单,我们只需在线性回归的基础上加一层新的函数

g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1

我们将这个函数称为Sigmoid函数(或者逻辑函数Logistic function)。函数图像如下所示,可以看到逻辑函数将输入 z z z 光滑地映射到了区间 { 0 , 1 } \{0, 1\} {0,1} 之内。
[CS229学习笔记] 3.欠拟合与过拟合,局部加权线性回归,线性回归的概率解释,逻辑回归,及感知机学习算法_第5张图片
结合线性回归,我们可以得到逻辑回归的预测方程为:

h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_\theta(\bold{x})=g(\theta^T\bold{x})=\frac{1}{1+e^{-\theta^T\bold{x}}} hθ(x)=g(θTx)=1+eθTx1

相比线性回归,逻辑回归有几个突出的优点:1. 逻辑回归可用于分类任务, z = 0 z=0 z=0 可以作为决策边界,同时比用线性回归分类稳定很多;2. 逻辑回归可以求导,这导致其被广泛用于神经网络结构中;3. 输出结果介于 0 , 1 0, 1 0,1 之间,可以作为概率输出。

需要注意的是,逻辑函数虽然是一个非线性变换函数,但是逻辑回归本身却是一个线性模型。原因是我们在使用逻辑函数进行分类时,仅仅是作了一个非线性的拉伸变换,并不会影响到分类的结果。

上面提到了逻辑回归可以看作是一个概率输出,那么我们不妨从概率的角度出发推导一下逻辑回归中 θ \theta θ 的求导公式。首先,根据定义,对某一样本点,我们可将它的逻辑函数看作是一个预测类结果为 1 1 1 的概率分布,即

P ( y = 1 ∣ x ; θ ) = h θ ( x ) (3) P\left(y=1|\bold{x};\theta\right)=h_\theta(\bold{x})\tag3 P(y=1x;θ)=hθ(x)(3)

那么自然地,预测结果为 0 0 0 的概率分布就可以写为

P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) (4) P\left(y=0|\bold{x};\theta\right)=1-h_\theta(\bold{x})\tag4 P(y=0x;θ)=1hθ(x)(4)

由于我们使用的是 0 , 1 0, 1 0,1 分类,这里可以用一个小技巧把 ( 3 ) , ( 4 ) (3), (4) (3),(4) 写成一个式子:

P ( y ∣ x ; θ ) = h θ ( x ) y ( 1 − h θ ( x ) ) 1 − y P\left(y|\bold{x};\theta\right)=h_\theta(\bold{x})^y\left(1-h_\theta(\bold{x})\right)^{1-y} P(yx;θ)=hθ(x)y(1hθ(x))1y

对于所有样本点,我们可以写出似然函数:

L ( θ ) = P ( y ∣ X ; θ ) = ∏ i = 1 m h θ ( x ( i ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) 1 − y ( i ) L(\theta)=P\left(\bold{y}|X;\theta\right)=\prod_{i=1}^mh_\theta(\bold{x}^{(i)})^{y^{(i)}}\left(1-h_\theta(\bold{x}^{(i)})\right)^{1-y^{(i)}} L(θ)=P(yX;θ)=i=1mhθ(x(i))y(i)(1hθ(x(i)))1y(i)

相同地,我们先取其对数,有

l ( θ ) = log ⁡ L ( θ ) = ∑ i = 1 m log ⁡ ( h θ ( x ( i ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) 1 − y ( i ) ) = ∑ i = 1 m [ y ( i ) log ⁡ h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] \begin{aligned}l(\theta)=\log L(\theta)&=\sum_{i=1}^m\log\left(h_\theta(\bold{x}^{(i)})^{y^{(i)}}\left(1-h_\theta(\bold{x}^{(i)})\right)^{1-y^{(i)}}\right)\\ &=\sum_{i=1}^m\left[y^{(i)}\log h_\theta(\bold{x}^{(i)})+\left(1-y^{(i)}\right)\log\left(1-h_\theta(\bold{x}^{(i)})\right)\right]\end{aligned} l(θ)=logL(θ)=i=1mlog(hθ(x(i))y(i)(1hθ(x(i)))1y(i))=i=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]

这里提一下,取了对数之后的似然函数也可以看作是一个负号的对数损失函数 loss = − log ⁡ L ( θ ) \text{loss}=-\log L(\theta) loss=logL(θ),原因是最大化似然函数等价于最小化损失函数。由于我们需要最大化似然函数,因此这里我们可以采用梯度上升法更新 θ \theta θ

θ ≔ θ + α ∇ θ l ( θ ) \theta \coloneqq \theta+\alpha\nabla_\theta l(\theta) θ:=θ+αθl(θ)

于是我们需要进一步求得函数 l ( θ ) l(\theta) l(θ) 关于 θ \theta θ 的微分,对 l ( θ ) l(\theta) l(θ) 的第 j j j 个特征的方向进行微分可得:

∂ ∂ θ j l ( θ ) = ∂ ∂ θ j ∑ i = 1 m [ y ( i ) log ⁡ h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] = ∂ ∂ θ j ∑ i = 1 m [ − y ( i ) log ⁡ ( 1 + e − θ T x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( e − θ T x ( i ) 1 + e − θ T x ( i ) ) ] = ∂ ∂ θ j ∑ i = 1 m [ − y ( i ) log ⁡ ( 1 + e − θ T x ( i ) ) + ( 1 − y ( i ) ) log ⁡ e − θ T x ( i ) − ( 1 − y ( i ) ) log ⁡ ( 1 + e − θ T x ( i ) ) ] = ∑ i = 1 m [ ∂ ∂ θ j ( 1 − y ( i ) ) log ⁡ e − θ T x ( i ) − ∂ ∂ θ j log ⁡ ( 1 + e − θ T x ( i ) ) ] = ∑ i = 1 m [ ( y ( i ) − 1 ) x j ( i ) − e − θ T x ( i ) 1 + e − θ T x ( i ) ( − x j ( i ) ) ] = ∑ i = 1 m [ ( y ( i ) − 1 ) x j ( i ) − ( 1 − h θ ( x ( i ) ) ) ( − x j ( i ) ) ] = ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) \begin{aligned}\frac{\partial}{\partial\theta_j}l(\theta)&=\frac{\partial}{\partial\theta_j}\sum_{i=1}^m\left[y^{(i)}\log h_\theta(\bold{x}^{(i)})+\left(1-y^{(i)}\right)\log\left(1-h_\theta(\bold{x}^{(i)})\right)\right]\\ &=\frac{\partial}{\partial\theta_j}\sum_{i=1}^m\left[-y^{(i)}\log \left(1+e^{-\theta^T \bold{x}^{(i)}}\right)+\left(1-y^{(i)}\right)\log\left(\frac{e^{-\theta^T \bold{x}^{(i)}}}{1+e^{-\theta^T \bold{x}^{(i)}}}\right)\right]\\ &=\frac{\partial}{\partial\theta_j}\sum_{i=1}^m\left[-y^{(i)}\log \left(1+e^{-\theta^T \bold{x}^{(i)}}\right)+\left(1-y^{(i)}\right)\log e^{-\theta^T \bold{x}^{(i)}}-\left(1-y^{(i)}\right)\log\left(1+e^{-\theta^T \bold{x}^{(i)}}\right)\right]\\ &=\sum_{i=1}^m\left[\frac{\partial}{\partial\theta_j}\left(1-y^{(i)}\right)\log e^{-\theta^T \bold{x}^{(i)}}-\frac{\partial}{\partial\theta_j}\log\left(1+e^{-\theta^T \bold{x}^{(i)}}\right)\right]\\ &=\sum_{i=1}^m\left[\left(y^{(i)}-1\right)\bold{x}_j^{(i)}-\frac{e^{-\theta^T\bold{x}^{(i)}}}{1+e^{-\theta^T\bold{x}^{(i)}}}\left(-\bold{x}_j^{(i)}\right)\right]\\ &=\sum_{i=1}^m\left[\left(y^{(i)}-1\right)\bold{x}_j^{(i)}-\left(1-h_\theta(\bold{x}^{(i)})\right)\left(-\bold{x}_j^{(i)}\right)\right]\\ &=\sum_{i=1}^m\left(y^{(i)}-h_\theta(\bold{x}^{(i)})\right)\bold{x}_j^{(i)}\end{aligned} θjl(θ)=θji=1m[y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]=θji=1m[y(i)log(1+eθTx(i))+(1y(i))log(1+eθTx(i)eθTx(i))]=θji=1m[y(i)log(1+eθTx(i))+(1y(i))logeθTx(i)(1y(i))log(1+eθTx(i))]=i=1m[θj(1y(i))logeθTx(i)θjlog(1+eθTx(i))]=i=1m[(y(i)1)xj(i)1+eθTx(i)eθTx(i)(xj(i))]=i=1m[(y(i)1)xj(i)(1hθ(x(i)))(xj(i))]=i=1m(y(i)hθ(x(i)))xj(i)

因此,对于每一个特征对应的参数 θ j \theta_j θj ,我们可以用下式来更新:

θ j ≔ θ j + α ∑ i = 1 m ( y ( i ) − h θ ( x ( i ) ) ) x j ( i ) \Large \theta_j \coloneqq \theta_j+\alpha \sum_{i=1}^m\left(y^{(i)}-h_\theta(\bold{x}^{(i)})\right)\bold{x}_j^{(i)} θj:=θj+αi=1m(y(i)hθ(x(i)))xj(i)

看到这里,我们会发现这个更新式与线性回归的梯度下降更新式非常相似,但是两者却用了不同的损失函数(最小均方误差与对数损失函数)。这不是偶然,事实上,这是一种通用的学习模型的一种更新梯度的形式,我们会在后续课程中仔细讲解。

[CS229学习笔记] 3.欠拟合与过拟合,局部加权线性回归,线性回归的概率解释,逻辑回归,及感知机学习算法_第6张图片
最后,我们给出之前提到的例子的逻辑回归解法,如上图所示。可以看到使用逻辑回归之后的曲线比使用线性回归的曲线稳定得多。


感知机(perceptron)学习算法

最后,课程简单介绍了感知机模型。与上述逻辑回归类似地,感知机模型也是在线性回归的基础上加了一个新函数,这个函数为

g ( z ) = sign ( z ) = { 1 , z ⩾ 0 0 , z < 0 g(z)=\text{sign}(z)=\begin{cases}1, &z\geqslant0\\ 0,&z<0\end{cases} g(z)=sign(z)={1,0,z0z<0

相比逻辑回归,感知机模型更加简单,它直接用 0 0 0 作为决策边界把预测值分为 0 , 1 0, 1 0,1 两类。有些文章中会把 z = 0 z=0 z=0 的点的值定义为 0.5 0.5 0.5,其实效果是一样的。感知机模型的预测函数就可以写为:

h θ ( x ) = g ( θ T x ) = sign ( θ T x ) \Large h_\theta(x)=g(\theta^T\bold{x})=\text{sign}(\theta^T\bold{x}) hθ(x)=g(θTx)=sign(θTx)

你可能感兴趣的:(学习笔记-机器学习)