Coursera林轩田机器学习基石课程总结--How Can Machine Learn?

台湾大学林轩田老师的《机器学习基石》课程由浅入深、内容全面,基本涵盖了机器学习领域的很多方面,作为机器学习的入门资料非常适合。很久之前看过这门课,但是有些地方还是不太明白,二刷这门课,把重要的知识总结起来,算是做一个复习,加深理解,也方便之后查阅。这篇文章介绍了第三部分How Can Machine Learn

How Can Machine Learn?

本章将介绍机器学习中比较常见的算法:Linear RegressionLogistic Regression

Linear Regression

线性回归的预测函数取值在整个实数空间,记做

h(x)=wTXh(x)=w^TX

根据上图,在一维或者多维空间里,线性回归的目标是找到一条直线(对应一维)、一个平面(对应二维)或者更高维的超平面,使样本集中的点更接近它,也就是残留误差Residuals最小化。一般最常用的错误测量方式是基于最小二乘法,其目标是计算误差的最小平方和对应的权重ww。此外需要提一点,最小二乘法可以解决线性问题和非线性问题,线性最小二乘法的解是closed-form,即X=(ATA)1ATyX=(A^TA)^{-1}A^Ty,而非线性最小二乘法没有closed-form,通常用迭代法求解。

样本数据误差EinE_{in}是权重ww的函数,因为XXyy都是已知的,我们的目标是找出合适的ww,使得EinE_{in}能够最小。

首先,运用矩阵转换的思想,将EinE_{in}计算转换为矩阵的形式。

然后,对于此类线性回归问题,Ein(w)E_{in}(w)一般是个凸函数,凸函数的话,我们只要找到一阶导数等于0的位置,就找到了最优解。那么,我们将EwE_{w}对每个wi,i=0,1,,dw_{i},i=0,1,\cdots ,d求偏导,偏导为零的wiw_i,即为最优化的权重值分布。

根据梯度的思想,对EwE_w进行矩阵化求偏导处理

令偏导为零,最终可以计算出权重向量ww

最终,我们推导得到了权重向量w=(XTX)1XTyw=(X^TX)^{-1}X^Ty,这是上文提到的closed-form解。其中,(XTX)1XT(X^TX)^{-1}X^T又称为伪逆矩阵pseudo-inverse,记为X+X^+,维度是N(d+1)N(d+1)

但是,我们注意到,伪逆矩阵中有逆矩阵的计算,逆矩阵(XTX)1(X^TX)^{-1}是否一定存在?一般情况下,只要满足样本数量N远大于样本特征维度d+1,就能保证矩阵的逆是存在的,称之为非奇异矩阵。但是如果是奇异矩阵,不可逆怎么办呢?其实,大部分的计算逆矩阵的软件程序,都可以处理这个问题,也会计算出一个逆矩阵。所以,一般伪逆矩阵是可解的。

Logistic Regression

一个心脏病预测的问题:根据患者的年龄、血压、体重等信息,来预测患者是否会有心脏病。很明显这是一个二分类问题,其输出y只有{-1,1}两种情况。

二元分类,一般情况下,理想的目标函数f(x)>0.5,则判断为正类1;若f(x)<0.5,则判断为负类-1。但是,如果我们想知道的不是患者有没有心脏病,而是到底患者有多大的几率是心脏病。这表示,我们更关心的是目标函数的值(分布在0,1之间),表示是正类的概率(正类表示是心脏病)。因此,我们需要找到一个特征加权和s(,+)s\in (-\infty ,+\infty),并将s的取值限定在[0,1]之间。一个方法是使用Sigmoid函数,记做θ(s)\theta (s),那么我们的目标就是找到一个hypothesis:h(x)=θ(wTx)h(x)=\theta (w^Tx)

Sigmoid函数记为θ(s)=11+es\theta (s)=\frac{1}{1+e^{-s}},满足θ()=0,θ(0)=12,θ(+)=1\theta (-\infty) = 0, \theta (0)=\frac{1}{2}, \theta (+\infty)=1,这个函数是平滑的、单调的S型函数,对于Logistic Regression问题,hypothesis的形式如下:

