感知机模型是一个非常基础的模型,是神经网络的根基。
感知机模型
感知机模型是一个二分类的线性分类模型,输入是样本的特征向量,输出是样本的类别,取值+1和-1。
模型定义
假设输入空间(特征空间)是
X
⊆
R
n
\mathcal{X} \subseteq \mathrm{R}^n
X⊆Rn,输出空间是
Y
=
{
+
1
,
−
1
}
\mathcal{Y} = \{ +1, -1 \}
Y={+1,−1}。输入
x
∈
X
x \in \mathcal{X}
x∈X表示样本的特征向量,对应于输入空间(特征空间)的点,输出
y
∈
Y
y \in \mathcal{Y}
y∈Y对应样本的类别。有输入空间到输出空间的映射函数如下:
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是感知机的模型参数,
w
∈
R
n
w \in \mathrm{R}^n
w∈Rn是系数或叫权重、权值,
b
∈
R
b \in \mathrm{R}
b∈R叫偏置,
w
⋅
x
w \cdot x
w⋅x表示
w
w
w 和
x
x
x的内积。
s
i
g
n
sign
sign是符号函数:
s
i
g
n
(
x
)
=
{
+
1
,
x
≥
0
−
1
,
x
<
0
sign(x) = \begin{cases} +1, \ \ \ x \geq 0 \\ -1, \ \ \ x < 0 \end{cases}
sign(x)={+1, x≥0−1, x<0
感知机是一种线性分类模型,感知机模型的假设空间是定义在特征空间中所有的线性分类模型或线性分类器。函数的集合 { f ∣ f ( x ) = w ⋅ x + b } \{ f \mid 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 \mathrm{R}^n Rn的一个超平面 S S S,其中 w w w是超平面的法向量, b b b 是超平面的截距。这个超平面把特征空间划分成两个部分,位于两个部分的点(特征向量)被划分为正、负两类。超平面 S S S被称作分离超平面。
如上图所示,假设在二维特征空间,
w
⋅
x
+
b
=
0
w \cdot x + b = 0
w⋅x+b=0表示分离超平面,
∘
\circ
∘ 表示正类取值+1,即
w
⋅
x
i
+
b
>
0
w \cdot x_i + b > 0
w⋅xi+b>0。
×
\times
× 表示负类取值-1,即
w
⋅
x
i
+
b
<
0
w \cdot x_i + b < 0
w⋅xi+b<0。
总结一句话:感知机需要找到一个能够将训练数据集的正样本和负样本完全正确分开的分离超平面。
学习策略
感知机学习的前提是数据集线性可分,也就是说存在一个分离超平面
S
S
S能够正确将正类和负类划分到超平面的两侧,即对所有的
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的样本,有
w
⋅
x
i
+
b
<
0
w \cdot x_i + b < 0
w⋅xi+b<0。说明数据集线性可分。
感知机想要找到这个分离超平面,就需要确定模型的参数 w和b,需要制定一个学习的策略,即定义损失函数并最小化损失函数。
由于直接定义样本分类错误的个数,这个函数不是连续可导函数不易于优化求最优值。另一个想法是计算分类错误点到分离超平面的距离和,这就是感知机所采用的损失函数。
一个点到超平面的距离公式:
1
∣
∣
w
∣
∣
∣
w
∗
x
+
b
∣
{1 \over ||w||} | w*x+b |
∣∣w∣∣1∣w∗x+b∣,
∣
∣
w
∣
∣
||w||
∣∣w∣∣是w的
L
2
L_2
L2范数。
其中
- L 0 L_0 L0范数,指的是向量中非零元素的个数。向量{1,0,-3,0,1,2}的 L 0 L_0 L0范数为4。
- L 1 L_1 L1范数,指的是向量中元素绝对值之和。向量{1,0,-3,0,1,2}的 L 1 L_1 L1范数为 ∣ 1 ∣ + ∣ 0 ∣ + ∣ − 3 ∣ + ∣ 0 ∣ + ∣ 1 ∣ + ∣ 2 ∣ = 7 |1| + |0| + |-3| + |0| + |1| + |2| = 7 ∣1∣+∣0∣+∣−3∣+∣0∣+∣1∣+∣2∣=7。
- L 2 L_2 L2范数,指的是向量中元素平方和的正平方根。向量{1,0,-3,0,1,2}的 L 1 L_1 L1范数为 1 2 + 0 2 + ( − 3 ) 2 + 0 2 + 1 2 + 2 2 = 15 \sqrt{ 1^2 + 0^2 + (-3)^2 + 0^2 + 1^2 + 2^2 } = \sqrt{15} 12+02+(−3)2+02+12+22=15。
其中对误分类点 ( 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成立。因为如果 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,那么 w ⋅ x i + b < 0 w \cdot x_i + b < 0 w⋅xi+b<0,所以分类错误的点到分离超平面的距离 − 1 ∣ ∣ w ∣ ∣ y i ( w ⋅ x i + b ) - { 1 \over ||w|| } y_i (w \cdot x_i + b) −∣∣w∣∣1yi(w⋅xi+b)。
假设误分类点的集合为M,所有误分类的点到分离超平面距离的和为 − 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M y i ( w ⋅ x i + b ) -{1 \over ||w||} \sum_{x_i \in M} y_i(w \cdot x_i + b) −∣∣w∣∣1∑xi∈Myi(w⋅xi+b),对于一个固定的w来说, 1 ∣ ∣ w ∣ ∣ 1 \over ||w|| ∣∣w∣∣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)}
其中
x
i
∈
X
=
R
n
,
y
i
∈
Y
=
{
−
1
,
+
1
}
,
i
=
1
,
2
,
3
,
⋯
 
,
N
x_i \in \mathcal{X} = \mathrm{R}^n, \ \ \ y_i \in \mathcal{Y} = \{-1, +1\}, \ \ \ i = 1,2,3, \cdots, N
xi∈X=Rn, yi∈Y={−1,+1}, i=1,2,3,⋯,N。感知机的损失函数定义为:
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是误分类点的集合,这是感知机的经验风险函数。
算法
确定了感知机的损失函数,之后就要最小化损失函数,即:
min
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)
w,bminL(w,b)=−xi∈M∑yi(w⋅xi+b)
最优化的求解使用随机梯度下降法。先随机选一个初始参数
w
0
,
b
0
w_0, b_0
w0,b0,确定一个分离超平面,然后使用随机梯度下降法,从误分类的集合点中随机选一个点优化损失函数。
损失函数
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_i x_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
随机选一个误分类的点对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
公式中的 η \eta η表示步长,又称作学习率,表示在梯度方向一次前进多少。在不断优化的过程中 L ( w , b ) L(w, b) L(w,b)不断减少,一直到0。
对偶形式
对应SVM的对偶形式。
是将参数表示成
x
i
x_i
xi和
y
i
y_i
yi的线性组合。通过求解其系数从而求w和b。
假设w和b的初始值为0,通过使用误分类点更新w和b:
w
←
w
+
η
x
i
y
i
w \leftarrow w + \eta x_i y_i
w←w+ηxiyi
b
←
b
+
η
y
i
b \leftarrow b + \eta y_i
b←b+ηyi
逐步修改w和b,设修改n次,则w和b关于
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi)的增量分别是
a
i
y
i
x
i
a_i y_i x_i
aiyixi 和
a
i
y
i
a_i y_i
aiyi,
a
i
=
n
i
η
a_i = n_i \eta
ai=niη,最后的w和b可以表示为:
w
=
∑
i
=
1
N
a
i
y
i
x
i
w = \sum_{i=1}^N a_i y_i x_i
w=i=1∑Naiyixi
b
=
∑
i
=
1
N
a
i
y
i
b = \sum_{i=1}^N a_i y_i
b=i=1∑Naiyi
a
i
≥
0
,
i
=
1
,
2
,
⋯
 
