感知机模型
感知机是用于二分类的线性分类模型,属于判别模型,其输入空间是样本实例地特征向量,输出是集合
Y
=
[
+
1
,
−
1
]
Y=[+1, -1]
Y=[+1,−1]。从几何视角出发,感知机旨在特征空间中学习一个将正负样本分开的分离超平面。确定模型地形式之后,引入经验风险和结构风险,将分类问题转变为最优化问题,利用梯度下降的算法求得参数向量,获取感知机模型。感知机模型是神经网络和支持向量机的基础
下面将二分类问题抽象到代数层面上来,如下:
假设输入空间是
X
∈
R
n
X∈R^n
X∈Rn,输出空间是
Y
=
[
+
1
,
−
1
]
Y=[+1, -1]
Y=[+1,−1],
x
i
∈
X
x_i∈X
xi∈X表示输入空间中的实例,对应输出空间的
y
i
∈
Y
y_i∈Y
yi∈Y是实例
x
i
x_i
xi对应的类别,则设定
f
(
x
)
=
s
i
g
n
(
ω
×
x
+
b
)
f(x) = sign(ω×x+b)
f(x)=sign(ω×x+b)
为感知机模型。
其中
ω
ω
ω为权值向量,
ω
ω
ω为实例的特征向量,
b
b
b为偏置,此处
ω
×
x
ω×x
ω×x表示的是
ω
ω
ω和
x
x
x的内积。
s
i
g
n
sign
sign是符号函数。
经过以上抽象之后,我们便可以完成统计学习方法的第一步(确定假设空间,也就是模型集合)。其中假设空间为:
[
f
∣
f
(
x
)
=
ω
×
x
+
b
]
[{f|f(x)=ω×x+b}]
[f∣f(x)=ω×x+b]
更形象一些,我们再把感知机模型从代数域抽象到几何域。上边我们得到代数方程:
ω
×
x
+
b
=
0
ω×x+b=0
ω×x+b=0
先从二维说起,如果
ω
ω
ω和
x
x
x都是常数,则
ω
×
x
+
b
=
0
ω×x+b=0
ω×x+b=0表示的是一条直线;在三维里呢,
ω
ω
ω和
x
x
x都是一个二维向量,则
ω
×
x
+
b
=
0
ω×x+b=0
ω×x+b=0表示的是一个平面;在这里我们的
ω
ω
ω和
x
x
x分别是高维权值向量和高维特征向量,那么
ω
×
x
+
b
=
0
ω×x+b=0
ω×x+b=0表示的是高维空间的一个超平面。该超平面可以在特征空间内将正负两类样本分开来,达到分类的目的。下图在二维空间中给我们展示了感知机模型的几何机制。
感知机学习策略
确定感知机模型之后,我们的第二个任务就是制定学习策略,即确定一个评价标准在假设空间中选出性能最好的模型。那么怎么确定这个评价标准呢?其实就是定义一个包含经验风险和结构风险的函数,并将该函数极小化。
在感知机模型中,如果直接用误分类的样本数来作为评价标准,无法对
ω
ω
ω和
b
b
b应用梯度下降法求得最佳参数。所以在这里我们采用误分类点到超平面的距离总和。首先定义以下输入空间
R
n
R^n
Rn中任意一点
x
i
x_i
xi到超平面的距离为:
1
∣
∣
ω
∣
∣
∣
ω
×
x
i
+
b
∣
\frac{1}{||ω||}|ω×x_i + b|
∣∣ω∣∣1∣ω×xi+b∣
其中
∣
∣
ω
∣
∣
||ω||
∣∣ω∣∣是
ω
ω
ω的
L
2
L_2
L2范数。
当样本点
y
i
y_i
yi=-1时,被误分类之后
ω
×
x
i
+
b
ω×x_i + b
ω×xi+b > 0;
当样本点
y
i
y_i
yi=1时,被误分类之后
ω
×
x
i
+
b
ω×x_i + b
ω×xi+b < 0;
即被误分类之后,-
y
i
y_i
yi
(
ω
×
x
i
+
b
)
(ω×x_i + b)
(ω×xi+b)> 0。
那么误分类点到超平面的距离总和为:
−
1
∣
∣
ω
∣
∣
∑
i
=
1
M
y
i
(
ω
×
x
i
+
b
)
-\frac{1}{||ω||}\sum_{i=1}^{M}y_i(ω×x_i + b)
−∣∣ω∣∣1i=1∑Myi(ω×xi+b)
因为
1
∣
∣
ω
∣
∣
\frac{1}{||ω||}
∣∣ω∣∣1是常数,所以无关紧要,我们去掉它,那么剩下的就是经验风险:
−
∑
i
=
1
M
y
i
(
ω
×
x
i
+
b
)
-\sum_{i=1}^{M}y_i(ω×x_i + b)
−i=1∑Myi(ω×xi+b)
可以看到,误分类点越少,经验风险越小,误分类点到超平面的距离越近,经验风险越小。正好可以衡量模型的分类性能好坏。
**注:上述经验风险函数是ω和b的连续可导函数。**强调这点的目的是我们下边的算法使用的是梯度下降法,要用经验风险对
ω
ω
ω和
x
x
x求导。
感知机学习算法
经过上述确定假设空间、评价准则两步之后,就到了设计算法的时候了。感知机学习算法采用随机梯度下降法,这也是各种神经网络使用的算法。在感知机模型中,我们分为两种形式:原始形式和对偶形式。
原始形式
给定输入:训练数据集
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
i
∈
R
n
,
y
i
∈
[
+
1
,
−
1
]
,
i
=
1
,
.
.
.
,
n
x_i∈R^n, y_i∈[+1, -1],i=1, ... ,n
xi∈Rn,yi∈[+1,−1],i=1,...,n,学习率
η
∈
[
0
,
1
]
η∈[0, 1]
η∈[0,1];
输出:
ω
,
b
ω, b
ω,b
学习步骤:
- 选取初始值 ω 0 , b 0 ω_0,b_0 ω0,b0;
- 在训练集T中选取数据 ( x i , y i ) (x_i, y_i) (xi,yi),计算 y i ( ω × x i + b ) y_i(ω×x_i + b) yi(ω×xi+b);
- 如果
y
i
(
ω
×
x
i
+
b
)
y_i(ω×x_i + b)
yi(ω×xi+b) ≤ 0,则进行如下迭代更新:
ω = ω + η y i x i ; b = b + η y i ω = ω + ηy_ix_i ; b = b + ηy_i ω=ω+ηyixi;b=b+ηyi - 跳到步骤2,直到数据集中所有数据点都被正确分类;
注:感知机模型有很多解,最终模型依赖于初始值的选取,也依赖于迭代过程中选取样本的顺序,还有就是当训练数据集线性不可分时,算法会一直迭代,陷入死循环。
对偶形式
从原始形式步骤3中的迭代中观察到,我们可以将
ω
和
b
ω和b
ω和b看作实例
x
i
和
y
i
x_i和y_i
xi和yi的线性组合,那么我们只需要求解出该线性组合的系数,便可求得
ω
和
b
ω和b
ω和b。
公式化表示为:
ω
=
∑
i
=
1
n
α
i
y
i
x
i
;
b
=
∑
i
=
1
n
α
i
y
i
ω = \sum_{i=1}^{n}α_iy_ix_i ; b = \sum_{i=1}^{n}α_iy_i
ω=i=1∑nαiyixi;b=i=1∑nαiyi
这里
α
i
=
N
i
η
α_i=N_iη
αi=Niη,其中当
η
=
1
η=1
η=1时,
N
i
N_i
Ni就是该样本迭代的次数。
给定输入:训练数据集
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
i
∈
R
n
,
y
i
∈
[
+
1
,
−
1
]
,
i
=
1
,
.
.
.
,
n
x_i∈R^n, y_i∈[+1, -1],i=1, ... ,n
xi∈Rn,yi∈[+1,−1],i=1,...,n,学习率
η
∈
[
0
,
1
]
η∈[0, 1]
η∈[0,1];
输出:
N
i
N_i
Ni,求得$N_i之后,我们就可以根据上边的公式计算出ω和b
- 初始化 α = 0 和 b = 0 α=0和b=0 α=0和b=0;
- 在训练集中选择样本 ( x i , y i ) (x_i, y_i) (xi,yi),计算 y i ( ∑ j = 1 n α j y j x j x i + b ) y_i (\sum_{j=1}^{n}α_jy_jx_jx_i+b) yi(∑j=1nαjyjxjxi+b);
- 如果
y
i
(
∑
j
=
1
n
α
j
y
j
x
j
x
i
+
b
)
≤
0
y_i (\sum_{j=1}^{n}α_jy_jx_jx_i+b)≤0
yi(∑j=1nαjyjxjxi+b)≤0,则更新如下:
α i = α i + η ; b = b + η y i α_i = α_i + η;b = b + ηy_i αi=αi+η;b=b+ηyi
4.重复步骤2,直到所有的样本都被正确分类。
对偶形式中训练实例仅以内积的形式出现,为了方便,可以预先将训练集中实例间的内积计算出来以矩阵的形式存储起来,这个矩阵就是所谓的 G r a m Gram Gram矩阵。