分析101

机器什么时候能够学习?

2020-08-11  本文已影响0人  Boye0212

本系列是台湾大学资讯工程系林軒田(Hsuan-Tien Lin)教授开设的《机器学习基石》课程的梳理。重在梳理,而非详细的笔记,因此可能会略去一些细节。

该课程共16讲,分为4个部分:

  1. 机器什么时候能够学习?(When Can Machines Learn?)
  2. 机器为什么能够学习?(Why Can Machines Learn?)
  3. 机器怎样学习?(How Can Machines Learn?)
  4. 机器怎样可以学得更好?(How Can Machines Learn Better?)

本文是第1部分,对应原课程中的1-3讲。虽然第4讲在原课程中也放入了第1部分,但我认为它与后面第2部分的连贯性更强,因此移到后面。

本部分的主要内容:

1 机器学习的概念

1.1 定义

机器学习的定义:improving some performance measure with experience computed from data

什么时候可以用机器学习?有几个关键的地方:

1.2 组成部分

机器学习的实用定义如下图(灰字是以信用卡审批为例):

可以看到,机器学习有以下几个要素:

机器学习的实用定义:使用数据计算出最接近于目标函数f假设g

1.3 和其他领域的关系

1.3.1 数据挖掘(DM)

数据挖掘:用(大)数据寻找感兴趣的性质。

在现实中,很难区分ML和DM。

1.3.2 人工智能(AI)

人工智能:计算一些的有智能行为的东西。

如果g\approx f就是那个有智能行为的东西,那么ML可用于实现AI。

如下棋,传统AI的做法是做博弈树,而ML的做法是从大量数据中进行学习。因此,机器学习是实现人工智能的一种途径。

1.3.3 统计学(Statistics)

统计学:使用数据对未知过程进行推断。

统计学为机器学习提供了很多有用的工具。

2 分类学习之感知机模型

2.1 PLA

这里介绍一个简单的分类模型:感知机(Perceptron)。

回顾上一节,在假设集\mathcal{H}中,我们可以使用哪些假设?

在分类问题中,要预测的变量是正/负,或表示成+1/-1。我们可以对自变量做线性加权求和,然后设定一个阈值,若高于阈值,则分类为正,若低于阈值,则分类为负。若将“阈值”也看作在自变量中补入的常数项(\mathbb{w}中补入对应的常数1),则这个模型可以写作h(x)=\text{sign}(\mathbf{w}^T\mathbf{x})

每一个\mathbb{w},都对应了一个假设。

那么,要如何从假设集\mathcal{H}中找出最接近于目标函数的g呢?也就是如何找出最好的\mathbb{w}

可以这样做,先任意设一个初始的\mathbf{w}_0(比如\mathbf{0}),然后:

  1. 从该点开始,寻找错误分类的样本点,即找到满足\text{sign}(\mathbf{w}^T_t \mathbf{x}_{n(t)})\ne y_{n(t)}的点(\mathbf{x}_{n(t)}, y_{n(t)})
  2. 利用找到的错误分类点对\mathbf{w}进行更新,更新规则是:\mathbf{w}_{t+1}\leftarrow\mathbf{w}_t +y_{n(t)}\mathbf{x}_{n(t)}
  3. 不断重复上述过程,直到找不出错误分类的点为止,最终得到要找的\mathbf{w}_{PLA},把它作为g

这就是感知机学习算法PLA(Perceptron Learning Algorithm)。更新规则的图示如下:

但是,以上算法仍然有不少问题:

2.2 PLA会停下吗?

PLA能停下来的必要条件是,存在一些\mathbf{w}可以在\mathcal{D}内不会犯错。这叫线性可分(linear separable)条件。那么,线性可分是PLA能停下来的充分条件吗?

答案是肯定的。证明的思路是,既然数据集线性可分,则一定存在某个\mathbf{w}将样本完美分开,记为\mathbf{w}_f,只需证明在经过有限次的迭代后的\mathbf{w}\mathbf{w}_f的夹角的余弦的下限会超过1即可(因为余弦无法超过1,如果在经过特定次数的迭代后余弦的下限超过了1,说明在上一次迭代之后必定已经完成了完美的分类,无法找出错误分类的点进行迭代了),而余弦可以从分子(两个向量的内积)和分母(两个向量模的乘积)分别突破。具体证明如下:

因为\mathbf{w}_f能完美分开数据集中的样本,即满足
y_{n(t)}\mathbf{w}_f^T \mathbf{x}_{n(t)}\ge \min_n y_n \mathbf{w}_f^T \mathbf{x}_n \gt 0

可令\min_\limits{n} y_n \dfrac{\mathbf{w}_f^T}{\Vert \mathbf{w}_f\Vert} \mathbf{x}_n=\rho,则有

\begin{aligned} \mathbf{w}_f^T\mathbf{w}_t &= \mathbf{w}_f^T(\mathbf{w}_{t-1}+y_{n(t-1)}\mathbf{x}_{n(t-1)})\\ &\ge \mathbf{w}_f^T\mathbf{w}_{t-1}+\rho\Vert\mathbf{w}_f\Vert\\ &\ge t\rho\Vert\mathbf{w}_f\Vert \end{aligned}

而更新一定是在犯错的点处,所以触发第t次更新的样本一定满足y_{n(t-1)}\mathbf{w}^T_{t-1} \mathbf{x}_{n(t-1)}\le 0。令R^2=\max_\limits{n} \Vert x_n\Vert^2R>0),则有

\begin{aligned} \Vert\mathbf{w}_t\Vert^2 &= \Vert\mathbf{w}_{t-1}+y_{n(t-1)}\mathbf{x}_{n(t-1)}\Vert^2\\ &= \Vert\mathbf{w}_{t-1}\Vert^2+2y_{n(t-1)}\mathbf{w}^T_{t-1} \mathbf{x}_{n(t-1)}+\Vert\mathbf{x}_{n(t-1)}\Vert^2\\ &\le \Vert\mathbf{w}_{t-1}\Vert^2+\Vert\mathbf{x}_{n(t-1)}\Vert^2\\ &\le \Vert\mathbf{w}_{t-1}\Vert^2 + R^2\\ &\le t R^2 \end{aligned}

接下来就看一看在经过T次迭代后得到的\mathbf{w}_{T},它和\mathbf{w}_f的夹角的余弦:
\begin{aligned} &\dfrac{\mathbf{w}_f^T\mathbf{w}_{T}}{\Vert\mathbf{w}_f\Vert\Vert\mathbf{w}_{T}\Vert} \ge \dfrac{T\rho\Vert\mathbf{w}_f\Vert}{\Vert\mathbf{w}_f\Vert \sqrt{T R^2}}=\sqrt{T}\dfrac{\rho}{R} \end{aligned}

而余弦必定小于1,因此必有迭代次数T\le \dfrac{R^2}{\rho^2}证明完毕

从直觉上理解,PLA算法通过不断迭代,可以使得\mathbf{w}越来越接近于\mathbf{w}_f

PLA算法的优点是简单、快、对任意维度的数据都可用,但缺点在于,一方面我们假设了数据集\mathcal{D}是线性可分的,而现实中我们不知道是否真的如此,另一方面我们不知道它到底多久会停下,尽管在实践中算法往往很快停下。

2.3 Pocket算法

如果数据中有噪声,导致数据集不是线性可分的,怎么办?


当然,可以直接取\mathop{\arg\min}\limits_{w}\sum\limits_{n=1}^{N}{\mathbf{1}_{[y_n\ne \text{sign}(\mathbf{w}^T\mathbf{x}_n)]}}作为\mathbf{w}_g,但由于要一一遍历所有样本,这是个NP-hard问题。

那怎么办呢?可以对PLA做一些修改:

由于始终有一个\hat{\mathbf{w}}在口袋中,因此这种算法被称为Pocket算法。

3. 学习的分类

依据输出空间\mathcal{Y}的不同来分:

依据数据标签y_n的不同来分:

依据f\Rightarrow (\mathbf{x}_n, y_n)的不同来分:

依据输入空间\mathcal{X}的不同来分:

我的公众号
上一篇 下一篇

猜你喜欢

热点阅读