简介
感知机是二分类的线性分类模型,在特征空间中将实例划分为正负两类的分离超平面,属于判别式模型。
模型
假设输入空间是
x
⊆
R
x\subseteq R
x⊆R,输出空间是
Y
=
{
−
1
,
+
1
}
Y=\lbrace-1,+1\rbrace
Y={−1,+1}。由输入空间到输出空间的如下函数:
f
(
x
)
=
s
i
g
n
(
w
x
+
b
)
f(x)=sign(wx+b)
f(x)=sign(wx+b)
s
i
g
n
(
x
)
=
1
,
x
>
=
0
sign(x)=1, x>=0
sign(x)=1,x>=0
s
i
g
n
(
x
)
=
−
1
,
x
<
0
sign(x)=-1, x<0
sign(x)=−1,x<0
线性方程
w
x
+
b
=
0
wx+b=0
wx+b=0对应于输入空间的一个超平面
s
s
s,其中
w
w
w是其法向量,
b
b
b是截距。这个超平面将空间划分为正负2个部分。
损失函数的一个自然选择是误分类点的总数,但是这样的损失函数不是参数
w
w
w,
b
b
b的连续可导函数,不易优化。损失函数的另一个选择是误分类点到超平面
s
s
s的总距离。
推导:点
x
0
x_0
x0到超平面
s
s
s距离
d
d
d
设
x
0
x_0
x0在平面
s
s
s上的投影为
x
1
x_1
x1,则
w
∗
x
1
+
b
=
0
w*x1+b=0
w∗x1+b=0
由于向量
x
0
x
1
→
\overrightarrow{x_0x_1}
x0x1与法向量
w
w
w平行,所以
∣
w
∗
x
0
x
1
→
∣
=
∣
w
∣
∣
x
0
x
1
→
∣
=
w
1
2
+
w
2
2
+
.
.
.
+
w
n
2
∗
d
=
∣
∣
w
∣
∣
d
|w*\overrightarrow{x_0x_1}|=|w||\overrightarrow{x_0x_1}|=\sqrt{{w_1}^2+{w_2}^2+...+{w_n}^2}*d=||w||d
∣w∗x0x1∣=∣w∣∣x0x1∣=w12+w22+...+wn2∗d=∣∣w∣∣d
又因为
w
∗
x
0
x
1
→
=
w
1
(
x
0
1
−
x
1
1
)
+
w
2
(
x
0
2
−
x
1
2
)
+
.
.
.
+
w
N
(
x
0
N
−
x
1
N
)
w*\overrightarrow{x_0x_1}=w_1({x_0}^1-{x_1}^1)+w_2({x_0}^2-{x_1}^2)+...+w_N({x_0}^N-{x_1}^N)
w∗x0x1=w1(x01−x11)+w2(x02−x12)+...+wN(x0N−x1N)
=
w
1
x
0
1
+
w
2
x
0
2
+
.
.
.
+
w
N
x
0
N
−
(
w
1
x
0
1
+
w
2
x
1
2
+
.
.
.
+
w
N
x
1
N
)
=w_1{x_0}^1+w_2{x_0}^2+...+w_N{x_0}^N-(w_1{x_0}^1+w_2{x_1}^2+...+w_N{x_1}^N)
=w1x01+w2x02+...+wNx0N−(w1x01+w2x12+...+wNx1N)
=
w
1
x
0
1
+
w
2
x
0
2
+
.
.
.
+
w
N
x
0
N
+
b
=
∣
w
x
0
+
b
∣
=w_1{x_0}^1+w_2{x_0}^2+...+w_N{x_0}^N+b =|wx_0+b|
=w1x01+w2x02+...+wNx0N+b=∣wx0+b∣
所以
∣
∣
w
∣
∣
d
=
∣
w
x
0
+
b
∣
||w||d=|wx_0+b|
∣∣w∣∣d=∣wx0+b∣
d
=
1
∣
∣
w
∣
∣
∣
w
x
0
+
b
∣
d=\frac{1}{||w||}|wx_0+b|
d=∣∣w∣∣1∣wx0+b∣
其次对于误分类数据
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi)来说,
−
y
i
(
w
x
i
+
b
)
>
0
-y_i(wx_i+b)>0
−yi(wxi+b)>0,到超平面
s
s
s的距离为
−
1
∣
∣
w
∣
∣
y
i
(
w
x
i
+
b
)
-\frac{1}{||w||}y_i(wx_i+b)
−∣∣w∣∣1yi(wxi+b),假设误分类点集合为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(wx_i+b)
−∣∣w∣∣1∑xi∈Myi(wxi+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(wx_i+b)
L(w,b)=−xi∈M∑yi(wxi+b)
显然,损失函数是
w
w
w,
b
b
b的连续可导函数。因为如果没有误分类点,损失函数值是0,而且,误分类点越少,误分类点离超平面越近,损失函数值就越小。
算法
采用随机梯度下降法来解决
m
i
n
L
(
w
,
b
)
minL(w,b)
minL(w,b)。
首先任意选取一个超平面
w
0
,
b
0
w_0, b_0
w0,b0,然后用梯度下降法不断地极小化目标函数。极小化过程中不是一次使
M
M
M中所有误分类点的梯度下降,而是一次随机采取一个误分类点使其梯度下降。
损失函数的梯度:
∇
w
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
x
i
\nabla_wL(w,b)=-\sum_{x_i\in{M}}y_ix_i
∇wL(w,b)=−∑xi∈Myixi,
∇
w
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
\nabla_wL(w,b)=-\sum_{x_i\in{M}}y_i
∇wL(w,b)=−∑xi∈Myi
具体算法:
输入:训练数据集
T
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
N
,
y
N
)
T={(x_1, y_1), (x_2, y_2), ...,(x_N,y_N)}
T=(x1,y1),(x2,y2),...,(xN,yN),其中
x
∈
R
N
,
y
∈
{
−
1
,
+
1
}
x\in{R^N}, y\in{\{-1,+1\}}
x∈RN,y∈{−1,+1},学习率
η
\eta
η
输出:
w
,
b
w,b
w,b;感知机模型
f
(
x
)
=
s
i
g
n
(
w
x
+
b
)
f(x)=sign(wx+b)
f(x)=sign(wx+b)
step1. 选取初值
w
0
,
b
0
w_0,b_0
w0,b0
step2. 在训练集中选取数据
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi)
step3. 如果
y
i
(
w
x
i
+
b
)
<
0
y_i(wx_i+b)<0
yi(wxi+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
step4. 转至step2,直至训练集中没有误分类点
直观解释:当一个实例点被误分类,即位于分离超平面的错误一侧时,则调整
w
,
b
w,b
w,b的值,使分离超平面越过该误分类点,使其被正确分类。
参考文献
《统计学习方法》 李航