【机器学习基石】VC dimension(七)


写在前面

本节我们主要引入了 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} Nk1。根据下面具体的表格内容显示,我们发现当 N ≥ 2 , k ≥ 3 N≥2,k≥3 N2k3 时,完全可以写成(简化了等式):
m H ( N ) ≤ N k − 1 m_{H}(N)≤N^{k-1} mH(N)Nk1

在这里插入图片描述
那么上一次提到的公式也可以进行转换,对于任意的 g = A ( D ) ∈ H g=A(D)∈H g=A(D)H 并且数据样本 D D D 足够大且 k ≥ 3 k≥3 k3 时,有:
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)e81ϵ2N4(2N)k1e81ϵ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 k1
N ≤ d v c N≤d_{vc} Ndvc 时,N个点都可以被区分开来。
N > d v c N>d_{vc} N>dvc 时,N个点不可以可以被区分开来。最多区分 k − 1 k-1 k1 个点。
所以当 N ≥ 2 N≥2 N2 d v c ≥ 2 d_{vc}≥2 dvc2 时, 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 dvcd+1 d v c ≤ d + 1 d_{vc} \le d+1 dvcd+1 两个方向进行验证。

∙ \bullet d v c ≥ d + 1 {\color{Violet}d_{vc} \ge d+1} dvcd+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=11110100001000001

很明显我们的 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=y1yd+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)=yw=X1y

∙ \bullet d v c ≤ d + 1 {\color{Violet}d_{vc} \le d+1} dvcd+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=x1Tx2Txd+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)dvce81ϵ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)dvce81ϵ2Ne81ϵ2N81ϵ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} N10000dvc
实际上,在平时根本用不到这么多的数据,比如说对于一条直线来说,我们选择二三十个点已经足够了,一般来说:
N ≈ 10 d v c N≈10d_{vc} N10dvc

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 获取机器码 API VC是指获取计算机硬件信息的一种接口。机器码是计算机硬件的唯一标识,可以用于软件的许可认证、设备管理等应用场景。 通过机器码 API VC,我们可以获取计算机的硬件信息,例如CPU型号、主板型号、硬盘序列号等。这些信息可以用于唯一标识一台计算机,实现设备的识别和管理。 获取机器码的方式有多种,可以通过调用系统API,访问硬件信息的接口,或者使用第三方库来获取。在实际开发中,我们可以根据具体需求选择适合的获取机器码的方式。 使用机器码 API VC,可以实现软件的许可认证。我们可以根据用户的机器码生成一个唯一的许可证文件,将该文件授权给用户,从而实现软件的合法使用。在用户每次打开软件时,我们可以通过验证机器码和许可证文件的匹配来判断软件的合法性。 此外,机器码 API VC还可以用于设备管理。通过获取机器码,我们可以对计算机进行标识和分类,方便进行管理。例如,我们可以根据机器码识别某个设备,然后对该设备进行监控、维修等操作。 综上所述,获取机器码 API VC是一种用于获取计算机硬件信息的接口,可以用于软件许可认证和设备管理。它能够帮助我们实现对计算机进行唯一标识和管理的目的。 ### 回答2: 获取机器码 API VC 是指通过 API 接口获取设备的唯一机器码。机器码是一个用于标识设备的字符串,通常与设备的硬件信息和操作系统等相关。通过获取机器码,可以实现设备的身份认证、设备绑定和设备管理等功能。 VC 是 Virtual Channel 的缩写,意为虚拟通道。在网络通讯中,VC 可以代表一种通讯方式或通道,用于在客户端和服务器之间传输数据。通过 VC 的方式获取机器码可以在网络中方便地传递设备信息,提高系统的灵活性和可扩展性。 获取机器码 API VC 可以通过编程语言如 Java、Python 或 C# 等来实现。开发人员可以调用相应的 API 接口,从操作系统或硬件上获取设备信息,并生成机器码。这个机器码可以包含设备的硬件序列号、硬件地址、操作系统版本等信息,以确保唯一性。 通过获取机器码,可以实现一些常见的功能,例如: 1. 设备认证与授权:在系统中识别和验证设备,以确保设备的合法性,只允许授权设备使用系统功能。 2. 设备绑定:将机器码与用户账号进行绑定,确保用户只能在绑定的设备上登录和使用系统。 3. 设备管理与追踪:通过机器码可以对设备进行管理和追踪,包括设备状态监控、设备远程控制和设备数据分析等。 总之,获取机器码 API VC 是一种通过 API 接口获取设备唯一标识的方法。它可以用于设备认证、设备绑定和设备管理等功能,提高系统的安全性和可操作性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比奇堡咻飞兜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值