2.感知机
定义 :感知机 (perceptron)是二分类线性分类模型,其输入为实例的特征向量,输出为实例的类别,取
+
1
+1
+ 1 和
−
1
-1
− 1 二值,属于判别模型。 给定一个数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
N
,
y
N
)
}
T=\{ (x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } 其中,
x
i
∈
X
=
R
n
,
y
i
∈
Y
=
{
+
1
,
−
1
}
,
i
=
1
,
2
,
⋯
,
N
x_i\in\mathcal{X}=R^n,y_i\in \mathcal{Y}=\{+1,-1\},i=1,2,\cdots,N
x i ∈ X = R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , ⋯ , N
补充知识
ℓ
p
\ell_p
ℓ p 范数
ℓ
p
\ell_p
ℓ p 范数表示一组范数:
ℓ
p
=
∣
∣
x
∣
∣
p
=
∑
i
=
1
n
x
i
p
p
,
x
=
(
x
1
,
x
2
,
⋯
,
x
n
)
\ell_p=||x||_p=\sqrt [p]{\sum_{i=1}^{n}x_i^p},x=(x_1,x_2,\cdots,x_n)
ℓ p = ∣ ∣ x ∣ ∣ p = p i = 1 ∑ n x i p
, x = ( x 1 , x 2 , ⋯ , x n ) 常见范数 : (1)
ℓ
0
\ell_0
ℓ 0 范数:即表示向量
x
x
x 中非零元素的个数。
ℓ
0
=
∣
∣
x
∣
∣
0
\ell_0=||x||_0
ℓ 0 = ∣ ∣ x ∣ ∣ 0 (2)
ℓ
1
\ell_1
ℓ 1 范数:即表示向量
x
x
x 中元素的绝对值之和。
ℓ
1
=
∣
∣
x
∣
∣
1
=
∑
i
=
1
n
∣
x
i
∣
\ell_1=||x||_1=\sum_{i=1}^{n}|x_i|
ℓ 1 = ∣ ∣ x ∣ ∣ 1 = i = 1 ∑ n ∣ x i ∣ (3)
ℓ
2
\ell_2
ℓ 2 范数:即表示向量
x
x
x 中元素的平方和再开方(坐标点到原点的欧几里和距离)。
ℓ
2
=
∣
∣
x
∣
∣
2
=
∑
i
=
1
n
x
i
2
2
\ell_2=||x||_2=\sqrt [2]{\sum_{i=1}^{n}x_i^2}
ℓ 2 = ∣ ∣ x ∣ ∣ 2 = 2 i = 1 ∑ n x i 2
注意 :
∣
∣
x
∣
∣
||x||
∣ ∣ x ∣ ∣ 表示
ℓ
2
\ell_2
ℓ 2 范数,只是把2省略了。
超平面 超平面是比所研究的环境空间低一个维度的子空间。例如二维空间平面,超平面就是一条直线。三维空间,超平面就是一个平面。 超平面方程 :
w
⋅
x
+
b
=
0
w\cdot x+b=0
w ⋅ x + b = 0 ,表示二维空间中的一个超平面,即对应一条直线。 点与超平面的关系 :
x
在
平
面
S
的
{
正
面
,
w
T
⋅
x
+
b
>
0
平
面
上
,
w
T
⋅
x
+
b
=
0
反
面
,
w
T
⋅
x
+
b
<
0
x在平面S的\begin{cases} 正面,w^T\cdot x+b>0\\ 平面上,w^T\cdot x+b=0\\ 反面,w^T\cdot x+b<0\\ \end{cases}
x 在 平 面 S 的 ⎩ ⎪ ⎨ ⎪ ⎧ 正 面 , w T ⋅ x + b > 0 平 面 上 , w T ⋅ x + b = 0 反 面 , w T ⋅ x + b < 0 注意 :
w
T
⋅
x
+
b
w^T\cdot x+b
w T ⋅ x + b 的值正得越大, 代表点在平面的正向且与平面的距离越远。 反之, 它的值负得越大, 代表点在平面的反向且与平面的距离越远。 点到超平面的距离 :
w
∣
∣
w
∣
∣
⋅
x
i
+
b
∣
∣
w
∣
∣
\frac{w}{||w||}\cdot x_i+\frac{b}{||w||}
∣ ∣ w ∣ ∣ w ⋅ x i + ∣ ∣ w ∣ ∣ b
平面 平面方程 :方程
a
x
+
b
y
+
c
z
+
d
=
0
ax+by+cz+d=0
a x + b y + c z + d = 0 表示三维空间内的一个平面
S
S
S 。在平面
S
S
S 上的点
(
x
i
,
y
i
,
z
i
)
(x_i,y_i,z_i)
( x i , y i , z i ) 满足
a
x
i
+
b
y
i
+
c
z
i
+
d
=
0
ax_i+by_i+cz_i+d=0
a x i + b y i + c z i + d = 0 平面的法向量 :
(
a
,
b
,
c
)
(a,b,c)
( a , b , c ) 点到平面的距离 :
d
(
x
i
,
y
i
,
z
i
)
=
∣
a
x
i
+
b
y
i
+
c
z
i
+
d
∣
a
2
+
b
2
+
c
2
d(x_i,y_i,z_i)=\frac{|ax_i+by_i+cz_i+d|}{\sqrt{a^2+b^2+c^2}}
d ( x i , y i , z i ) = a 2 + b 2 + c 2
∣ a x i + b y i + c z i + d ∣
2.1.感知机模型
f
(
x
)
=
s
i
g
n
(
w
⋅
x
+
b
)
f(x)=sign(w\cdot x+b)
f ( x ) = s i g n ( w ⋅ x + b ) 其中,
w
∈
R
n
w\in R^n
w ∈ R n 叫权值(weight)或权值向量(weight vector),
b
∈
R
b\in R
b ∈ R 叫作偏置(bias),
w
⋅
x
w\cdot x
w ⋅ x 表示
w
w
w 和
x
x
x 的内积,
s
i
g
n
sign
s i g n 是符号函数,即
s
i
g
n
(
x
)
=
{
+
1
,
x
≥
0
−
1
,
x
≤
0
sign(x)=\begin{cases} +1,x\geq 0\\ -1,x\leq 0 \end{cases}
s i g n ( x ) = { + 1 , x ≥ 0 − 1 , x ≤ 0
分离超平面 线性方程
w
⋅
x
+
b
=
0
w\cdot x+b=0
w ⋅ x + b = 0 对应特征空间
R
n
R^n
R n 中的一个超平面
S
S
S ,其中
w
w
w 是超平面的法向量 ,
b
b
b 是超平面的截距 。这个朝平面将特征空间划分为两个部分,位于两部分的点(特征向量)分别被分为正、负两类。因此超平面
S
S
S 被称为分离超平面(separating hyperplane) 。
数据集的线性可分性 如果存在某个超平面
w
⋅
x
+
b
=
0
w\cdot x+b=0
w ⋅ x + b = 0 能够将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,即对所有
y
i
=
+
1
y_i=+1
y i = + 1 的实例,都有
w
⋅
x
i
+
b
>
0
w\cdot x_i+b>0
w ⋅ x i + b > 0 ;对于所有的
y
i
=
−
1
y_i=-1
y i = − 1 的实例,都有
w
⋅
x
i
+
b
<
0
w\cdot x_i+b<0
w ⋅ x i + b < 0 ,则称数据集
T
T
T 为线性可分数据集(linearly separable data set)
函数间隔和几何间隔 样本点
(
x
i
,
y
i
)
(x_i,y_i)
( x i , y i ) 与超平面
w
⋅
x
+
b
=
0
w\cdot x+b=0
w ⋅ x + b = 0 之间的 (1)函数间隔 :
γ
i
=
y
i
(
w
⋅
x
i
+
b
)
\gamma_i=y_i(w\cdot x_i+b)
γ i = y i ( w ⋅ x i + b ) 但该定义存在问题,当
w
w
w 和
b
b
b 同时缩小或放大
m
m
m 倍后,超平面并没有变化,但函数间隔却变了。所以,作规范化
w
∣
∣
w
∣
∣
\frac{w}{||w||}
∣ ∣ w ∣ ∣ w ,即相当于
∣
∣
w
′
∣
∣
=
1
||w'||=1
∣ ∣ w ′ ∣ ∣ = 1 ,这时候求得的即为几何间隔。 (2)几何间隔 :
γ
i
=
y
i
(
w
∣
∣
w
∣
∣
⋅
x
i
+
b
∣
∣
w
∣
∣
)
\gamma_i=y_i(\frac{w}{||w||}\cdot x_i+\frac{b}{||w||})
γ i = y i ( ∣ ∣ w ∣ ∣ w ⋅ x i + ∣ ∣ w ∣ ∣ b ) 实际上几何间隔就是点到超平面的距离。
2.2.感知机学习策略
损失函数
损失函数采用输入空间
R
n
R^n
R n 中任一点
x
0
x_0
x 0 到超平面
S
S
S 的距离 :
1
∣
∣
w
∣
∣
∣
w
⋅
x
0
+
b
∣
\frac{1}{||w||}|w\cdot x_0+b|
∣ ∣ w ∣ ∣ 1 ∣ w ⋅ x 0 + b ∣ 其中
∣
∣
w
∣
∣
||w||
∣ ∣ w ∣ ∣ 是
w
w
w 的
L
2
L_2
L 2 范数。
对于误分类的数据 来说:
−
y
i
(
w
⋅
x
i
+
b
)
>
0
-y_i(w\cdot x_i+b)>0
− y i ( w ⋅ x i + b ) > 0
所有误分类点到超平面
S
S
S 的总距离 为:
−
1
∣
∣
w
∣
∣
∑
x
i
∈
M
y
i
(
w
⋅
x
0
+
b
)
-\frac{1}{||w||}\sum_{x_i\in M}y_i(w\cdot x_0+b)
− ∣ ∣ w ∣ ∣ 1 x i ∈ M ∑ y i ( w ⋅ x 0 + b )
感知机的损失函数 : 不考虑上面总距离中的
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣ ∣ w ∣ ∣ 1 ,就得到损失函数
−
∑
x
i
∈
M
y
i
(
w
⋅
x
0
+
b
)
-\sum_{x_i\in M}y_i(w\cdot x_0+b)
− x i ∈ M ∑ y i ( w ⋅ x 0 + b ) 注意 :感知机中损失函数1/||w||为什么可以不考虑? (1)实际上感知机的策略即是损失函数使用函数间隔 。因为感知机处理的是二分类任务,是误分类驱动的,做规范化的部分
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣ ∣ w ∣ ∣ 1 并不影响正负的判断。 (2)感知机的二分类目标就是分类尽量正确就行,而SVM希望得到效果最好的超平面。
2.3.感知机学习算法
2.3.1.原始形式
问题描述 :求解参数
w
,
b
w,b
w , b ,使其为以下损失函数极小化问题的解
m
i
n
w
,
b
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
\underset{w,b}{min}L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b)
w , b min L ( w , b ) = − x i ∈ M ∑ y i ( w ⋅ x i + b ) 其中,
M
M
M 是误分类点的集合。 原理 :感知机学习算法是误分类驱动的,具体采用随机梯度下降算法(stachastic gradient descent) 。首先,任意选取一个超平面
w
0
,
b
0
w_0,b_0
w 0 , b 0 ,然后用梯度下降法不断地极小化损失函数。极小化过程不是一次使
M
M
M 中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降 。 损失函数
L
(
w
,
b
)
L(w,b)
L ( w , b ) 的梯度:
∇
w
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
x
i
∇
b
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
\begin{array}{cc} \nabla_w L(w,b)=-\sum_{x_i\in M}y_ix_i \\ \nabla_b L(w,b)=-\sum_{x_i\in M}y_i \end{array}
∇ w L ( w , b ) = − ∑ x i ∈ M y i x i ∇ b L ( w , b ) = − ∑ x i ∈ M y i 输入 :训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
N
,
y
N
)
}
T=\{ (x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } 其中,
x
i
∈
X
=
R
n
,
y
i
∈
Y
=
{
+
1
,
−
1
}
,
i
=
1
,
2
,
⋯
,
N
x_i\in\mathcal{X}=R^n,y_i\in \mathcal{Y}=\{+1,-1\},i=1,2,\cdots,N
x i ∈ X = R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , ⋯ , N ;学习率
η
\eta
η (
0
<
η
≤
0
0 < \eta \leq 0
0 < η ≤ 0 ) 输出 :
w
,
b
w,b
w , b ; 感知机模型
f
(
x
)
=
s
i
g
n
(
w
⋅
x
+
b
)
f(x)=sign(w\cdot x+b)
f ( x ) = s i g n ( w ⋅ x + b ) 算法 : (1)选取初值
w
0
,
b
0
w_0,b_0
w 0 , b 0 (2)在训练集中随机选取数据点
(
x
i
,
y
i
)
(x_i,y_i)
( x i , y i ) (3)如果
y
i
(
w
⋅
x
i
+
b
)
≤
0
y_i(w\cdot x_i+b)\leq 0
y i ( w ⋅ x i + b ) ≤ 0 :
w
←
w
+
η
y
i
x
i
b
←
b
+
η
y
i
\begin{array}{cc} w\leftarrow w+\eta y_i x_i \\ b\leftarrow b+\eta y_i \end{array}
w ← w + η y i x i b ← b + η y i (4)转至(2),直至训练集中没有误分类点 直观上理解算法 :当一个实例点被误分类,即位于分离超平面的错误一侧时,则调整
w
,
b
w,b
w , b 的值,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面间的距离,直至超平面越过该误分类点使其被正确分类。
2.3.2.对偶形式
基本思想 :将
w
,
b
w,b
w , b 表示为实例
x
i
x_i
x i 和标记
y
i
y_i
y i 的线性组合形式,通过求解其系数而求得
w
,
b
w,b
w , b 。 其中,
w
,
b
w,b
w , b 关于
(
x
i
,
y
i
)
(x_i,y_i)
( x i , y i ) 的增量分别是
α
i
y
i
x
i
,
α
i
y
i
\alpha_iy_ix_i,\alpha_iy_i
α i y i x i , α i y i 。这里
α
i
=
n
i
η
\alpha_i=n_i\eta
α i = n i η ,假设初始值
w
0
,
b
0
w_0,b_0
w 0 , b 0 均为0,则最后学习到的
w
,
b
w,b
w , b 可以分别表示为:
w
=
∑
i
=
1
N
α
i
y
i
x
i
b
=
∑
i
=
1
N
α
i
y
i
\begin{array}{cc} w=\sum_{i=1}^N\alpha_i y_ix_i\\ \\ b=\sum_{i=1}^N\alpha_i y_i \end{array}
w = ∑ i = 1 N α i y i x i b = ∑ i = 1 N α i y i 输入 :训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
N
,
y
N
)
}
T=\{ (x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } 其中,
x
i
∈
X
=
R
n
,
y
i
∈
Y
=
{
+
1
,
−
1
}
,
i
=
1
,
2
,
⋯
,
N
x_i\in\mathcal{X}=R^n,y_i\in \mathcal{Y}=\{+1,-1\},i=1,2,\cdots,N
x i ∈ X = R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , ⋯ , N ;学习率
η
\eta
η (
0
<
η
≤
0
0 < \eta \leq 0
0 < η ≤ 0 ) 输出 :
α
,
b
\alpha,b
α , b ; 感知机模型
f
(
x
)
=
s
i
g
n
(
∑
j
=
1
N
α
j
y
j
⋅
x
+
b
)
f(x)=sign(\sum_{j=1}^N\alpha_j y_j\cdot x+b)
f ( x ) = s i g n ( ∑ j = 1 N α j y j ⋅ x + b ) 其中,
α
=
(
α
1
,
α
2
,
⋯
,
α
N
)
T
\alpha=(\alpha_1,\alpha_2,\cdots,\alpha_N)^T
α = ( α 1 , α 2 , ⋯ , α N ) T 算法 : (1)选取初值
w
0
,
b
0
w_0,b_0
w 0 , b 0 (2)在训练集中随机选取数据点
(
x
i
,
y
i
)
(x_i,y_i)
( x i , y i ) (3)如果
y
i
(
∑
j
=
1
N
α
j
y
j
⋅
x
i
+
b
)
≤
0
y_i(\sum_{j=1}^N\alpha_j y_j\cdot x_i+b)\leq 0
y i ( ∑ j = 1 N α j y j ⋅ x i + b ) ≤ 0 :
α
i
←
α
i
+
η
b
←
b
+
η
y
i
\begin{array}{cc} \alpha_i\leftarrow \alpha_i+\eta\\ b\leftarrow b+\eta y_i \end{array}
α i ← α i + η b ← b + η y i 注意 :这里参数的迭代,
α
i
\alpha_i
α i 的更新是直接计算的,并没用梯度下降;
b
b
b 的更新是用梯度下降。 (4)转至(2),直至训练集中没有误分类点 Gram矩阵 :对偶形式中训练实例仅以内积的形式出现(即对偶形式感知机模型中的
x
j
⋅
x
x_j\cdot x
x j ⋅ x ),为了方便,预先将训练集中实例间的内积计算出来并以矩阵形式储存,这个矩阵就是Gram矩阵
G
=
[
x
i
⋅
y
j
]
N
×
N
G=[x_i\cdot y_j]_{N\times N}
G = [ x i ⋅ y j ] N × N 理解 :(1)对偶形式将w和b表示成了实例
x
i
x_i
x i 和标记
y
i
y_i
y i 的线性组合形式,为核函数的引入提供了机会,尤其是像高斯核函数这种泰勒展开式无数项的函数;(2)复杂度只与样本数有关,且因为很多alpha其实是0,所以对优化速度会有一定提升作用。