感知机概述
感知机(perceptron)是二类分类的线性分类模型。
感知机对应于输入空间中将实例划分为正负两类的分离超平面,属于判别模型。
这里以模型,策略和算法三个部分做总结。
模型
感知机模型表示为由输入空间
χ
⊆
R
n
\chi \subseteq \R^n
χ⊆Rn到输出空间
y
∈
{
−
1
,
+
1
}
y\in\{-1, +1\}
y∈{−1,+1}的如下函数:
f
(
x
)
=
s
i
g
n
(
w
⋅
x
+
b
)
f(x) = sign(w\cdot x + b)
f(x)=sign(w⋅x+b)
其中
w
w
w是权值,
b
b
b是偏置,
s
i
g
n
sign
sign是符号函数,即:
y
=
{
+
1
,
x
≥
0
−
1
,
x
<
0
y=\begin{cases} +1,\quad x\geq 0 \\ -1,\quad x< 0 \end{cases}
y={+1,x≥0−1,x<0
感知机的几何解释是线性方程
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是超平面的截距。
学习策略
数据集线性可分的假设
感知机学习的前提假设是数据集为线性可分数据集。
若某个超平面 w ⋅ x + b w\cdot x+b w⋅x+b能够将数据集的正负实例点完全正确地划分到其两侧,则该数据集线性可分。
学习策略
为了找到这样的超平面,需确定模型参数 w 和 b w和b w和b。感知机的学习策略就是定义损失函数并选取损失函数最小化时的 w 和 b w和b w和b。
损失函数的一个自然选择是误分类点的总数。但是,这样的损失函数不是参数 w , b w,b w,b的连续可导函数,不易优化。
感知机采用的损失函数是误分类点到超平面的总距离,即
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
L(w,b)=-\displaystyle\sum_{x_i\in M}y_{i}(w\cdot x_{i}+b)
L(w,b)=−xi∈M∑yi(w⋅xi+b)
(以下是损失函数具体推导过程)
输入空间
R
n
\R^{n}
Rn中任一点
x
0
x_{0}
x0到超平面的距离:
1
∣
∣
w
∣
∣
∣
w
⋅
x
0
+
b
∣
\frac{1}{||w||}|w\cdot x_{0}+b|
∣∣w∣∣1∣w⋅x0+b∣
这里,
∣
∣
w
∣
∣
||w||
∣∣w∣∣是
L
2
L_{2}
L2范数。
对误分类点
(
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,故误分类点到超平面的距离是:
−
1
∣
∣
w
∣
∣
∑
x
i
∈
M
y
i
(
w
⋅
x
0
+
b
)
-\frac{1}{||w||}\sum\limits_{x_{i}\in M}y_{i}(w\cdot x_{0}+b)
−∣∣w∣∣1xi∈M∑yi(w⋅x0+b)
不考虑
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1,就得到感知机学习的损失函数。
不考虑 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1的原因有以下两点:
- 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1不影响 y i ( w ⋅ x i + b ) y_{i}(w⋅x_{i}+b) yi(w⋅xi+b)正负的判断,即不影响学习算法的中间过程。因为感知机学习算法是误分类驱动的,这里需要注意的是所谓的“误分类驱动”指的是我们只需要判断 − y i ( w ⋅ x i + b ) -y_{i}(w⋅x_{i}+b) −yi(w⋅xi+b)的正负来判断分类的正确与否,而 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1并不影响正负值的判断。所以 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1对感知机学习算法的中间过程可以不考虑。
- 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1不影响感知机学习算法的最终结果。因为感知机学习算法最终的终止条件是所有的输入都被正确分类,即不存在误分类的点。则此时损失函数为0。对应于 − y i ( w ⋅ x i + b ) -y_{i}(w⋅x_{i}+b) −yi(w⋅xi+b),即分子为0。则可以看出 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1对最终结果也无影响。
学习算法
感知机学习问题转化为损失函数最优化问题,学习算法采用随机梯度下降法进行最优化。具体算法包括原始形式和对偶形式。
原始形式
感知机学习算法是对以下损失函数极小化问题求解的算法:
min
w
,
b
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
\min_{w,b}L(w,b)=-\sum\limits_{x_{i}\in M} y_{i}(w\cdot x_{i}+b)
w,bminL(w,b)=−xi∈M∑yi(w⋅xi+b)
其中
M
M
M为误分类点的集合。
首先,任意选取一个超平面 w 0 , b 0 w_{0},b_{0} w0,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\limits_{x_{i}\in M}y_{i}x_{i}
∇wL(w,b)=−xi∈M∑yixi
∇
b
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
\nabla_{b}L(w,b)=-\sum\limits_{x_{i}\in M}y_{i}
∇bL(w,b)=−xi∈M∑yi
随机选取一个误分类点
(
x
i
,
y
i
)
(x_{i},y_{i})
(xi,yi),对
w
,
b
w,b
w,b进行更新
w
←
w
+
η
y
i
x
i
w\leftarrow w+\eta y_{i}x_{i}
w←w+ηyixi
b
←
b
+
η
y
i
b\leftarrow b+\eta y_{i}
b←b+ηyi
其中
η
(
0
<
η
≤
1
)
\eta(0<\eta \leq 1)
η(0<η≤1)为为学习率。
当一个实例点被误分类时,调整 w , b w,b w,b的值,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面之间的距离,直至超平面越过该误分类点使其被正确分类,这样通过迭代可以期待损失函数不断减小,直到为0。
对偶形式
将
w
w
w和
b
b
b表示为实例
x
i
x_{i}
xi和
y
i
y_{i}
yi的线性组合的形式,通过求解其系数而求得
w
w
w和
b
b
b。不失一般性,假设
w
w
w和
b
b
b的初始值均为0。对误分类点
(
x
i
,
y
i
)
(x_{i},y_{i})
(xi,yi)通过
w
←
w
+
η
y
i
x
i
w\leftarrow w+\eta y_{i}x_{i}
w←w+ηyixi
b
←
b
+
η
y
i
b\leftarrow b+\eta y_{i}
b←b+ηyi
逐步更新
w
,
b
w,b
w,b,假设更新了n次,则
w
,
b
w,b
w,b关于
(
x
i
,
y
i
)
(x_{i},y_{i})
(xi,yi)的增量分别是
α
i
y
i
x
i
\alpha_{i}y_{i}x_{i}
αiyixi和
α
i
y
i
\alpha_{i}y_{i}
αiyi,这里
α
i
=
n
i
η
\alpha_{i}=n_{i}\eta
αi=niη。最后学习到的
w
,
b
w,b
w,b可以分别表示为
w
=
∑
i
=
1
N
α
i
y
i
x
i
w=\sum\limits_{i=1}^{N}\alpha_{i}y_{i}x_{i}
w=i=1∑Nαiyixi
b
=
∑
i
=
1
N
α
i
y
i
b=\sum\limits_{i=1}^{N}\alpha_{i}y_{i}
b=i=1∑Nαiyi
下面对照原始形式来叙述感知机学习算法的对偶形式。
感知机模型 f ( x ) = s i g n ( ∑ j = 1 N α j y j x j ⋅ x + b ) f(x)=sign(\sum\limits_{j=1}^{N}\alpha_{j}y_{j}x_{j}\cdot x+b) f(x)=sign(j=1∑Nαjyjxj⋅x+b),其中 α = ( α 1 , α 2 , ⋯ , α N ) T \alpha=(\alpha_{1},\alpha_{2},\cdots,\alpha_{N})^{T} α=(α1,α2,⋯,αN)T
(1)初始化
α
\alpha
α和
b
b
b为0
(2)在训练集中选取数据
(
x
i
,
y
i
)
(x_{i},y_{i})
(xi,yi)
(3)如果
−
y
i
(
∑
j
=
1
N
α
j
y
j
x
j
⋅
x
+
b
)
-y_{i}(\sum\limits_{j=1}^{N}\alpha_{j}y_{j}x_{j}\cdot x+b)
−yi(j=1∑Nαjyjxj⋅x+b)是误分类点则:
α
i
←
α
i
+
η
\alpha_{i}\leftarrow \alpha_{i}+\eta
αi←αi+η
b
←
b
+
η
y
i
b\leftarrow b+\eta y_{i}
b←b+ηyi
(4)转至(2)直到没有误分类点
对偶形式中训练实例仅以内积的形式出现。为了方便,可以预先将训练集中实例间的内积计算出来并以矩阵的形式存储,这个矩阵就是所谓的Gram矩阵。
感知机学习算法的原始形式和对偶形式迭代都是收敛的,存在多个解。
参考:
https://www.cnblogs.com/huangyc/p/9706575.
https://blog.csdn.net/wkj1026639175/article/details/79827923.