(二)统计学习方法–感知机
感知机是二分类的线性分类模型,属于判别模型
感知机模型
感知机定义如下:
f
(
x
)
=
s
i
g
n
(
w
⋅
x
+
b
)
f(x) = sign(w\cdot x + b)
f(x)=sign(w⋅x+b)
其中
x
x
x为输入(特征),
w
w
w为权值,
b
b
b为偏置,
s
i
g
n
sign
sign为符号函数:
sign
(
y
)
=
{
+
1
,
y
⩾
0
−
1
,
y
<
0
\operatorname{sign}(y)= \begin{cases}+1, & y \geqslant 0 \\ -1, & y<0\end{cases}
sign(y)={+1,−1,y⩾0y<0
输入维数为2时的几何解释:
线性方程
w
⋅
x
+
b
=
0
w\cdot x + b=0
w⋅x+b=0对应于一个超平面
S
S
S,其中
w
w
w是超平面的法向量,
b
b
b是超平面的截距。
当维数为2维时,上述方程可以展开为下式:
w 1 x 1 + w 2 x 2 + b = 0 w_1x_1+w_2x_2 + b=0 w1x1+w2x2+b=0
由上图可以得到一个直观的理解,假定 w 2 > 0 w_2>0 w2>0,当 ( x 1 , x 2 ) (x_1,x_2) (x1,x2)满足 w 1 x 1 + w 2 x 2 + b = 0 w_1x_1+w_2x_2 + b=0 w1x1+w2x2+b=0时, ( x 1 , x 2 ) (x_1,x_2) (x1,x2)会落在 w 1 x 1 + w 2 x 2 + b = 0 w_1x_1+w_2x_2 + b=0 w1x1+w2x2+b=0这一直线上;当 ( x 1 , x 2 ) (x_1,x_2) (x1,x2)满足 w 1 x 1 + w 2 x 2 + b > 0 w_1x_1+w_2x_2 + b>0 w1x1+w2x2+b>0时, x x x会落在 w 1 x 1 + w 2 x 2 + b = 0 w_1x_1+w_2x_2 + b=0 w1x1+w2x2+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,反之 y i = − 1 y_i=-1 yi=−1
损失函数首先能想到是最小化误分类点的总数,但是这种损失函数通常是离散的形式,不可导,不容易优化。所以这里考虑另一种损失函数,即最小化误分类点到超平面 S S S的总距离。
输入空间任一点
x
0
x_0
x0到超平面
S
S
S的距离:
∣
w
⋅
x
0
+
b
∣
∣
∣
w
∣
∣
2
\frac{|w\cdot x_0 +b|}{||w||_2}
∣∣w∣∣2∣w⋅x0+b∣
其中 ∣ ∣ w ∣ ∣ 2 ||w||_2 ∣∣w∣∣2为 w w w的 L 2 L_2 L2范数, ∣ ∣ w ∣ ∣ 2 = w 1 2 + w 2 2 + ⋯ + w n 2 ||w||_2 = \sqrt{w_1^2+w_2^2+\dots +w_n^2} ∣∣w∣∣2=w12+w22+⋯+wn2.
对于误分类的点来说,
w
⋅
x
i
+
b
>
0
w\cdot x_i +b>0
w⋅xi+b>0对应
y
i
=
−
1
y_i=-1
yi=−1,反之
y
i
=
+
1
y_i=+1
yi=+1。所以可得:
−
y
i
(
w
⋅
x
i
+
b
)
>
0
-y_i(w\cdot x_i + b)>0
−yi(w⋅xi+b)>0
所以我们可以将距离公式分子的绝对值去掉,得到误分类点到超平面的距离:
−
y
i
(
w
⋅
x
i
+
b
)
∣
∣
w
∣
∣
2
\frac{-y_i(w\cdot x_i + b)}{||w||_2}
∣∣w∣∣2−yi(w⋅xi+b)
所有误分类点到超平面
S
S
S的总距离为:
∑
−
y
i
(
w
⋅
x
i
+
b
)
∣
∣
w
∣
∣
2
\sum \frac{-y_i(w\cdot x_i + b)}{||w||_2}
∑∣∣w∣∣2−yi(w⋅xi+b)
因为
∣
∣
w
∣
∣
||w||
∣∣w∣∣对于所有样本点对应的距离来说取值相同,所以最小化误分类点到超平面距离也可以等价为:
m
i
n
L
(
w
,
b
)
=
m
i
n
∑
−
y
i
(
w
⋅
x
i
+
b
)
min \quad L(w,b) = min \quad \sum -y_i(w\cdot x_i + b)
minL(w,b)=min∑−yi(w⋅xi+b)
(在实际编程中其实只考虑该式是否小于等于0)
感知机学习算法
通过上述内容将感知机问题转换为优化问题,接下来对优化问题进行求解,求解方法采用梯度下降法。
梯度下降法可以简单理解为通过求解损失函数的梯度来找到损失函数取值下降最快的方向,然后进行不断的迭代,最终使得损失函数取值达到最小,这时所对应的参数取值即为我们所需的参数估计值。
损失函数
L
(
w
,
b
)
L(w,b)
L(w,b)的梯度:
∂
L
(
w
,
b
)
∂
w
=
−
∑
y
i
x
i
\frac{\partial L(w,b)}{\partial w} = -\sum y_ix_i
∂w∂L(w,b)=−∑yixi
∂
L
(
w
,
b
)
∂
b
=
−
∑
y
i
\frac{\partial L(w,b)}{\partial b} = -\sum y_i
∂b∂L(w,b)=−∑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_ix_i
w←w+ηyixi
b
←
b
+
η
y
i
b\leftarrow b+\eta y_i
b←b+ηyi
其中
η
∈
(
0
,
1
]
\eta\in (0,1]
η∈(0,1]是学习率,是一个可以人为调整的超参数。这样通过迭代可以使得损失函数不断减小直到收敛。
所以可以总结成如下算法形式:
输入: x i ∈ R n , y i ∈ { − 1 , + 1 } , i = 1 , 2 , … , N ; η ∈ ( 0 , 1 ] x_i\in R^n,y_i\in \{-1,+1\},i=1,2,\dots,N;\eta\in(0,1] xi∈Rn,yi∈{−1,+1},i=1,2,…,N;η∈(0,1]
输出(求解得到的未知量): w , b w,b w,b
(1)选取初值 w 0 , b 0 w_0,b_0 w0,b0
(2)在训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)
(3)如果 y i ( w ⋅ x i + b ) ≤ 0 y_i(w\cdot x_i + b)\le 0 yi(w⋅xi+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
(4)转至(2)直至训练集中没有误分类点
样例
例子采取的是书中的例2.1,输入有
x
1
=
(
3
,
3
)
T
,
x
2
=
(
4
,
3
)
T
,
x
3
=
(
1
,
1
)
T
x_1=(3,3)^T,x_2=(4,3)^T,x_3=(1,1)^T
x1=(3,3)T,x2=(4,3)T,x3=(1,1)T,对应地,
y
1
=
+
1
,
y
2
=
+
1
,
y
3
=
−
1
y_1=+1,y_2=+1,y_3=-1
y1=+1,y2=+1,y3=−1.分开这两类点的过程即是感知机学习训练的过程,迭代过程超平面及参数变化过程如下:
(挖坑)收敛性证明和对偶形式之后再进行补充