概述
感知机是二分类的线性分类模型,属于判别模型。输入为特征向量,输出为{+1, -1}。
仅能用于线性可分数据集,模型为分离超平面。
采用梯度下降法对损失函数进行极小化。
分为原始形式和对偶形式。
模型
感知机定义:假设特征空间为
X
⊆
R
n
\mathcal{X} \subseteq \mathbf{R}^n
X⊆Rn,输出空间为
Y
=
{
+
1
,
−
1
}
\mathcal{Y}=\{+1,-1\}
Y={+1,−1}。输入
x
∈
X
\bm{x}\in\mathcal{X}
x∈X 表示实例的特征向量,对应于特征空间中的点,输出
y
∈
Y
y\in\mathcal{Y}
y∈Y 表示实例的类别。由特征空间到输出空间的如下函数
f
(
x
)
=
s
i
g
n
(
w
⋅
x
+
b
)
f(\bm{x}) = {\rm sign}(\bm{w}\cdot\bm{x} + b)
f(x)=sign(w⋅x+b)
称为感知机。其中,
w
\bm{w}
w 和
b
b
b 为感知机的模型参数,
w
∈
R
n
\bm{w}\in\mathbf{R}^n
w∈Rn 为权值向量(weight),
b
∈
R
b\in \mathbf{R}
b∈R 为偏置(bias),
w
⋅
x
\bm{w}\cdot\bm{x}
w⋅x为向量内积,
s
i
g
n
{\rm sign}
sign是符号函数:
s
i
g
n
(
x
)
=
{
+
1
,
x
≥
0
−
1
,
x
<
0
{\rm sign}(x) = \begin{cases} +1, & x \geq 0 \\\\ -1, & x < 0 \end{cases}
sign(x)=⎩⎪⎨⎪⎧+1,−1,x≥0x<0
感知机的假设空间是定义在特征空间中的所有线性分类模型,即函数集合 { f ∣ f ( x ) = w ⋅ x + b } \{f|f(\bm{x})=\bm{w}\cdot\bm{x} + b\} {f∣f(x)=w⋅x+b}。感知机学习即选择参数 w \bm{w} w 和 b b b,使得损失最小。
几何解释
线性方程 w ⋅ x + b = 0 \bm{w}\cdot\bm{x} + b = 0 w⋅x+b=0 对应于特征空间 R n \mathbf{R}^n Rn 中的一个超平面,其中 w \bm{w} w 是超平面的法向量, b b b 是超平面的截距。该超平面将特征空间分为两部分,位于两部分的特征向量分别为正类和负类。
策略
数据集必须是线性可分的,即必须存在某个超平面 w ⋅ x + b = 0 \bm{w}\cdot\bm{x}+b=0 w⋅x+b=0,使得数据集的正实例点和负实例点完全正确地划分到超平面的两侧(即对所有正例,有 w ⋅ x + b > 0 \bm{w}\cdot\bm{x}+b>0 w⋅x+b>0;对所有负例,有 w ⋅ x + b < 0 \bm{w}\cdot\bm{x}+b<0 w⋅x+b<0)。
损失函数定义为误分类点到超平面的总距离。记向量
w
\bm{w}
w 的
L
2
L_2
L2 范数为
∥
w
∥
\|\bm{w}\|
∥w∥,则空间中任一点
x
i
\bm{x}_i
xi 到超平面的距离为
1
∥
w
∥
∣
w
⋅
x
i
+
b
∣
\frac{1}{\|\bm{w}\|}|\bm{w}\cdot\bm{x}_i+b|
∥w∥1∣w⋅xi+b∣
对于任意的误分类点
x
i
\bm{x}_i
xi,必然有
y
i
(
w
⋅
x
i
+
b
)
<
0
y_i(\bm{w}\cdot\bm{x}_i+b) < 0
yi(w⋅xi+b)<0
因此,误分类点到超平面的距离为
−
1
∥
w
∥
y
i
(
w
⋅
x
i
+
b
)
-\frac{1}{\|\bm{w}\|}y_i(\bm{w}\cdot\bm{x}_i+b)
−∥w∥1yi(w⋅xi+b)
记误分类点集合为
M
M
M,则所有误分类点到超平面的总距离为
−
1
∥
w
∥
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
-\frac{1}{\|\bm{w}\|} \sum_{\bm{x}_i \in M} y_i(\bm{w}\cdot\bm{x}_i+b)
−∥w∥1xi∈M∑yi(w⋅xi+b)
由于
1
/
∥
w
∥
1/\|\bm{w}\|
1/∥w∥ 为定值,去掉该项,即得感知机的损失函数(经验风险函数):
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
L(\bm{w},b)=-\sum_{\bm{x}_i \in M} y_i(\bm{w}\cdot\bm{x}_i+b)
L(w,b)=−xi∈M∑yi(w⋅xi+b)
误分类点越少,误分类点离超平面越近,则损失函数值越小,当没有误分类点时,损失函数值为0。
对于任意实例,误分类时其损失函数是参数 w \bm{w} w 和 b b b 的线性函数,正确分类时其损失函数为0。故损失函数 L ( w , b ) L(\bm{w},b) L(w,b) 是 w \bm{w} w 和 b b b 的连续可导函数。
感知机的学习策略即在假设空间中选取使上述损失函数最小的超平面作为模型(经验风险最小化)。
算法
原始形式
最优化问题:给定一个训练集
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
 
,
(
x
N
,
y
N
)
T = \\{(\bm{x}_1,y_1),(\bm{x}_2,y_2),\cdots,(\bm{x}_N,y_N)\\}
T=(x1,y1),(x2,y2),⋯,(xN,yN)
其中,
x
i
∈
X
=
R
n
\bm{x}_i \in \mathcal{X} = \mathbf{R}^n
xi∈X=Rn,
y
i
∈
Y
=
−
1
,
1
y_i \in \mathcal{Y} = \\{-1,1\\}
yi∈Y=−1,1,
i
=
1
,
2
,
⋯
 
,
N
i=1,2,\cdots,N
i=1,2,⋯,N。
求参数
w
\bm{w}
w,
b
b
b,作为以下问题的解:
min
w
,
b
L
(
w
,
b
)
\min_{\bm{w},b} L(\bm{w},b)
w,bminL(w,b)
其中
M
M
M 为误分类点集合。
问题求解:随机梯度下降法(stochastic gradient descent, SGD)
损失函数
L
(
w
,
b
)
L(\bm{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
\nabla_\bm{w} L(\bm{w},b) = -\sum_{\bm{x}_i\in M} y_i\bm{x}_i \\\\ \nabla_b L(\bm{w},b) = -\sum_{\bm{x}_i\in M} y_i
∇wL(w,b)=−xi∈M∑yixi∇bL(w,b)=−xi∈M∑yi
随机梯度下降法每次选取一个误分类点,使其梯度下降,而非一次使
M
M
M 中所有的误分类点的梯度下降。
随机梯度下降法
输入:
- 训练数据集 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) T = \\{(\bm{x}_1,y_1),(\bm{x}_2,y_2),\cdots,(\bm{x}_N,y_N)\\} T=(x1,y1),(x2,y2),⋯,(xN,yN)
- 学习率 η \eta η( 0 < η ≥ 1 0<\eta\geq 1 0<η≥1)
输出:
- w \bm{w} w, b b b
- 感知机模型 f ( x ) = s i g n ( w ⋅ x + b ) f(\bm{x})={\rm sign}(\bm{w}\cdot\bm{x}+b) f(x)=sign(w⋅x+b)
算法:
- 选取初值 w 0 \bm{w}_0 w0, b 0 b_0 b0;
- 在训练集中随机选取数据 ( x i , y i ) (\bm{x}_i,y_i) (xi,yi);
- 如果
y
i
(
w
⋅
x
i
+
b
)
≤
0
y_i(\bm{w}\cdot\bm{x}_i+b)\leq0
yi(w⋅xi+b)≤0,则该点为误分类点,其梯度为
(
−
y
i
x
i
,
−
y
i
)
(-y_i\bm{x}_i,-y_i)
(−yixi,−yi),按照梯度下降的方向,将当前参数减去梯度值,如下:
w = w + η y i x i b = b + η y i \bm{w} = \bm{w} + \eta y_i\bm{x}_i \\\\ b = b + \eta y_i w=w+ηyixib=b+ηyi - 转至第2步,直至 训练集中没有误分类点 为止。
几何解释:
- 当一个实例点被误分类时,其位于分离超平面错误一侧,此时应调整 w \bm{w} w 和 b b b 的值,使分离超平面向该误分类点方向移动,从而减小该误分类点与超平面的距离,直至超平面越过该误分类点使其被正确分类。
注意:感知机学习算法得到的模型不是唯一的,最终解与初值及每次选取误分类点的方式有关。
收敛性:
- 当训练数据集线性可分时,算法收敛,经有限次迭代后可得到将训练集完全正确划分的分离超平面(不唯一);
- 当训练数据集非线性可分时,算法不收敛,迭代结果将产生震荡。
对偶形式
从训练开始到结束,对每个样本
(
x
i
,
y
i
)
(\bm{x}_i,y_i)
(xi,yi),
w
\bm{w}
w 和
b
b
b 均更新一定的次数(可能为0),记更新次数为
n
i
n_i
ni。若初值
w
0
=
0
\bm{w}_0=\bm{0}
w0=0,
b
0
=
0
b_0=0
b0=0,令
α
i
=
n
i
η
\alpha_i=n_i\eta
αi=niη,由于
w
\bm{w}
w,
b
b
b 按照如下规则更新:
w
=
w
+
η
y
i
x
i
b
=
b
+
η
y
i
\bm{w}=\bm{w}+\eta y_i\bm{x}_i \\\\ b=b+\eta y_i
w=w+ηyixib=b+ηyi
因此,最终的参数为
w
=
∑
i
=
1
N
α
i
y
i
x
i
b
=
∑
i
=
1
N
α
i
y
i
\bm{w}=\sum_{i=1}^{N}\alpha_iy_i\bm{x}_i \\\\ b=\sum_{i=1}^{N}\alpha_iy_i
w=i=1∑Nαiyixib=i=1∑Nαiyi
感知机学习算法的对偶形式如下:
输入:
- 线性可分数据集 T T T;
- 学习率 η \eta η
输出:
- N维向量 α = { α 1 , α 2 , ⋯   , α N } \bm{\alpha}=\{\alpha_1,\alpha_2,\cdots,\alpha_N\} α={α1,α2,⋯,αN} 和偏置 b b b;
- 感知机模型 f ( x ) = s i g n ( ∑ j = 1 N α j y j x j ⋅ x + b ) f(\bm{x})={\rm sign}\left(\sum_{j=1}^{N}\alpha_jy_jx_j\cdot\bm{x} + b\right) f(x)=sign(∑j=1Nαjyjxj⋅x+b)
算法:
- α = 0 \bm{\alpha}=\bm{0} α=0, b = 0 b=0 b=0;
- 在训练集中选取数据 ( x i , y i ) (\bm{x}_i,y_i) (xi,yi);
- 如果
y
i
(
∑
j
=
1
N
α
j
y
j
x
j
⋅
x
i
+
b
)
≤
0
y_i\left(\sum_{j=1}^{N}\alpha_jy_j\bm{x}_j\cdot\bm{x}_i+b\right)\leq 0
yi(∑j=1Nαjyjxj⋅xi+b)≤0,则
(
x
i
,
y
i
)
(\bm{x}_i,y_i)
(xi,yi)为误分类点,此时
n
i
n_i
ni增加1,相应的
α
i
\alpha_i
αi增加
η
\eta
η,偏置
b
b
b的更新方式同原始形式:
α i = α i + η b = b + η y i \alpha_i = \alpha_i + \eta \\\\ b = b + \eta y_i αi=αi+ηb=b+ηyi - 转至第2步,直至 训练集中没有误分类点 为止。
对偶形式中,训练集中的实例仅以内积的形式出现,可以预先将训练集中的实例对的内积计算并存储下来,构成Gram矩阵:
G
=
[
x
i
⋅
x
j
]
N
×
N
G=[\bm{x}_i\cdot\bm{x}_j]_{N\times N}
G=[xi⋅xj]N×N
对偶算法也是收敛的,并且存在多个解(最终解与第3步误分类点的选取顺序有关)。