h(x)=11+ewTxh(x)=\frac{1}{1+e^{-w^Tx}}

因此,我们的目标就是求出这个预测函数h(x),使它接近目标函数f(x)。

且慢,我们将Logistic Regression与之前讲的Linear Classification、Linear Regression做个比较

Linear Classification的误差使用的是0/1 err;Linear Regression的误差使用的是squared err。那么Logistic Rregression的误差该如何定义呢?

先介绍一下“似然性”的概念,如果我们找到了hypothesis很接近目标函数f(x)f(x),也就是说,在所有的Hypothesis集合中找到一个hypothesis与目标函数最接近,能产生同样的数据集D,包含y输出label,则称这个hypothesis是最大似然likelihood。

h(x)=θ(wTx)h(x)=\theta (w^Tx)满足一个性质:1h(x)=h(x)1-h(x)=h(-x)。那么,似然性为likehood(h)=P(x1)h(+x1)P(x2)h(x2)P(xN)h(x)nlikehood(h)=P(x_1)h(+x_1)*P(x_2)h(-x_2)*\cdots *P(x_N)h(-x_)n

因为P(xn)P(x_n)对所有的h来说,都是一样的,所以我们可以忽略它。那么我们可以得到logistic h正比于所有的h(ynx)h(y_nx)乘积。我们的目标就是让乘积值最大化。我们将Logistic Regression的err function称之为交叉熵误差

err(W,X,Y)=ln(1+exp(ywx))err(W,X,Y)=ln(1+exp(-ywx))

那么接下来的问题就是如何找到合适的向量w,让EinE_{in}最小

minEin(W)=1Nn=1Nln(1+exp(ynWTxn))min\quad E_{in}(W)=\frac{1}{N}\sum^N_{n=1}ln(1+exp(-y_nW^Tx_n))

Logistic Regression的EinE_{in}是连续、可微、二次可微的凸曲线(开口向上),根据之前Linear Regression的思路,我们只要计算EinE_{in}的梯度为零时的w,即为最优解。我们把Ein(w)E_{in}(w)曲线看做是一个山谷的话,要求Ein(w)E_{in}(w)最小,即可比作下山的过程。整个下山过程由两个因素影响:一个是下山的单位方向w;另外一个是下山的步长η\eta

利用微分思想和线性近似,假设每次下山我们只前进一小步,即η\eta很小,那么根据泰勒Taylor一阶展开,可以得到

Ein(wt+ηv)Ein(wt)+ηvTEin(wt)E_{in}(w_t+\eta v)\approx E_in(w_t)+\eta v^T\bigtriangledown E_in(w_t)

迭代的目的是让EinE_{in}越来越小,即让Ein(wt+ηv)<Ein(wt)E_{in}(w_t+\eta v)<E_{in}(w_t)η\eta是标量, 因为如果两个向量方向相反的话,那么他们的内积最小(为负),也即是说如果方向vv与梯度反向的话,那么就能保证每次地跌 E_{in}(w_t_\eta v) < E_{in}(w_t)都成立。则,我们令下降方向为

v=Ein(wt)Ein(wt)v=-\frac{\bigtriangledown E_{in}(w_t)}{||\bigtriangledown E_{in}(w_t)||}

vv是单位方向,vv每次都是沿着梯度的反方向走,这种方法称为梯度下降(gradient descent)算法。那么每次迭代公式就可以写成

wt+1wtηEin(wt)Ein(wt)w_{t+1}\gets w_t-\eta \frac{\bigtriangledown E_{in}(w_t)}{||\bigtriangledown E_{in}(w_t)||}

下面讨论一下η\eta的大小对迭代优化的影响,η\eta如果太小的话,那么下降的速度就会很慢,η\eta如果很大的话,那么之前利用Taylor展开的方法就不准了,造成下降不稳定,甚至会上升。因此,η\eta应该选择合适的值,一种方法是在梯度较小的时候,选择小的η\eta,梯度较大的时候,选择大的η\eta

Author: Hongyi Guo
Link: https://guohongyi.com/2019/06/25/Coursera林轩田机器学习基石课程总结3/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.