1.没有免费午餐定理
机器学习的基本思路是:我们从已知的数据集D出发,经过训练,让机器得到一个好的函数g,利用函数g我们可以对未知的数据进行预测。但是,这种方法真的行的通吗?我们来看一个列子:
如下图所示,有三个标签为+1的九宫格,和三个标签为-1的九宫格,根据这6个样本,我们需要判断出 g ( x ) g(x) g(x)的取值是+1还是-1。我们可以认为 g ( x ) g (x) g(x)=+1。因为根据之前的样本,凡是等于+1的样本都是对称的,所以 g ( x ) g(x) g(x)=1,这样来分析好像很有道理。
但是,也有人说 g ( x ) g(x) g(x)=-1,理由是:凡是等于-1的样本,左上角第一个小正方形为黑色,很明显 g ( x ) g(x) g(x)满足这个要求。
除了以上两种分法,我们还可以根据其他不同的分法,得到不同的分类方式。并且都是正确的。因为对于所给的这六个样本点来说,我们的分类方式都是有效果的。
上述列子告诉我们,我们的g可能在训练集D上有很好的表现,但是在D之外的数据集上的表现,可能就没有那么优秀了。机器学习中称这种现象为没有免费午餐定理(NO Free Lunch)。NFL定理表明在任何领域,没有一个学习算法,可以完美的完成任务 但是,有的时候我们会说,一个算法得到的结果比另一个算法更好。这是针对特定的问题,特定的数据集,特定的场景。NLF算法表明:无法保证在D之外的数据上做出更好的分类或者说是预测。既然机器学习无法在新的数据集上有更好的表现,那么我们干嘛还要费劲心力的进行机器学习的研究。这是接下来进行分析的重点。
2.可能性估计
根据没有免费午餐定理,我们知道:没有任何一个算法可以在D之外的数据上做到正确的分类或者预测。那么是否有一些方法,让目标函数在D之外的数据上尽可能的做到完美。看一个简单的列子:
有一个罐子,罐子里面装有橙色和绿色两种颜色的小球。能否推断出橙色球所占据的比 u u u?在统计学上会这样处理这个问题:随便从罐子里面抓一把球出来作为sample,看一下在sample里面,橙色球占据的比列 v v v,用 v v v来近似的代替 u u u。特别的当sample越随机,越大的时候 v v v会更加的接近 u u u。
无论我们做的怎么好,sample取得多么完美,都不可能确保
v
v
v完全等于
u
u
u。下面用一个公式来衡量
v
v
v与
u
u
u的接近程度。也即霍夫定不等式:
P
[
∣
v
−
u
∣
>
ϵ
]
≤
2
e
x
p
(
−
2
ϵ
2
N
)
P[∣v−u∣>ϵ]≤2exp(−2ϵ ^2 N)
P[∣v−u∣>ϵ]≤2exp(−2ϵ2N)
该不等式告诉我们当N足够大的时候,
∣
v
−
u
∣
∣v−u∣
∣v−u∣的差值会足够的小。特别的当
v
=
u
v=u
v=u我们称其为 probably approximately correct(PAC)
机器学习的可能性
将上面分析的列子与机器学习进行关联,推算机器学习的hypothesis h(x)与目标函数
f
f
f相等的可能性。罐子里的一颗颗弹珠类比于机器学习样本空间的中的
x
x
x ,里面的绿色小球表示
h
(
x
)
=
f
h(x)=f
h(x)=f,橙色小球表示
h
(
x
)
≠
f
h(x)\neq{f}
h(x)=f
从罐子中取出的N个球,表示训练数据集D,且这两种抽样的样本与总体样本之间是独立同分布的。如果抽样样本 N够大,且是独立同分布的,那抽样样本中
h
(
x
)
=
f
h(x)=f
h(x)=f的概率就能推广到抽样样本之外的
h
(
x
)
=
f
h(x)=f
h(x)=f。
有一个关键问题将抽样样本中绿球的概率,视为训练集D上的正确的概率,在推广到训练集D之外的数据上这是机器学习能学到东西的本质。为什么训练集上得到的结果可以进行推广呢?这是因为二者的PCA是接近的。
先引入两个记号:
E
i
n
(
h
)
E_{in}(h)
Ein(h):训练集上的错误率。
E
o
u
t
(
h
)
E_{out}(h)
Eout(h)所有数据集上的错误率。根据霍夫定不等式:
P
[
∣
E
i
n
(
h
)
−
E
o
u
t
(
h
)
∣
>
ϵ
]
≤
2
e
x
p
(
−
2
ϵ
2
N
)
P[∣E_{in}(h)−E_{out}(h)∣>ϵ]≤2exp(−2ϵ ^2N)
P[∣Ein(h)−Eout(h)∣>ϵ]≤2exp(−2ϵ2N),
E
i
n
(
h
)
E_{in}(h)
Ein(h)和
E
o
u
t
(
h
)
E_{out}(h)
Eout(h)的PAC大概是相等的。 如果
E
i
n
(
h
)
E_{in}(h)
Ein(h)
≈
\approx
≈
E
o
u
t
(
h
)
E_{out}(h)
Eout(h), 并且
E
i
n
(
h
)
E_{in}(h)
Ein(h)足够的小, 那么
E
o
u
t
(
h
)
E_{out}(h)
Eout(h)也会很小, 我们就认为机器学习学到了东西。
4.机器学习的真实情况
通过上面的分析我们明白,当 E i n ( h ) E_{in}(h) Ein(h)足够的小时,机器可能学到了一些有用的东西。但是,是不是说 E i n ( h ) E_{in}(h) Ein(h)越小学习的效果就越好呢。在回答这个问题之前我们来思考一个关于抛硬币的列子。假如说有300个人,我们让每个人抛硬币5次,出现五次正面朝上的概率是大于0.99的,我们恰好选择了,五次正面朝上的那个结果作为样本。那么我们会得到一个 E i n ( h ) E_{in}(h) Ein(h)=0。显然这个 h h h并不是最好的,因为我们非常清楚,最好的结果应该是0.5。但是在300人都抛硬币的列子中,我们选出五次结果都是正面的概率是非常大的。这个列子告诉我们当样本的数量很多的时候可能会引发Bad Sample。
Bad Sample会导致
E
i
n
(
h
)
E_{in}(h)
Ein(h)和
E
o
u
t
(
h
)
E_{out}(h)
Eout(h)的差别过大。也就是过大的选择会使情况恶化。
我们进行多次抽样,得到不同的数据集D,霍夫定不等式能够保证大多数的D都是比较好的情况,但是也会有一些D使得
E
i
n
(
h
)
E_{in}(h)
Ein(h)和
E
o
u
t
(
h
)
E_{out}(h)
Eout(h)差别过大。当然这是小概率事件。
不同的数据集
D
n
D_n
Dn,对于不同的hypotheses,有可能成为Bad Data。也就是说只要
D
n
D_n
Dn在某个 hypotheses上表现为BAD,那么该
D
n
D_n
Dn就是BAD。只有当
D
n
D_n
Dn在所有的hypotheses表现为好的样本,那么该
D
n
D_n
Dn才是好的。可以自由选择演算法进行建模,那么,根据 霍夫定不等式,Bad Data 的上界可以表示为 连级(union bound) 的形式:
其中,M是hypothesis的个数,N是样本D的数量,该union bound表明,当M有限,且N足够大的时候,Bad Data出现的概率就更低了,即能保证D对于所有的h都有
E
i
n
(
h
)
E_{in}(h)
Ein(h)
≈
\approx
≈
E
o
u
t
(
h
)
E_{out}(h)
Eout(h)。所以,如果hypothesis的个数M是有限的,N足够大,那么通过演算法A任意选择一个 矩g,都有
E
i
n
(
h
)
E_{in}(h)
Ein(h)
≈
\approx
≈
E
o
u
t
(
h
)
E_{out}(h)
Eout(h),如果
E
i
n
(
h
)
E_{in}(h)
Ein(h)
≈
\approx
≈ 0那么我们就认为机器学到了东西。到目前为止,我们大概证明了机器学习是可行的。
思考:如果M是无限的又该怎么办呢?