简介:
感知机(perceptron)是二分类的线形分类模型,输入为实例的特征向量,输出为实例的类别(+1,-1)。感知机对应于特征空间中将实例划分为正负两类的分离超平面;而且其是支持向量机与神经网络的基础。
我们的目标其实就是找出该分离超平面,根据统计学习的三要素:模型、策略、算法,我下面将从这三方面展开。
###感知机模型###
模型:
那么,接下来就只用解决如何通过给定的一些实例和其类别来确定参数 w w w和 b b b;该求解过程其实就是感知机学习过程。当学习到对应的感知机模型后,在预测部分只需将新的实例输入到感知机模型中即可获取其类别。
###策略###
给定一个线性可分的训练数据集,为了确定其感知机模型中的参数,我们就需要提出一个学习策略来解决,即定义一个经验损失函数并将该损失函数最小化。
感知机损失函数
损失函数有两个选择:
-
误分类点的总数
该损失函数明显不是参数 w w w和 b b b的连续可导函数,不易优化。 -
误分类点到超平面的总距离
该损失函数被感知机所采用,其数学表达式为:
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)
M M M 为误分类点集合, x i x_i xi为误分类点, y i y_i yi为对应点的类别。
**附上该表达式的证明:**
取训练数据集中的任一个数据,将其特征向量记为$x_0$,将$x_0$在分离超平面$w\cdot x+b=0$上的投影点记为$x_1$,则该数据到分离超平面的距离为$\vert \vec {x_0x_1}\vert$,则
KaTeX parse error: No such environment: eqnarray at position 7: \begin{̲e̲q̲n̲a̲r̲r̲a̲y̲}̲ \vert w\cdot …
又对于误分类数据
(
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,则误分类点
x
i
x_i
xi到分离超平面的距离为
−
1
∥
W
∥
y
i
(
w
⋅
x
i
+
b
)
-\frac {1}{\Vert W\Vert}y_i(w\cdot x_i+b)
−∥W∥1yi(w⋅xi+b);所以误分类点到分离超平面的总距离为
−
1
∥
W
∥
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
-\frac {1}{\Vert W \Vert}\sum_{{x_i}\in M}y_i(w\cdot x_i+b)
−∥W∥1xi∈M∑yi(w⋅xi+b)
由于,感知机学习是误分类驱动,所以可以不考虑
1
∥
W
∥
\frac {1}{\Vert W \Vert}
∥W∥1,则可获取最终所用的损失函数。
感知机的学习策略最终转化为在假设空间中选取使损失函数式最小的模型参数 w w w、 b b 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 R^N
xi∈RN,
y
i
∈
{
−
1
,
+
1
}
y_i \in \{-1,+1\}
yi∈{−1,+1},
i
=
1
,
2
,
3
,
⋯
,
N
i=1,2,3,\cdots,N
i=1,2,3,⋯,N。求参数
w
w
w和
b
b
b,使其为以下损失函数极小化问题的解
min
w
,
b
L
(
w
,
b
)
=
min
w
,
b
(
−
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
)
\min_{w,b}L(w,b) = \min_{w,b}(-\sum_{{x_i}\in M}y_i(w\cdot x_i+b))
w,bminL(w,b)=w,bmin(−xi∈M∑yi(w⋅xi+b))
其中
M
M
M为误分类点的集合。
随机梯度下降法
为了极小化损失函数,首先,任意选取一个超平面
w
0
w_0
w0、
b
0
b_0
b0,再每次随机选取一个误分类点使其梯度下降,通过不断的选取误分类点来更新
w
w
w和
b
b
b,从而迭代求解出极小化时的解。
更新
w
w
w和
b
b
b的具体过程如下:
假设误分类点集合
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
\nabla_wL(w,b) = -\sum_{x_i\in M }y_ix_i \\ \nabla_bL(w,b) = -\sum_{x_i\in M}y_i
∇wL(w,b)=−xi∈M∑yixi∇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
b
←
b
+
η
y
i
w\leftarrow w+\eta y_ix_i \\ b\leftarrow b+\eta y_i
w←w+ηyixib←b+ηyi
式中
η
\eta
η是步长,又成为学习率
(
0
<
η
≤
1
)
(0 \lt \eta \le 1)
(0<η≤1)。
通过以上的分析后,下面给出具体的相关算法;感知机学习的具体算法包括两种:原始形式和对偶形式。
原始形式:
- 选取初值 w 0 , b 0 w_0,b_0 w0,b0
- 在训练集中随机选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)
- 如果
y
i
(
w
x
i
+
b
)
≤
0
y_i(wx_i+b) \le 0
yi(wxi+b)≤0
w ← w + η y i x i b ← b + η y i w \leftarrow w+\eta y_ix_i \\ b \leftarrow b+\eta y_i w←w+ηyixib←b+ηyi - 转至2,直到训练集中没有误分类点。
对偶形式:
假设初值
w
0
,
b
0
w_0,b_0
w0,b0均为0,从随机梯度下降法中可获知,经过不断的更新迭代获取到的最终
w
w
w和
b
b
b的值为:
w
=
∑
i
=
1
N
α
i
y
i
x
i
b
=
∑
i
=
1
N
α
i
y
i
w = \sum_{i=1}^N\alpha_iy_ix_i \\ b = \sum_{i=1}^N\alpha_iy_i
w=i=1∑Nαiyixib=i=1∑Nαiyi
这里,
α
i
=
n
i
η
\alpha_i=n_i\eta
αi=niη,
n
i
n_i
ni代表第i个实例点由于被误分而进行参数更新的次数。
具体算法:
- α ← 0 , b ← 0 \alpha \leftarrow 0, b \leftarrow 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
)
≤
0
y_i \left(\sum_{j=1}^N\alpha_jy_jx_j\cdot x_i + b\right) \le 0
yi(∑j=1Nαjyjxj⋅xi+b)≤0
α i ← α i + η b ← b + η y i \alpha_i \leftarrow \alpha_i +\eta \\ b \leftarrow b+\eta y_i αi←αi+ηb←b+ηyi - 转至2,直到没有误分类数据
对偶形式中,实例仅以内积的形式出现,为了计算方便,通常将实例间的内积计算出来,并以矩阵形式存储,这个矩阵就是Gram matrix.
G
=
[
x
i
⋅
x
j
]
N
×
N
G = [x_i \cdot x_j]_{N\times N}
G=[xi⋅xj]N×N
以上两种算法都是收敛的,收敛性的具体证明可以查看原书籍,在这里就不一一列出了。