本节我们主要引入了 V C d i m e n s i o n VC \ dimension VC dimension 的概念,从简单的感知机模型的 V C VC VC 维度推到一般的感知机模型 V C VC VC 维度,最后加深了对其理解。
本文整理自台湾大学林轩田的《机器学习基石》
∙ \bullet ∙ 首先我们对上一次的内容进行一下回顾。
上一次我们证明了 B ( N , k ) B(N,k) B(N,k) 存在上限的上限为 N k − 1 N^{k-1} Nk−1。根据下面具体的表格内容显示,我们发现当 N ≥ 2 , k ≥ 3 N≥2,k≥3 N≥2,k≥3 时,完全可以写成(简化了等式):
m H ( N ) ≤ N k − 1 m_{H}(N)≤N^{k-1} mH(N)≤Nk−1
那么上一次提到的公式也可以进行转换,对于任意的 g = A ( D ) ∈ H g=A(D)∈H g=A(D)∈H 并且数据样本 D D D 足够大且 k ≥ 3 k≥3 k≥3 时,有:
P D ( ∣ E i n ( g ) − E o u t ( g ) ∣ > ϵ ) ≤ 4 m H ( 2 N ) e − 1 8 ϵ 2 N ≤ 4 ( 2 N ) k − 1 e − 1 8 ϵ 2 N P_{D}(\left | E_{in}(g)-E_{out}(g) \right | >\epsilon) ≤4m_{H}(2N)e^{-\frac{1}{8}\epsilon^{2}N}≤4(2N)^{k-1}e^{-\frac{1}{8}\epsilon^{2}N} PD(∣Ein(g)−Eout(g)∣>ϵ)≤4mH(2N)e−81ϵ2N≤4(2N)k−1e−81ϵ2N
此时, m H ( N ) m_{H}(N) mH(N) 存在 b r e a k p o i n t break \ point break point,说明拥有好的 h y p o t h e s i s ( H ) {\color{Violet}hypothesis(H)} hypothesis(H); N N N 取足够大,说明拥有好的 d a t a ( D ) {\color{Violet}data(D)} data(D);演算法 A A A 中选择的 g g g 具有小的 E i n E_{in} Ein,说明拥有好的 A {\color{Violet}A} A;在具备了这些条件以后机器就可以进行学习了!
∙ \bullet ∙ V C d i m e n s i o n {\color{Brown}VC \ dimension} VC dimension:它指的是不超过 b r e a k p o i n t break \ point break point 的最大的数(maximum)。记为 d v c d_{vc} dvc 用公式表示就为:
d v c = ′ m i n i m u m k ′ − 1 d_{vc}='minimum \ k'-1 dvc=′minimum k′−1
当 N ≤ d v c N≤d_{vc} N≤dvc 时,N个点都可以被区分开来。
当 N > d v c N>d_{vc} N>dvc 时,N个点不可以可以被区分开来。最多区分 k − 1 k-1 k−1 个点。
所以当 N ≥ 2 N≥2 N≥2, d v c ≥ 2 d_{vc}≥2 dvc≥2 时, m H ( N ) ≤ N d v c m_{H}(N)≤N^{d_{vc}} mH(N)≤Ndvc。
对于我们前面提到的几种成长函数来说,它们都有各自的 V C d i m e n s i o n VC \ dimension VC dimension:
▹ \triangleright ▹ p o s i t i v e r a y s : d v c = 1 positive \ rays : d_{vc}=1 positive rays:dvc=1
▹ \triangleright ▹ p o s i t i v e i n t e r v a l s : d v c = 2 positive \ intervals : d_{vc}=2 positive intervals:dvc=2
▹ \triangleright ▹ c o n v e x s e t s : d v c = ∞ convex \ sets : d_{vc}=\infty convex sets:dvc=∞
▹ \triangleright ▹ 2 D p e r c e p t r o n s : d v c = 3 2D \ perceptrons : d_{vc}=3 2D perceptrons:dvc=3
∙ \bullet ∙ 练习
这里有一组 N N N 个点的输入,它们不能被 H H H 完全区分,那么下面关于 d v c ( H ) d_{vc}(H) dvc(H) 的哪个说法时正确的?
a. d v c ( H ) > N d_{vc}(H)>N dvc(H)>N
b. d v c ( H ) = N d_{vc}(H)=N dvc(H)=N
c. d v c ( H ) < N d_{vc}(H)
d. 不能给出结论
可能有另外一组输入N个点可以被H完全区分,但是也有可能所有的输入N个点都不能被区分,所以只给一组输入的话,不能判断到底是哪一种情况。选d。
前面我们重点学习了 2 D p e r c e p t r o n s 2D \ perceptrons 2D perceptrons 模型的成长函数,知道它的 b r e a k p o i n t = 4 break \ point = 4 break point=4,所以 d v c = 3 d_{vc}=3 dvc=3,又由于 1 D p e r c e p t r o n s 1D \ perceptrons 1D perceptrons 的 d v c = 2 d_{vc}=2 dvc=2,所以我们推断 d D p e r c e p t r o n s dD \ perceptrons dD perceptrons 的 d v c = d + 1 ? d_{vc}=d+1 \ ? dvc=d+1 ?
为了验证这一结论,我们分别从 d v c ≥ d + 1 d_{vc} \ge d+1 dvc≥d+1 和 d v c ≤ d + 1 d_{vc} \le d+1 dvc≤d+1 两个方向进行验证。
∙ \bullet ∙ d v c ≥ d + 1 {\color{Violet}d_{vc} \ge d+1} dvc≥d+1:这一结论等价于存在 d + 1 d+1 d+1 个点可以被完全区分。
在 d d d 维空间里,我们将 d + 1 d+1 d+1 个点的坐标用矩阵的形式表示出来,注意还要为每一个点前面加一个维度,表示前面提到的阈值(详细见二):
X = [ − x 1 T − − x 2 T − − x 3 T − − . . . − − x d + 1 T − ] = [ 1 0 0 ⋯ 0 1 1 0 ⋯ 0 1 0 1 ⋯ 0 ⋮ ⋮ ⋱ 0 1 0 ⋯ 0 1 ] \begin{matrix} X & = & \begin{bmatrix} -& x_{1}^{T} &- \\ -& x_{2}^{T} &- \\ -& x_{3}^{T} &- \\ -& ... &- \\ -& x_{d+1}^{T}&- \end{bmatrix} & = & \begin{bmatrix} 1 & 0 & 0 & \cdots & 0\\ 1 & 1 & 0 & \cdots & 0\\ 1 & 0 & 1 & \cdots &0 \\ \vdots & \vdots & & \ddots & 0\\ 1 & 0 & \cdots & 0 & 1 \end{bmatrix} \end{matrix} X=⎣⎢⎢⎢⎢⎡−−−−−x1Tx2Tx3T...xd+1T−−−−−⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡111⋮1010⋮0001⋯⋯⋯⋯⋱000001⎦⎥⎥⎥⎥⎥⎤
很明显我们的 X X X 矩阵是可逆的,接下来我们就要寻找是否存在 w w w 可以被解出来,现在我们有生成的结果 y y y 向量:
y = [ y 1 ⋯ y d + 1 ] \begin{matrix} y & = & \begin{bmatrix} y_{1} \\ \cdots \\ y_{d+1} \end{bmatrix} \end{matrix} y=⎣⎡y1⋯yd+1⎦⎤
那么带入计算公式解得 w w w,得证:
s i g n ( X w ) = y ⇐ ( X w ) = y ⇔ w = X − 1 y sign(Xw)=y \Leftarrow {\color{Red}(Xw)=y} \Leftrightarrow w = X^{-1}y sign(Xw)=y⇐(Xw)=y⇔w=X−1y
∙ \bullet ∙ d v c ≤ d + 1 {\color{Violet}d_{vc} \le d+1} dvc≤d+1:这一结论等价于最多只有d+1个点被区分。
在 d d d 维度空间里面,对于任意的 d + 2 d+2 d+2 个点一定不会被完全区分,我们现在给出 X矩阵如下:
X = [ − x 1 T − − x 2 T − − ⋯ − − x d + 1 T − − x d + 2 T − ] \begin{matrix} X & = & \begin{bmatrix} -& x_{1}^{T} &- \\ -& x_{2}^{T} &- \\ -& \cdots &- \\ -& x_{d+1}^{T} &- \\ -& x_{d+2}^{T} &- \end{bmatrix} \end{matrix} X=⎣⎢⎢⎢⎢⎡−−−−−x1Tx2T⋯xd+1Txd+2T−−−−−⎦⎥⎥⎥⎥⎤
在线代里面我们知道 n + 1 n+1 n+1 个 n n n 维向量总是线性相关的,所以现在的矩阵 X X X 也是线性相关的,那么我们就可以用前 d + 1 d+1 d+1 个列向量表示第 d + 2 d+2 d+2 个列向量,如下:
x d + 2 = a 1 x 1 + a 2 x 2 + . . . + a d + 1 x d + 1 x_{d+2} = {\color{Blue}a_{1}}x_{1}+{\color{Red}a_{2}}x_{2}+...+{\color{Red}a_{d+1}}x_{d+1} xd+2=a1x1+a2x2+...+ad+1xd+1
我们假设 a i a_{i} ai 与对应的 w T x i w^{T}x_{i} wTxi 符号恰好相同,蓝色代表负数,红色代表正数,第一个数为负数,后面所有的数都有正数,那么给等式两边同时乘以 w T w^{T} wT,得到:
w T x d + 2 = a 1 w T x 1 + a 2 w T x 2 + . . . + a d + 1 w T x d + 1 > 0 w^{T}x_{d+2} = {\color{Blue}a_{1}}w^{T}x_{1}+{\color{Red}a_{2}}w^{T}x_{2}+...+{\color{Red}a_{d+1}}w^{T}x_{d+1}>0 wTxd+2=a1wTx1+a2wTx2+...+ad+1wTxd+1>0
所以存在这种情况使得d+2个点无法完全区分。
∙ \bullet ∙ 综上所述,对于 d d d 维感知机来说,它的 d v c = d + 1 d_{vc}=d+1 dvc=d+1。
对于假设里面存在的 w = ( w 0 , w 1 , . . . w d ) w=(w_{0},w_{1},...w_{d}) w=(w0,w1,...wd),我们把 w w w 看做是自由度(features),它可以进行任意的调节。
V C D i m e n s i o n VC \ Dimension VC Dimension 是可以区分的最大点数,在大部分情况下, f e a t u r e s features features 与它相同。
d v c ≈ # f r e e p a r a m e t e r s ( b u t n o t a l w a y s ) d_{vc} ≈ \#free \ parameters(but \ not \ always) dvc≈#free parameters(but not always)
∙ \bullet ∙ 之前我们提到过了 V C B o u n d VC \ Bound VC Bound 函数,它计算的是出现 B A D BAD BAD 情况的概率,公式如下:
P D [ ∣ E i n ( g ) − E o u t ( g ) ∣ > ϵ ⏟ B A D ] ≤ 4 ( 2 N ) d v c e − 1 8 ϵ 2 N ⏟ δ P_{D}[\underset{BAD}{\underbrace{|E_{in}(g)-E_{out}(g)|>\epsilon}} ] \le \underset{\delta }{\underbrace{4(2N)^{d_{vc}}e^{-\frac{1}{8} \epsilon ^{2}N}}} PD[BAD ∣Ein(g)−Eout(g)∣>ϵ]≤δ 4(2N)dvce−81ϵ2N
我们将这个出错概率记为 δ \delta δ,所以正确的概率就可以表示为 1 − δ 1-\delta 1−δ,我们计算的也就是 ∣ E i n ( g ) − E o u t ( g ) ∣ ≤ ϵ |E_{in}(g)-E_{out}(g)| ≤ \epsilon ∣Ein(g)−Eout(g)∣≤ϵ。那么现在进行求解,过程如下:
δ = 4 ( 2 N ) d v c e − 1 8 ϵ 2 N δ 4 ( 2 N ) d v c = e − 1 8 ϵ 2 N l n ( δ 4 ( 2 N ) d v c ) = − 1 8 ϵ 2 N 8 N l n ( δ 4 ( 2 N ) d v c ) = ϵ \begin{matrix} \delta & = &4(2N)^{d_{vc}}e^{-\frac{1}{8} \epsilon ^{2}N} \\ \frac{\delta }{4(2N)^{d_{vc}}} & = & e^{-\frac{1}{8}\epsilon ^{2}N} \\ ln(\frac{\delta }{4(2N)^{d_{vc}}}) & = &-\frac{1}{8}\epsilon ^{2}N \\ \sqrt[]{\frac{8}{N} ln(\frac{\delta }{4(2N)^{d_{vc}}})} & = & \epsilon \end{matrix} δ4(2N)dvcδln(4(2N)dvcδ)N8ln(4(2N)dvcδ)====4(2N)dvce−81ϵ2Ne−81ϵ2N−81ϵ2Nϵ
得到 ϵ \epsilon ϵ 后,就可以进行推导得出 E o u t ( g ) E_{out}(g) Eout(g) 的范围:
E i n ( g ) − 8 N l n ( δ 4 ( 2 N ) d v c ) ≤ E o u t ( g ) ≤ E i n ( g ) + 8 N l n ( δ 4 ( 2 N ) d v c ) {\color{Grey}E_{in}(g)- \sqrt[]{\frac{8}{N} ln(\frac{\delta }{4(2N)^{d_{vc}}})}} \le E_{out}(g) \le E_{in}(g)+ \sqrt[]{\frac{8}{N} ln(\frac{\delta }{4(2N)^{d_{vc}}})} Ein(g)−N8ln(4(2N)dvcδ)≤Eout(g)≤Ein(g)+N8ln(4(2N)dvcδ)
我们重点关注的是它的上界,将 ϵ \epsilon ϵ 也就是根号里面的内容记住 Ω ( N , H , δ ) Ω(N,H,\delta) Ω(N,H,δ)(model complexity)。对于这一块可以进行作图:
那么我们为了选择较小的 E o u t ( g ) E_{out}(g) Eout(g) 就不能一昧的将 d v c d_{vc} dvc 增大,最终要选择到一个均衡的位置。
∙ \bullet ∙ 接下来我们要关注的就是样本复杂度(Sample Complexity),因为我们之前选的上界一直都比较宽松,那么到了后它的误差就会大一点。根据理论求得最终如果想要好的结果,那么:
N ≈ 10000 d v c N≈10000d_{vc} N≈10000dvc
实际上,在平时根本用不到这么多的数据,比如说对于一条直线来说,我们选择二三十个点已经足够了,一般来说:
N ≈ 10 d v c N≈10d_{vc} N≈10dvc