,
N
a_i \geq 0, i=1,2,\cdots ,N
ai≥0,i=1,2,⋯,N 参考P33,算法2.2
总结
训练数据集
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
∈
X
=
R
n
,
y
i
∈
Y
=
{
+
1
,
−
1
}
,
i
=
1
,
2
,
⋯
 
,
N
x_i \in \mathcal{X} = \mathrm{R}^n, \ \ \ y_i \in \mathcal{Y} = \{+1, -1\}, \ \ \ i = 1, 2, \cdots,N
xi∈X=Rn, yi∈Y={+1,−1}, i=1,2,⋯,N;学习率
η
(
0
≤
η
≤
1
)
\eta (0 \leq \eta \leq 1 )
η(0≤η≤1);
感知机的模型:
f
(
x
)
=
s
i
g
n
(
w
⋅
x
+
b
)
f(x) = sign(w \cdot x + b)
f(x)=sign(w⋅x+b)
随机选一个值
w
0
,
b
0
w_0, b_0
w0,b0,然后在训练数据集中选出
y
i
(
w
⋅
x
i
+
b
)
≤
0
y_i (w \cdot x_i + b) \leq 0
yi(w⋅xi+b)≤0的点,用
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi)更新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
然后再用新的w和b在训练数据集中选出 y i ( w ⋅ x i + b ) ≤ 0 y_i (w \cdot x_i + b) \leq 0 yi(w⋅xi+b)≤0的点,直到找不到这样的点。
直观的理解:当选择的分离超平面存在错误的时候,使用错误的点调整分离超平面,使错误变正确。不断调整分离超平面,直至所有的点都正确。