感知机
感知机模型
分离超平面
输入空间(特征空间)为
x
⊆
R
n
x\subseteq R^n
x⊆Rn,输出空间为
y
=
{
+
1
,
−
1
}
y=\{+1, -1\}
y={+1,−1},从输入空间到输出空间的函数为
f
(
x
)
=
s
i
g
n
(
w
⋅
x
+
b
)
(1)
f(x)=sign(w·x+b) \tag 1
f(x)=sign(w⋅x+b)(1)
其中
w
∈
R
n
w\in R^n
w∈Rn,叫做权值向量;
b
∈
R
b\in R
b∈R叫做偏置(注意不是
R
n
R^n
Rn);sing是符号函数,即
s
i
n
g
(
x
)
=
{
+
1
,
x
≥
0
−
1
,
x
<
0
(2)
sing(x)=\left\{\begin{array}{ll} +1, & x\ge 0 \\ -1, & x<0 \end{array}\right. \tag 2
sing(x)={+1,−1,x≥0x<0(2)
感知机模型需要在特征空间
R
n
R^n
Rn中找到一个分离超平面S将特征空间划分为两部分,位于这两部分的点也就被分为了正负两大类。该分离超平面S的线性方程为
w
⋅
x
+
b
=
0
(3)
w·x+b=0 \tag 3
w⋅x+b=0(3)
其中w是超平面的法向量;b是超平面的截距
损失函数
要将若干点
x
i
∈
x
⊆
R
n
x_i\in x \subseteq R^n
xi∈x⊆Rn正确划分到正负两大类中,就需要找到一个分离超平面对任意实例i都遵从下式
{
w
⋅
x
i
+
b
>
0
,
y
i
=
+
1
w
⋅
x
i
+
b
<
0
,
y
i
=
−
1
(4)
\left\{\begin{array}{ll} w·x_i+b>0, & y_i=+1 \\ w·x_i+b<0, & y_i=-1 \end{array}\right. \tag 4
{w⋅xi+b>0,w⋅xi+b<0,yi=+1yi=−1(4)
若有实例点不遵从(4),则是误分类数据,对于误分类数据
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)来说
{
y
i
=
−
1
,
w
⋅
x
i
+
b
>
0
y
i
=
+
1
,
w
⋅
x
i
+
b
<
0
(5)
\left\{\begin{array}{ll} y_i=-1, & w·x_i+b>0 \\ y_i=+1, & w·x_i+b<0 \end{array}\right. \tag 5
{yi=−1,yi=+1,w⋅xi+b>0w⋅xi+b<0(5)
由(5)可得
−
y
i
(
w
⋅
x
i
+
b
)
>
0
(6)
-y_i(w·x_i+b)>0 \tag 6
−yi(w⋅xi+b)>0(6)
误分类点到分离超平面S的距离可以衡量S选择的优劣程度,因此损失函数将与误分类点到分离超平面的距离相关
输入空间
R
n
R^n
Rn中任一点
x
0
x_0
x0到超平面的距离公式为
d
=
∣
w
⋅
x
0
+
b
∣
∣
∣
w
∣
∣
2
(7)
d=\frac{|w·x_0+b|}{||w||_2} \tag 7
d=∣∣w∣∣2∣w⋅x0+b∣(7)
其中
∣
∣
w
∣
∣
2
||w||_2
∣∣w∣∣2是w的L2范数
设误分类集合为M,结合(6)可知,所有误分类点到超平面的总距离为
D
=
−
1
∣
∣
w
∣
∣
2
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
(8)
D=-\frac{1}{||w||_2}\sum_{x_i\in M} y_i(w·x_i+b) \tag 8
D=−∣∣w∣∣21xi∈M∑yi(w⋅xi+b)(8)
其中
y
i
∈
{
−
1
,
+
1
}
,
D
>
0
y_i\in \{-1,+1\},D>0
yi∈{−1,+1},D>0
忽略常数
1
∣
∣
w
∣
∣
2
\frac{1}{||w||_2}
∣∣w∣∣21,可得感知机学习的损失函数
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
(9)
L(w,b)=-\sum_{x_i\in M} y_i(w·x_i+b) \tag 9
L(w,b)=−xi∈M∑yi(w⋅xi+b)(9)
原始形式
由损失函数可得损失函数的梯度
∇
L
(
w
,
b
)
\nabla L(w,b)
∇L(w,b),对w与b分别求偏导数可得
∇
w
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
x
i
∇
b
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
(10)
\nabla_w L(w,b)=-\sum_{x_i\in M} y_ix_i \\ \nabla_b L(w,b)=-\sum_{x_i\in M} y_i \tag{10}
∇wL(w,b)=−xi∈M∑yixi∇bL(w,b)=−xi∈M∑yi(10)
梯度代表函数在该点
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi)沿着该方向(梯度是向量)是变化最快、变化率最大的。因此梯度的负方向是局部下降最快的方向,为了优化分离超平面最小化损失函数,就需要对各个参数加上其梯度的负方向值。此处我们采用随机梯度下降法优化参数。
随机梯度下降法即每次仅选取一个点进行迭代,此时
∣
M
∣
=
1
|M|=1
∣M∣=1,由(10)可得此时损失函数的梯度为
∇
w
L
S
G
B
(
w
,
b
)
=
−
y
i
x
i
∇
b
L
S
G
B
(
w
,
b
)
=
−
y
i
(11)
\nabla_w L_{SGB}(w,b)=-y_ix_i \\ \nabla_b L_{SGB}(w,b)=-y_i \tag{11}
∇wLSGB(w,b)=−yixi∇bLSGB(w,b)=−yi(11)
更新后的w,b为
w
←
w
+
η
y
i
x
i
b
←
b
+
η
y
i
(12)
w\gets w+\eta y_ix_i \\ b\gets b+\eta y_i \tag{12}
w←w+ηyixib←b+ηyi(12)
其中
η
(
0
<
η
≤
1
)
\eta(0<\eta \leq1)
η(0<η≤1)是步长(学习率),它控制函数拟合(收敛)的速度。若
η
\eta
η太小,收敛就会很慢;若
η
\eta
η太大,容易在最低点方向震荡,进入死循环。
通过迭代可以期待损失函数不断减小直至为零,此时即可得到分离超平面 w ⋅ x + b = 0 w·x+b=0 w⋅x+b=0
对偶形式
每一个线性规划问题的原始形式皆有一个与之对称并可相互转换的对偶形式,因此原始形式与对偶形式的解是对应的,得到一个形式的解即是得到另一个形式的解。
我们在一次迭代时遍历所有的样本点,并累计每个点的误分类次数n。即点 x i x_i xi在一次迭代时被误分类了,那么 n i n_i ni则加一。值得一提的是, n i n_i ni更大的点表明该点更经常被误分类,很明显,离分离超平面越近的点越容易被误分。
依据(12)当初始化
w
0
=
0
,
b
0
=
0
w_0=0,b_0=0
w0=0,b0=0时,经过若干次迭代可得参数值
w
=
∑
i
=
1
N
n
i
η
x
i
y
i
b
=
∑
i
=
1
N
n
i
η
y
i
(13)
w=\sum_{i=1}^{N} n_i\eta x_iy_i \\ b=\sum_{i=1}^{N} n_i\eta y_i \tag{13}
w=i=1∑Nniηxiyib=i=1∑Nniηyi(13)
其中N为所有样本点的总数
令
α
=
n
i
η
\alpha =n_i\eta
α=niη,将(13)代入(1)可得对偶形式的感知机模型
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
α
x
i
y
i
⋅
x
+
∑
i
=
1
N
α
y
i
)
(14)
f(x)=sign(\sum_{i=1}^{N} \alpha x_iy_i·x+\sum_{i=1}^{N} \alpha y_i) \tag {14}
f(x)=sign(i=1∑Nαxiyi⋅x+i=1∑Nαyi)(14)
与原始形式一样我们采用随机梯度下降法优化参数
令
α
=
n
i
η
\alpha =n_i\eta
α=niη,将(13)代入(6)可得对偶形式的误分类点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的判别式
−
y
i
(
∑
k
=
1
N
α
k
x
k
y
k
⋅
x
i
+
∑
k
=
1
N
α
k
y
k
)
>
0
(15)
-y_i(\sum_{k=1}^{N} \alpha_kx_ky_k·x_i+\sum_{k=1}^{N} \alpha_k y_k)>0 \tag {15}
−yi(k=1∑Nαkxkyk⋅xi+k=1∑Nαkyk)>0(15)
其中N为所有样本点的总数,k的作用是遍历样本点计算w与b
当随机找到的一个点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)属于误分类点符合(15)时,需要更新参数
α
i
\alpha_i
αi
∵
α
i
=
n
i
η
∴
α
i
←
η
(
n
i
+
1
)
α
i
←
α
i
+
η
(16)
\begin{array}{ll} & \because & \alpha_i& =n_i\eta \\ &\therefore & \alpha_i & \gets \eta(n_i+1) \\ & & \alpha_i & \gets \alpha_i +\eta \end{array} \tag{16}
∵∴αiαiαi=niη←η(ni+1)←αi+η(16)
与原始形式一样,通过迭代可以期待损失函数不断减小直至为零,此时即可得到分离超平面
w
⋅
x
+
b
=
0
w·x+b=0
w⋅x+b=0
之所以使用对偶形式,是因为在原始形式的判别式(6)中主要的运算量来自于 w ⋅ x i w·x_i w⋅xi,而对偶形式的判别式(15)主要的运算量来自于 x i ⋅ x k x_i·x_k xi⋅xk。其中 x i ⋅ x k x_i·x_k xi⋅xk可以通过预先计算的Gram矩阵快速获取。Gram矩阵是所有输入实例两两之间的内积 G = [ x i x k ] N × N G=[x_ix_k]_{N\times N} G=[xixk]N×N
对偶形式并不是任何情况都能降低运算量,只有在特征空间的纬度远大于数据集时才能降低运算量