一、感知机模型
感知机是一种线性分类模型,属于判别模型。感知机模型的假设空间是定义在特征空间中的所有线性分类模型或线性分类器,即函数集合 { f ∣ f ( x ) = w ⋅ x + b } \{f|f(x)=w\cdot x+b\} {f∣f(x)=w⋅x+b}。
感知机有如下几何解释:线性方程
w
⋅
x
+
b
=
0
w\cdot x+b=0
w⋅x+b=0
对应于特征空间
R
n
R^n
Rn中的一个超平面
S
S
S,其中
w
w
w是超平面的法向量,
b
b
b是超平面的截距。这个超平面将特征空间划分为两个部分。位于两部分的点(特征向量)分别被分为正、负两类。因此,超平面
S
S
S称为分离超平面。
对于误分类的数据
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)来说,
−
y
i
(
w
⋅
x
i
+
b
)
>
0
-y_i(w\cdot x_i+b)>0
−yi(w⋅xi+b)>0
成立。因为当
w
⋅
x
i
+
b
>
0
w\cdot x_i+b>0
w⋅xi+b>0时,
y
i
=
−
1
y_i=-1
yi=−1;而当
w
⋅
x
i
+
b
<
0
w\cdot x_i+b<0
w⋅xi+b<0时,
y
i
=
+
1
y_i=+1
yi=+1。因此,误分类点
x
i
x_i
xi到超平面
S
S
S的距离是
−
1
∣
∣
w
∣
∣
y
i
(
w
⋅
x
i
+
b
)
-\frac{1}{||w||}y_i(w\cdot x_i+b)
−∣∣w∣∣1yi(w⋅xi+b)
这样,假设超平面
S
S
S的误分类点集合为
M
M
M,那么所有误分类点到超平面
S
S
S的总距离为
−
1
∣
∣
w
∣
∣
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
-\frac{1}{||w||}\sum_{x_i\in M}y_i(w\cdot x_i+b)
−∣∣w∣∣1xi∈M∑yi(w⋅xi+b)
不考虑
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1,就得到感知机学习的损失函数。
损失函数定义为
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b)
L(w,b)=−xi∈M∑yi(w⋅xi+b)
二、感知机学习算法的梯度下降
感知机学习算法是对以下最优化问题的算法。
给定一个训练数据集
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={(x1,y1),(x2,y2),⋯,(xN,yN)}
其中,
x
i
∈
χ
=
R
n
x_i\in \chi =R^n
xi∈χ=Rn,
y
i
∈
{
−
1
,
+
1
}
y_i\in \{-1,+1\}
yi∈{−1,+1},
i
=
1
,
2
,
⋯
,
N
i=1,2,\cdots,N
i=1,2,⋯,N,求参数
w
w
w和
b
b
b,使其为以下损失函数极小化问题的解
m
i
n
w
,
b
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
min_{w,b}L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b)
minw,bL(w,b)=−xi∈M∑yi(w⋅xi+b)
其中
M
M
M为误分类点的集合。
感知机学习算法是误分类驱动的,具体采用随机梯度下降法。
首先,任意选取一个超平面 w 0 w_0 w0和 b 0 b_0 b0,然后用随机梯度下降法不断地极小化目标函数。极小化过程中不是一次使 M M M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。
这个有一个易混淆的点:
- 梯度下降:一次将误分类集合中所有误分类点的梯度下降
- 随机梯度下降:随机选取一个误分类点使其梯度下降
损失函数
L
(
w
,
b
)
L(w,b)
L(w,b)的梯度为
∇
w
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
x
i
\nabla_{w}L(w,b)=-\sum_{x_i\in M}y_ix_i
∇wL(w,b)=−xi∈M∑yixi
∇
b
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
\nabla_{b}L(w,b)=-\sum_{x_i\in M}y_i
∇bL(w,b)=−xi∈M∑yi
随机选取一个误分类点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),对
w
w
w和
b
b
b进行更新
w
←
w
+
η
y
i
x
i
w\leftarrow w+\eta y_ix_i
w←w+ηyixi
b
←
b
+
η
y
i
b\leftarrow b+\eta y_i
b←b+ηyi
上式中,
η
\eta
η(
0
<
η
<
=
1
0<\eta <=1
0<η<=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={(x1,y1),(x2,y2),⋯,(xN,yN)}
输出: w w w和 b b b,感知机模型 f ( x ) = s i g n ( w ⋅ x + b ) f(x)=sign(w\cdot x+b) f(x)=sign(w⋅x+b)
(1)选取初值 w 0 w_0 w0和 b 0 b_0 b0;
(2)在训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)
(3)如果
y
i
(
w
⋅
x
i
+
b
)
⩽
0
y_i(w\cdot x_i+b)\leqslant 0
yi(w⋅xi+b)⩽0,
w
←
w
+
η
y
i
x
i
w\leftarrow w+\eta y_ix_i
w←w+ηyixi
b
←
b
+
η
y
i
b\leftarrow b+\eta y_i
b←b+ηyi
(4)转至(2),直至训练集中没有误分类点。
这种学习算法直观上的解释:当有一个实例点被误分类,即位于分离超平面的错误一侧时,则调整 w w w和 b b b的值,使分离超平面向该错误分类点的一侧移动,以减少该误分类点与超平面间的距离,直至超平面越过该误分类点使其被正确分类。
四、感知机学习算法的对偶形式
w
w
w和
b
b
b每次在感知到误判的时候更好的迭代思路是
w
←
w
+
η
y
i
x
i
w\leftarrow w+\eta y_ix_i
w←w+ηyixi
b
←
b
+
η
y
i
b\leftarrow b+\eta y_i
b←b+ηyi
想办法简化一下参数的数量,所以令
α
i
=
η
n
i
\alpha_i=\eta n_i
αi=ηni;如果给定一个默认参数
w
0
=
0
w_0=0
w0=0开始
w
1
=
w
0
+
η
n
1
y
1
x
1
=
0
+
η
n
1
y
1
x
1
=
α
1
y
1
x
1
w_1=w_0+\eta n_1y_1x_1=0+\eta n_1y_1x_1=\alpha_1y_1x_1
w1=w0+ηn1y1x1=0+ηn1y1x1=α1y1x1
w
2
=
w
1
+
η
n
2
y
2
x
2
=
α
1
y
1
x
1
+
η
n
2
y
2
x
2
=
α
1
y
1
x
1
+
α
2
y
2
x
2
w_2=w_1+\eta n_2y_2x_2=\alpha_1y_1x_1+\eta n_2y_2x_2=\alpha_1y_1x_1+\alpha_2y_2x_2
w2=w1+ηn2y2x2=α1y1x1+ηn2y2x2=α1y1x1+α2y2x2
以此类推,可得到
w
=
∑
i
=
1
N
α
i
y
i
x
i
w=\sum_{i=1}^N\alpha_iy_ix_i
w=i=1∑Nαiyixi
α
i
\alpha_i
αi可迭代,设初始值为
α
i
=
0
\alpha_i=0
αi=0,
α
i
=
η
n
i
\alpha_i=\eta n_i
αi=ηni
对偶形式的基本想法是,将 w w w和 b b b表示为实例 x i x_i xi和标记 y i y_i yi的线性组合的形式,通过求解其系数而求得 w w w和 b b b。
每迭代一次之后 α i \alpha_i αi的变动为 α i ← η ( n i + 1 ) \alpha_i\leftarrow \eta(n_i+1) αi←η(ni+1),即 α i ← η ( n i + 1 ) = η n i + η = α i + η \alpha_i\leftarrow \eta(n_i+1)=\eta n_i+\eta=\alpha_i+\eta αi←η(ni+1)=ηni+η=αi+η
所以,我们的对偶问题为
α
i
←
α
i
+
η
\alpha_i\leftarrow \alpha_i+\eta
αi←αi+η
b
←
b
+
η
y
i
b\leftarrow b+\eta y_i
b←b+ηyi
b
b
b与原始一样,只是将对
w
w
w的迭代,转化成了对
α
\alpha
α的迭代,因为
α
\alpha
α要简单的多,不需要考虑
y
i
x
i
y_ix_i
yixi,迭代完成求出所有的
α
\alpha
α即可求出
w
w
w。