一、引言
《统计学习方法》(李航著)第二章感知机学习时,其中的Novikoff定理是关于感知机算法收敛性的一个重要定理。这个定理保证了对于线性可分的数据集,感知机学习算法最终能够收敛到一个解,即存在一个权重向量 w 和偏置 b,它们定义了一个超平面,能够将所有的训练样本正确分类,对应的由输入空间到输出空间的映射函数如下:
f
(
x
)
=
s
i
g
n
(
w
x
˙
+
b
)
f(x)=sign(w\dot x+b)
f(x)=sign(wx˙+b)
其中w是权重向量,为超平面的法向量,b为标量,为超平面的截距。
为了后面介绍的方便,定义:
1、
w
^
=
(
w
T
,
b
)
T
,即将偏置
b
并入权重向量
w
\hat{w} = (w^T,b)^T,即将偏置b并入权重向量w
w^=(wT,b)T,即将偏置b并入权重向量w
2、将输入向量x扩充,加进常数1,记为
x
^
=
(
x
T
,
1
)
T
\hat{x} = (x^T,1)^T
x^=(xT,1)T
显然
w
^
⋅
x
^
=
w
⋅
x
+
b
\hat{w} \cdot \hat{x} = w \cdot x+b
w^⋅x^=w⋅x+b 。
定理具体内容为:
- 存在性:对于线性可分包含N个数据的数据集,存在至少一个权重向量
w
opt
和偏置
b
opt
w_{\text{opt}} 和偏置 b_{\text{opt}}
wopt和偏置bopt,使得超平面
w opt ⋅ x + b opt = 0 w_{\text{opt}} \cdot x + b_{\text{opt}} = 0 wopt⋅x+bopt=0,
即
w ^ o p t ⋅ x ^ = w o p t ⋅ x + b = 0 \hat{w}_{opt} \cdot \hat{x} = w_{opt} \cdot x + b=0 w^opt⋅x^=wopt⋅x+b=0
能够将所有的训练样本正确分类,并且 ∣ ∣ w ^ opt ∣ ∣ = 1 ||\hat{w}_{\text{opt}}|| = 1 ∣∣w^opt∣∣=1。 - 收敛性:感知机算法从任意权重 w 0 w_0 w0 (一般为向量0) 开始,通过不断迭代更新权重,最终能够在有限次迭代后找到一个权重向量 w k w_k wk ,使得所有的训练样本都被正确分类,k称为误分类次数;
- 误分类次数上界:
令 R = m a x 1 ≤ i ≤ N ∣ ∣ x ^ i ∣ ∣ ,存在 γ > 0 ,对所有 i = 1 , 2 , . . . , N R=\mathop{max}\limits_{1≤i≤N}||\hat{x}_i||,存在γ>0,对所有i=1,2,...,N R=1≤i≤Nmax∣∣x^i∣∣,存在γ>0,对所有i=1,2,...,N,有
y i ( w ^ o p t ⋅ x ^ i ) = y i ( w o p t ⋅ x i + b o p t ) ≥ γ ,且 k ≤ ( R γ ) 2 y_i(\hat{w}_{opt}\cdot\hat{x}_i)=y_i(w_{opt}\cdot x_i+b_{opt})≥γ,且k≤(\frac{_R}{^γ})² yi(w^opt⋅x^i)=yi(wopt⋅xi+bopt)≥γ,且k≤(γR)2
在书本对上述的Novikoff定理证明中,用到了如下知识:
假设训练数据集是线性可分的,即存在超平面
w
⋅
x
+
b
=
0
w\cdot x+b=0
w⋅x+b=0可以将数据完全分开,在这种情况下,可以取超平面为:
w
^
o
p
t
⋅
x
^
=
w
o
p
t
⋅
x
+
b
o
p
t
=
0
,其中
∣
∣
w
^
o
p
t
∣
∣
=
1
\hat{w}_{opt}\cdot \hat{x}=w_{opt}\cdot x+b_{opt}=0,其中||\hat{w}_{opt}||=1
w^opt⋅x^=wopt⋅x+bopt=0,其中∣∣w^opt∣∣=1
老猿在此产生了疑问,为什么一定存在这样的 ∣ ∣ w ^ o p t ∣ ∣ = 1 ||\hat{w}_{opt}||=1 ∣∣w^opt∣∣=1的超平面呢?经过查阅资料和仔细思考,才终于明白,下面将这个过程介绍一下。
备注:
变量两边各有两根竖线表示变量对应向量的模长,是指不考虑方向的向量大小,在数学中,一个向量的模长是该向量从起点到终点的直线距离,其计算方法参考背景知识1。
二、背景知识1:向量标准化
2.1、概述
向量标准化(Vector Normalization),也称为单位化(Unit Vector),是指将一个非零向量的各个分量除以该向量的长度(或L2范数),从而得到一个新的向量,新向量的长度为1。标准化向量的一个关键性质是它保持了原始向量的方向,但长度变为1。这使得标准化向量在处理方向性问题时非常有用,同时简化了涉及长度计算的数学运算。
2.2、定义
假设有一个n维非零向量 v = [ v 1 , v 2 , . . . , v n ] \mathbf{v} = [v_1, v_2, ..., v_n] v=[v1,v2,...,vn],其长度(L2范数)为:
∥ v ∥ = v 1 2 + v 2 2 + . . . + v n 2 \|\mathbf{v}\| = \sqrt{v_1^2 + v_2^2 + ... + v_n^2} ∥v∥=v12+v22+...+vn2
向量 v \mathbf{v} v 的标准化版本 u 定义为:
u = v ∥ v ∥ \mathbf{u} = \frac{\mathbf{v}}{\|\mathbf{v}\|} u=∥v∥v
标准化向量的每个分量是原始向量对应分量与原始向量长度的比值。如果 ∥v∥ 不为零,那么标准化向量的每个分量 v i v_i vi 计算如下:
v
i
=
v
i
v
1
2
+
v
2
2
+
.
.
.
+
v
n
2
v_i = \frac{v_i}{\sqrt{v_1^2 + v_2^2 + ... + v_n^2}}
vi=v12+v22+...+vn2vi
对于二维向量
v
=
[
v
x
,
v
y
]
\mathbf{v} = [v_x, v_y]
v=[vx,vy],标准化过程如下:
u
=
[
v
x
v
x
2
+
v
y
2
,
v
y
v
x
2
+
v
y
2
]
\mathbf{u} = \left[ \frac{v_x}{\sqrt{v_x^2 + v_y^2}}, \frac{v_y}{\sqrt{v_x^2 + v_y^2}} \right]
u=
vx2+vy2vx,vx2+vy2vy
2.3、用途
向量标准化在多个领域中非常有用,包括:
- 物理学:在表示速度、力等矢量时,标准化向量可以提供方向信息而忽略大小
- 计算机图形学:标准化向量常用于光线跟踪、着色和渲染算法
- 机器学习:在计算余弦相似度或欧几里得距离时,标准化输入特征向量可以消除不同量纲的影响
- 数据挖掘:在聚类分析或主成分分析(PCA)中,标准化数据可以提高算法的性能
- 优化问题:在某些优化算法中,使用标准化向量可以避免因变量的不同量纲而产生的数值问题
三、背景知识2:一个向量方程的变换
对于可变向量x和向量w1和标量b1,如果有 w 1 x + b 1 = 0 w_1 x+b_1=0 w1x+b1=0 ,是否存在一个可由w1缩放的向量w2以及对应的标量b2,使得 ∣ ∣ w ^ 2 ∣ ∣ = 1 ,且 w 2 x + b 2 = 0 ||\hat{w}_2||=1,且w_2x+b_2 = 0 ∣∣w^2∣∣=1,且w2x+b2=0? 如果存在,怎么证明?
答:是存在这样的w2和b2,具体推导过程如下:
令
w
=
w
1
∣
∣
w
1
∣
∣
,
b
=
b
1
∣
∣
w
1
∣
∣
,对原方程两边同时除以
∣
∣
w
1
∣
∣
令w=\frac{w_1}{{||w1||}},b= \frac{b_1}{{||w1||}},对原方程两边同时除以||w_1||
令w=∣∣w1∣∣w1,b=∣∣w1∣∣b1,对原方程两边同时除以∣∣w1∣∣
根据向量标准化的知识即可保证||w||=1,且
w
x
+
b
=
0
wx+b= 0
wx+b=0。对于将
b
扩充到
w
的表现形式
w
^
2
b扩充到w的表现形式\hat{w}_2
b扩充到w的表现形式w^2,可以看成是比w高一维的向量,相关映射函数也变换为截距为0的特殊形式,因此也存在对应
∣
∣
w
^
2
∣
∣
=
1
||\hat{w}_2||=1
∣∣w^2∣∣=1的情况满足要求。
四、结论
经过向量标准化和方程两边同除以权重的模长对权重向量标准化后,wx+b= 0定理中使用的权重可以转换模长为1的w2权重,对应的超平面与变换前是相同的,因为满足条件的可变向量x的值都是一样的。
四、小结
本文介绍了《统计学习方法》(李航著)第二章感知机学习中的Novikoff定理证明过程的隐含知识,好方便大家理解证明过程,相关知识总结起来就是两点,一是任何非零向量都可以标准化为模长为1的向量,二是对于线性映射函数,对权重向量进行标准化同时对截距进行相应变换后不影响映射函数其所表达的超平面,即权重向量标准化(含截距处理)前后所代表的超平面是同一个。
更多统计学习基础知识请参考专栏《统计学习基础知识》。
更多人工智能基础知识请参考专栏《人工智能基础知识》。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
关于老猿的付费专栏
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。
前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。