要学习机器学习,首先得想明白机器学习为啥是可信的,下面就介绍几个我个人认为的机器学习的基础原理:
- Hoaffding定理:机器学习泛化误差上界
- bias & variance & error:模型预测误差的成分
- No Free Lunch Theorem:不存在在任何情况下准确性都好的模型
Hoaffding定理
Hoaffding定理是泛化能力的一种解释,现在在这我给出Hoaffding定理的证明和释义。
Jensen不等式
若函数
f(x)
再
x∈[a,b]
上
f′′(x)>0
,令
q∈[0,1],F(x)=qf(b)+(1−q)f(a)−f(qb+(1−q)a)
那么
F(0)=0
F(1)=0
F′(q)=f(b)−f(a)−(b−a)f′(qb+(1−q)a)=(b−a)(f′(θ)−f′(qb+(1−q)a))
由
f′′(x)>0
可知
F′(q)
先小于0然后大于0,所以
F(q)<=0
即函数
x∈[a,b]
时
f′′(x)>0
时,
q∈[0,1],qf(b)+(1−q)f(a)>f(qb+(1−q)a)
Markov不等式
假设
x
是大于
0
的随机变量,则有
E[x]=∫∞0xp(x)dx>∫ϵ00p(x)dx+∫∞ϵϵp(x)dx>ϵP(x>ϵ)
即
P(x>ϵ)<E[x]ϵ
引理
若
x∈[a,b],E[x]=0,t>0
,那么
P(x>s)=P(etx>ets)<E[etx]est
由
etx
为凸函数可知
etx<b−xb−aeta+x−ab−aetb
那么
E[etx]<b−E[x]b−aeta+E[x]−ab−aetb
令
p=t(b−a),h=ab−a
,那么有
bb−aeta−ab−aetb=eta[bb−a−ab−aet(b−a)]=eta[1+ab−a−ab−aet(b−a)]=exp(ph+ln(1+h−hep))
令
f(p)=ph+ln(1+h−hep)
,那么
f(0)=0
f′(p)=h−hep1+h−hep
f′(0)=0
f′′(p)=−hep(1+h−hep)+(hep)2(1+h−hep)2=(−hep1+h−hep)(1+h1+h−hep)
f′′(p)=y(1−y)<14
泰勒展开可得:
f(p)=f(0)+pf′(0)+p22f′′(θ)<p28
则
E[etx]<exp[(b−a)28t2]
则
P(x>s)<exp[−st+(b−a)28t2]
Hoaffding定理证明
设
r1,r2,...,rn
为模型的一组误差,为了简便,让他们分布在
[−0.5,0.5]
,均值为0,令
r^=∑irin,r=E[r^]
那么
P(r^−r>ϵ)=e−tϵE[et∑iri/n]=e−tϵ∏iE[etri/n]<exp[−tϵ+t28n]
令
t=4nϵ
,可得
P(x>s)<exp[−2nϵ2]
那么如果
k
个模型训练的模型误差都满足
P(r<r^+ϵ)<(1−kP(r−r^>ϵ))
(hoeffding不等式的对称性),则
P(r<r^+ϵ)<(1−k∗exp[−2nϵ2])
令
δ=k∗exp[−2nϵ2]
,则模型以
1−δ
的概率满足任意训练的模型满足
r<r^+12nlnkδ−−−−−−√
这就给了训练出来的模型一个误差上界,若是参数域为无穷,可用VC维来给定上界
个人不喜欢这个解释,不直观,太繁琐,而且是个loose bound,让感觉很难受。
bias & variance & error
机器学习学到的模型预测的结果和真实结果的误差来源于三个地方,也就是bias(偏差),variance(方差),error(噪声),用公式可以表示为:
ExL(f(x)+ϵ,f~(x)+[f^(x)−f^(x)])=F[ϵ,f(x)−f^(x),f^(x))−f~(x)]
f(x)
是客观世界的模型,
ϵ
是观察噪声或者是样本产生过程中的系统噪声,
f^(x)
是当前模型下能够学习到的最好的模型参数下的模型,
f~(x)
是用有限的训练样本实际训练出来的模型,
L
为损失函数,
ExL
为泛化误差。
我们把
|f(x)−f^(x)|
成为bias(偏差),它越大说明本身模型越简单(欠拟合)
|f^(x))−f~(x)|
成为variance(方差),它越大说明模型过拟合越严重(把噪声当作是模型的输出进行拟合)。
欠拟合产生的原因是拟合的模型过于简单,无法拟合真正的客观模型。
过拟合产生的原因是数据量太少,无法把模型的参数拟合得很好。
我们在进一步的挖掘一下,过拟合的原因从而更深刻的体会一下正则化的作用。
the amount of parameter vs the amount of data
Chebyshev 不等式 / 大数定理
由Markov不等式
P(x>ϵ)<E[x]ϵ
可得
P[(1n∑i=1nX−EX)2>ϵ]<E[(1n∑ni=1X−EX)2]ϵ=σ2ϵn2
数据量和模型参数误差的关系
模型参数可以看成是模型维度的数据统计量(例如模型就是预测值就是直接输出训练集的平均值,那么参数就直接是数据的平均),那么,当参数多了之后,相当于把数据分给不同的参数减少,这可能有点难以理解,可以想象成一个决策树,分支之后每个分支的数据量减少,分支越多,每个分支的数据量就越少。或者还可以换个角度理解,确定A参数之后在确定B参数,B参数的误差会因为A参数的误差而增大。所以参数越多,误差就越大。
正则化为什么可以降低泛化误差呢,因为正则化相当于给参数之间一定的关系,例如
l1
正则化相当于去掉一些参数,从而使得分配到每个参数上的数据量增多,而
l2
正则化相当于参数之间共同进退,把异常值的贡献平均分配到各个参数上,因而参数分配数据量就不是数据量除以参数个数了,不同参数之间的相关性使得数据“公用”到各个参数上。
虽然这个解释不是很严谨,但是我个人感觉比较容易理解和直观。
P.S. 我自己自瞎想的,如有错误,还请有缘人指正
No Free Lunch Theorem
若学习算法
La
在某些问题(数据集)上比学习算法
Lb
要好,那么必然存在另一些问题(数据集),在这些问题中
Lb
比
La
表现更好。
符号说明:
-
Ξ
:样本空间
-
H
:假设空间
-
La
:学习算法
-
P(h|X,La)
: 算法
La
基于训练数据
X
产生假设
h
的概率
-
f
:代表希望学得的真实目标函数
- ote是off-training error,即训练集外误差
-
Eote(La|X,f)=∑h∑x∈Ξ−XP(x)I(h(x)≠f(x))P(h|X,La)
:算法
La
学得的假设在训练集外的所有样本上的误差的期望(这里的累加可以看作是积分的简化,积分更严谨的感觉;查阅文献后发现,该定理只是定义在有限的搜索空间,对无限搜索空间结论是否成立尚不清楚)
因为是存在性问题,我们就假设真实分布
(x,f(x))
的
f
在假设空间内均匀分布,那么
Ef[Eote(La|X,f)]=∑f∑h∑x∈Ξ−XP(x)I(h(x)≠f(x))P(h|X,La)P(f)
=∑x∈Ξ−XP(x)∑hP(h|X,La)∑fI(h(x)≠f(x))P(f)
=∑x∈Ξ−XP(x)∑hP(h|X,La)2|Ξ|2
=2|Ξ|2∑x∈Ξ−XP(x)
结果与算法
La
无关,说明在
f
未知的情况下,没有任何一个算法比瞎猜强。
这个定理没啥实用性,但是体现了算法工程师存在的意义。在数据集未知的情况下调大厂的API跟瞎猜一个性质。在脱离实际意义情况下,空泛地谈论哪种算法好毫无意义,要谈论算法优劣必须针对具体学习问题。