机器学习的基本原理

要学习机器学习,首先得想明白机器学习为啥是可信的,下面就介绍几个我个人认为的机器学习的基础原理:

  • 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 ) = q f ( b ) + ( 1 q ) f ( a ) f ( q b + ( 1 q ) a )

那么

F ( 0 ) = 0

F ( 1 ) = 0

F ( q ) = f ( b ) f ( a ) ( b a ) f ( q b + ( 1 q ) a ) = ( b a ) ( f ( θ ) f ( q b + ( 1 q ) a ) )

f ( x ) > 0 可知 F ( q ) 先小于0然后大于0,所以 F ( q ) <= 0 即函数 x [ a , b ] f ( x ) > 0 时, q [ 0 , 1 ] , q f ( b ) + ( 1 q ) f ( a ) > f ( q b + ( 1 q ) a )

Markov不等式

假设 x 是大于 0 的随机变量,则有

E [ x ] = 0 x p ( x ) d x > 0 ϵ 0 p ( x ) d x + ϵ ϵ p ( x ) d x > ϵ P ( x > ϵ )

P ( x > ϵ ) < E [ x ] ϵ

引理

x [ a , b ] , E [ x ] = 0 , t > 0 ,那么

P ( x > s ) = P ( e t x > e t s ) < E [ e t x ] e s t

e t x 为凸函数可知

e t x < b x b a e t a + x a b a e t b

那么

E [ e t x ] < b E [ x ] b a e t a + E [ x ] a b a e t b

p = t ( b a ) , h = a b a ,那么有

b b a e t a a b a e t b = e t a [ b b a a b a e t ( b a ) ] = e t a [ 1 + a b a a b a e t ( b a ) ] = e x p ( p h + l n ( 1 + h h e p ) )

f ( p ) = p h + l n ( 1 + h h e p ) ,那么

f ( 0 ) = 0

f ( p ) = h h e p 1 + h h e p

f ( 0 ) = 0

f ( p ) = h e p ( 1 + h h e p ) + ( h e p ) 2 ( 1 + h h e p ) 2 = ( h e p 1 + h h e p ) ( 1 + h 1 + h h e p )

f ( p ) = y ( 1 y ) < 1 4

泰勒展开可得:

f ( p ) = f ( 0 ) + p f ( 0 ) + p 2 2 f ( θ ) < p 2 8

E [ e t x ] < e x p [ ( b a ) 2 8 t 2 ]
P ( x > s ) < e x p [ s t + ( b a ) 2 8 t 2 ]

Hoaffding定理证明

r 1 r 2 , . . . , r n 为模型的一组误差,为了简便,让他们分布在 [ 0.5 , 0.5 ] ,均值为0,令

r ^ = i r i n , r = E [ r ^ ]

那么

P ( r ^ r > ϵ ) = e t ϵ E [ e t i r i / n ] = e t ϵ i E [ e t r i / n ] < e x p [ t ϵ + t 2 8 n ]

t = 4 n ϵ ,可得

P ( x > s ) < e x p [ 2 n ϵ 2 ]

那么如果 k 个模型训练的模型误差都满足 P ( r < r ^ + ϵ ) < ( 1 k P ( r r ^ > ϵ ) ) (hoeffding不等式的对称性),则

P ( r < r ^ + ϵ ) < ( 1 k e x p [ 2 n ϵ 2 ] )

δ = k e x p [ 2 n ϵ 2 ] ,则模型以 1 δ 的概率满足任意训练的模型满足

r < r ^ + 1 2 n ln k δ

这就给了训练出来的模型一个误差上界,若是参数域为无穷,可用VC维来给定上界

个人不喜欢这个解释,不直观,太繁琐,而且是个loose bound,让感觉很难受。

bias & variance & error

机器学习学到的模型预测的结果和真实结果的误差来源于三个地方,也就是bias(偏差),variance(方差),error(噪声),用公式可以表示为:

E x L ( f ( x ) + ϵ , f ~ ( x ) + [ f ^ ( x ) f ^ ( x ) ] ) = F [ ϵ , f ( x ) f ^ ( x ) , f ^ ( x ) ) f ~ ( x ) ]

