1 简介
1.1 机器学习是什么,为什么需要机器学习?
现在我们进入了大数据时代,每天都会有大量的图片、视频等数据产生。然而,我们该如何从这海量的数据中获取我们需要的信息呢?显然靠人工操作是不可能的,所以需要一种自动化的数据分析方法,这就是机器学习主要功能。所以,机器学习到底是什么呢?
百度给的定义是:机器学习是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式,并将现有内容进行知识结构划分来有效提高学习效率。 说实话,这句话我看着感觉太笼统,获取不到啥有用信息,还是不知道机器学习是啥。下面就来介绍下书中的定义。
机器学习是可以自动检测数据中的模式信息,然后使用未发现的模式信息来预测未来的数据,或者在不确定的情况下执行其他类型的决策的一组方法。机器学习给予我们的是根据现有数据对未来预测或决策的一种指导。
此书中,将使用概率论工具来解决机器学习的相关问题。概率论能够被应用到很多问题中,当然也包括不确定性上。然而,在机器学习中,不确定性是普遍存在的。例如:
(1)根据过去的数据得到对未来的预测那个是最好的?
(2)哪个是解释目前数据的最好模型?
因此,使用概率论方法能够更好地解决机器学习的问题。就我理解,机器学习问题本质上就是一个概率问题,无论是输入(已有事件的出现概率等),计算(归一化等优化计算方法等),还是输出(与理论正解的偏离度等)都是一些概率,它也只能给我们一个概率,因为无法做出绝对肯定或者正确的预测或决策。
1.1.1 机器学习的一些方法
机器学习通常被分为两类。第一类是预测或监督学习方法,第二类是描述性的或无监督学习方法。如果有第三类的话就是强化学习,但是这个并不常用。后面将会介绍这几种方法。
1.2 监督学习
监督学习在机器学习中被广泛地应用,简单地说,监督学习就是学习一组数据,这些数据具有输入 x x x到输出 y y y的映射,类似于对于训练集中每个输入都有一个标签与之对应,我们要学习就是输入到这个标签的映射。下面来介绍下监督学习的几种情况及其相关的应用实例。
1.2.1 分类
分类问题其实就是去学习一个从输入
x
x
x到输出
y
y
y的一个映射,其中
y
∈
{
1
,
.
.
.
,
C
}
y\in\{1,...,C\}
y∈{1,...,C},其中
C
C
C是类别数量。如果
C
=
2
C=2
C=2就是一个二分类问题,如果
C
>
2
C>2
C>2就是一个多分类问题。
为了去形式化这个问题,我们采用函数逼近的方法,我们假设一个未知函数
y
=
f
(
x
)
y=f(x)
y=f(x),机器学习的目的就是在给定带标签的训练集的情况下去估计函数
f
f
f,然后使用
y
^
=
f
^
(
x
)
\widehat y=\widehat f(x)
y
=f
(x)做出预测。主要的目的就是对之前没有见过新的输入进行预测(也叫做泛化)。为什么对之前没有见过的输入进行预测呢?如果输入之前见过,代表之前学习过,会很容易做出预测相应,给出预测结果,这时往往结果不具有随机性和普遍性。
1.2.1.1 举例
观察上面图片,我们将训练的图形分为了两类,其中yes对应的label为1,no对应的label为0。对于我们现在需要进行分类的下面三个图形,蓝色月亮我们很容易地归为yes,因为所有蓝色图形都在yes中,但是黄色的圆圈就比较难去分类了,因为有些黄色的图形在yes,有些在no。蓝色箭头也是一样。
为了解决这个问题,我们就需要给出一个分类的概率(这里需要一些概率论的知识,不懂的话可以去学习下概率分布那一块)。我们将用给定的输入向量
x
x
x和训练集
D
D
D组成的概率
p
(
y
∣
x
,
D
)
p(y|x,D)
p(y∣x,D)来表示在训练集为
D
D
D,输入为
x
x
x预测标签为
y
y
y的概率。
通过使用公式
y
^
=
f
^
(
x
)
=
arg max
p
(
y
=
c
∣
x
,
D
)
,
(
c
=
1
,
.
.
.
,
C
)
\widehat y=\widehat f(x)=\argmax p(y=c|x,D), (c=1,...,C)
y
=f
(x)=argmaxp(y=c∣x,D),(c=1,...,C)
在给定一个概率输出,我们我们总是可以计算我们对“真实标签”的“最佳猜测”。此公式也被称为MAP估计(maximum a posteriori probability estimate)。下面简单介绍下MAP。
根据贝叶斯理论,对于
Θ
\Theta
Θ的后验分布
f
(
θ
∣
x
)
=
f
(
x
∣
θ
)
g
(
θ
)
∫
θ
∈
Θ
f
(
x
∣
θ
′
)
g
(
θ
′
)
d
θ
′
f(\theta|x)=\frac{f(x|\theta)g(\theta)}{\int_{\theta \in \Theta}f(x|\theta^{'})g(\theta^{'})d\theta^{'}}
f(θ∣x)=∫θ∈Θf(x∣θ′)g(θ′)dθ′f(x∣θ)g(θ)
后验分布的目标为:
θ
^
M
A
P
=
f
(
θ
∣
x
)
=
arg max
f
(
x
∣
θ
)
g
(
θ
)
∫
θ
∈
Θ
f
(
x
∣
θ
′
)
g
(
θ
′
)
d
θ
′
=
arg max
f
(
x
∣
θ
)
g
(
θ
)
{\widehat {\theta}} _{MAP}=f(\theta|x)=\argmax \frac{f(x|\theta)g(\theta)}{\int_{\theta \in \Theta}f(x|\theta^{'})g(\theta^{'})d\theta^{'}}=\argmax f(x|\theta)g(\theta)
θ
MAP=f(θ∣x)=argmax∫θ∈Θf(x∣θ′)g(θ′)dθ′f(x∣θ)g(θ)=argmaxf(x∣θ)g(θ)
MAP认为,y是一个随机变量,其先验概率密度函数是已知的,为
P
(
y
)
P(y)
P(y),所以其目标为:
θ
^
M
A
P
=
p
(
θ
∣
x
)
=
arg max
p
(
x
∣
θ
)
p
(
θ
)
{\widehat {\theta}} _{MAP}=p(\theta|x)=\argmax p(x|\theta)p(\theta)
θ
MAP=p(θ∣x)=argmaxp(x∣θ)p(θ)
简单说就是我拿到了一组样本
x
x
x,我觉得这肯定不是一种偶然,我以
θ
\theta
θ这种方式拿到样本
x
x
x的概率一定是所有可能性
p
(
x
)
p(x)
p(x)中最大的,用数学符号简化一下就是:
p
(
x
∣
θ
)
p
(
θ
)
p(x|\theta)p(\theta)
p(x∣θ)p(θ)是
p
(
x
)
p(x)
p(x)中最大的,即
p
(
θ
∣
x
)
p(\theta|x)
p(θ∣x)最大(这里是因为
p
(
θ
∣
x
)
∝
p
(
x
∣
θ
)
p
(
θ
)
p(\theta|x)\propto p(x|\theta)p(\theta)
p(θ∣x)∝p(x∣θ)p(θ)),反过来说,我知道了
p
(
θ
∣
x
)
p(\theta|x)
p(θ∣x)的最大值,我就知道了
θ
\theta
θ最可能的取值,以这种思路求θ的过程就称为最大后验估计(MAP)
这里既然说到了MAP那就顺便说下MLE(最大似然估计),MLE认为
θ
\theta
θ是非随机变量或者是分布未知的变量,这两种情况都可以认为
P
(
θ
)
P(\theta)
P(θ)是均匀分布的,即该概率是一个固定值
P
(
θ
)
=
C
P(\theta) =C
P(θ)=C其目标为:
θ
^
M
L
E
=
arg max
P
(
x
∣
θ
)
C
=
arg max
P
(
x
∣
θ
)
,
其中
θ
∈
Θ
\widehat \theta_{MLE}=\argmax P(x|\theta)C=\argmax P(x|\theta) ,其中\theta\in \Theta
θ
MLE=argmaxP(x∣θ)C=argmaxP(x∣θ),其中θ∈Θ
这里我们举个简单的例子更好理解MAP和MLE的不同:
现在有两个袋子,第一个袋子装着50%的红球和50%的黑球,第二个袋子全部装着黑球。从同一个袋子中连续两次摸到黑球那么袋子最可能是两个中的哪一个。很显然,我们只要评估那个袋子摸到黑球的似然函数最大即可,即第二个袋子。
上面的似然函数有个问题,就是没有考虑到模型本身的概率分布。
假设拿到袋子1的概率为0.8,拿到袋子2的概率为0.2,那么这时就变成了MAP的问题。由
P
P
P的取值为0.5,1,
g
g
g的取值为0.9,0.1,求得MAP为0.225,0.1这时结果就不同了。
总的来说就是MAP与MLE最大区别是MAP中加入了模型参数本身的概率分布,或者说。MLE中认为模型参数本身的概率的是均匀的,即该概率为一个固定值。
当然监督学习的应用还有很多,例如花卉分类,图像分类,手写数字识别,人脸识别和检测等,这里就不再多说。
1.2.2 回归
回归和分类一样,只是其输出的变量是连续的。
上图(a)是线性回归,图(b)为多项式回归。
在回归中,我们要尽可能地让我们输出的连续变量曲线尽量拟合已有的数据分布,来达到最好的预测。
下面我们说几个回归的例子就能更好地理解了。
(1)根据当前的市场状况和其他可能的侧面信息预测明天的股票市场价格。
(2)预测在YouTube上观看给定视频的观众的年龄。
不难发现,这些输出价格,年龄都是连续的。
1.3 无监督学习
与监督学习不同,在无监督学习中我们不会被告知每个输入的期望输出是谁,也就是不知道那个”Label“。我们的目标变成了在数据中发现一些结构特征,这也被叫做知识发现。由于Label是人为标记的,这必然导致有Label的数据只包含了一部分信息,没有把源数据中的信息都利用起来,相比于监督学习,无监督学习不需要Label,所以无监督学习会充分利用数据信息进行学习,正是这个优点,使得无监督学习在某些方面会比监督学习表现出更强大的学习能力。
1.3.1 举例——聚类
聚类是无监督学习一个十分典型的例子。例如,图1.8(a)绘制了一些二维数据,表示210人的身高和体重。看起来可能有各种各样的集群,或子群(我们也可以叫做簇),虽然还不清楚有多少。设
K
K
K为簇的数量。我们首先需要做的是在簇的数量上估计其分布,即
p
(
K
∣
D
)
p(K|D)
p(K∣D),得到数据中的簇数量及其分布。为了简单起见,我们通常用
K
∗
=
arg max
K
p
(
K
∣
D
)
K^*=\argmax_Kp(K|D)
K∗=argmaxKp(K∣D)来近似
p
(
K
∣
D
)
p(K|D)
p(K∣D)。这里可能有点难理解,我们用例子简单解释下。在有监督的情况下,我们被告知有两个类(男性和女性),但在无监督的情况下,我们可以自由选择我们喜欢的数量或数量的集群。选择一个具有“正确”复杂性的模型称为模型选择,这就是我们需要在第一步需要进行的聚类模型选择。
我们的第二个目标是估计每个点属于哪个簇。设
z
i
∈
{
1
,
.
.
.
,
K
}
z_i\in\{1,...,K\}
zi∈{1,...,K}表示数据点
i
i
i被分配到的簇。我们能够通过计算
z
i
∗
=
arg max
k
p
(
z
i
=
k
∣
x
i
,
D
)
z_i^*=\argmax_kp(z_i=k|x_i,D)
zi∗=argmaxkp(zi=k∣xi,D)得到哪个点属于哪个簇。
在本书中,我们关注基于模型的聚类(model based clustering),这意味着我们将一个概率模型适合于数据,而不是运行一些特别的算法。基于模型的方法的优点是,人们可以客观地比较不同类型的模型(根据它们分配给数据的可能性),我们可以将它们组合成更大的系统,等等。
无监督学习的应用还有很多,比如发现图结构,矩阵补全,图像修补,协同过滤等等,这里不多说,有兴趣大家可以自己去探索探索。