写在前面
本节我们主要引入了 V C d i m e n s i o n VC \ dimension VC dimension 的概念,从简单的感知机模型的 V C VC VC 维度推到一般的感知机模型 V C VC VC 维度,最后加深了对其理解。
本文整理自台湾大学林轩田的《机器学习基石》
1. VC dimension 的定义
∙ \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)<N
dvc(H)<N
d. 不能给出结论
可能有另外一组输入N个点可以被H完全区分,但是也有可能所有的输入N个点都不能被区分,所以只给一组输入的话,不能判断到底是哪一种情况。选d。
2. 感知机的VC维度
前面我们重点学习了 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。
3. 直观的看待VC维度
对于假设里面存在的 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)
4. 对VC维度更深的解释
∙
\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