f ( x ) 是客观世界的模型, ϵ 是观察噪声或者是样本产生过程中的系统噪声, f ^ ( x ) 是当前模型下能够学习到的最好的模型参数下的模型, f ~ ( x ) 是用有限的训练样本实际训练出来的模型, L 为损失函数, E x L 为泛化误差。

我们把 | f ( x ) f ^ ( x ) | 成为bias(偏差),它越大说明本身模型越简单(欠拟合)
| f ^ ( x ) ) f ~ ( x ) | 成为variance(方差),它越大说明模型过拟合越严重(把噪声当作是模型的输出进行拟合)。

Bias&Var

欠拟合产生的原因是拟合的模型过于简单,无法拟合真正的客观模型。
过拟合产生的原因是数据量太少,无法把模型的参数拟合得很好。

我们在进一步的挖掘一下,过拟合的原因从而更深刻的体会一下正则化的作用。

the amount of parameter vs the amount of data

Chebyshev 不等式 / 大数定理

由Markov不等式 P ( x > ϵ ) < E [ x ] ϵ 可得

P [ ( 1 n i = 1 n X E X ) 2 > ϵ ] < E [ ( 1 n i = 1 n X E X ) 2 ] ϵ = σ 2 ϵ n 2

数据量和模型参数误差的关系

模型参数可以看成是模型维度的数据统计量(例如模型就是预测值就是直接输出训练集的平均值,那么参数就直接是数据的平均),那么,当参数多了之后,相当于把数据分给不同的参数减少,这可能有点难以理解,可以想象成一个决策树,分支之后每个分支的数据量减少,分支越多,每个分支的数据量就越少。或者还可以换个角度理解,确定A参数之后在确定B参数,B参数的误差会因为A参数的误差而增大。所以参数越多,误差就越大。
正则化为什么可以降低泛化误差呢,因为正则化相当于给参数之间一定的关系,例如 l 1 正则化相当于去掉一些参数,从而使得分配到每个参数上的数据量增多,而 l 2 正则化相当于参数之间共同进退,把异常值的贡献平均分配到各个参数上,因而参数分配数据量就不是数据量除以参数个数了,不同参数之间的相关性使得数据“公用”到各个参数上。

虽然这个解释不是很严谨,但是我个人感觉比较容易理解和直观。

P.S. 我自己自瞎想的,如有错误,还请有缘人指正

No Free Lunch Theorem

若学习算法 L a 在某些问题(数据集)上比学习算法 L b 要好,那么必然存在另一些问题(数据集),在这些问题中 L b L a 表现更好。
符号说明:

  • Ξ :样本空间
  • H :假设空间
  • L a :学习算法
  • P ( h | X , L a ) : 算法 L a 基于训练数据 X 产生假设 h 的概率
  • f :代表希望学得的真实目标函数
  • ote是off-training error,即训练集外误差
  • E o t e ( L a | X , f ) = h x Ξ X P ( x ) I ( h ( x ) f ( x ) ) P ( h | X , L a ) :算法 L a 学得的假设在训练集外的所有样本上的误差的期望(这里的累加可以看作是积分的简化,积分更严谨的感觉;查阅文献后发现,该定理只是定义在有限的搜索空间,对无限搜索空间结论是否成立尚不清楚)

因为是存在性问题,我们就假设真实分布 ( x , f ( x ) ) f 在假设空间内均匀分布,那么

E f [ E o t e ( L a | X , f ) ] = f h x Ξ X P ( x ) I ( h ( x ) f ( x ) ) P ( h | X , L a ) P ( f )

= x Ξ X P ( x ) h P ( h | X , L a ) f I ( h ( x ) f ( x ) ) P ( f )

= x Ξ X P ( x ) h P ( h | X , L a ) 2 | Ξ | 2

= 2 | Ξ | 2 x Ξ X P ( x )

结果与算法 L a 无关,说明在 f 未知的情况下,没有任何一个算法比瞎猜强。

这个定理没啥实用性,但是体现了算法工程师存在的意义。在数据集未知的情况下调大厂的API跟瞎猜一个性质。在脱离实际意义情况下,空泛地谈论哪种算法好毫无意义,要谈论算法优劣必须针对具体学习问题。

猜你喜欢

转载自blog.csdn.net/SrdLaplace/article/details/79655689