第2章 感知机(perceptron)
感知机是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别,取+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
ϵ
R
n
w\epsilon R^n
wϵRn叫做权值(weight)或权值向量(weight vector),
b
ϵ
R
b\epsilon R
bϵR叫做偏置(bias)。
w
⋅
x
w\cdot x
w⋅x表示w与x的内积。
s
i
g
n
(
x
)
=
{
+
1
,
x
⩾
0
−
1
,
x
<
0
sign(x)=\left\{\begin{matrix}+1 &,x\geqslant 0 \\ -1 &,x<0 \end{matrix}\right.
sign(x)={+1−1,x⩾0,x<0
感知机只对线性可分数据集(linearly separable data set)有效。
感知机的学习策略
损失函数的选择:一个自然的选择是误分类的总数。但是,这样的损失函数不是参数w,b的连续可导函数,不宜优化。另一个选择是误分类点到超平面S的总局和。
输入空间
R
n
R^n
Rn中任意一点
x
0
x_0
x0到超平面S的距离:(二维推导可采用两个直角三角形面积相等)
1
∥
w
∥
∣
w
⋅
x
0
+
b
∣
\frac{1}{\left \| w \right \|}\left | w\cdot x_0+b \right |
∥w∥1∣w⋅x0+b∣
∥
w
∥
\left \| w \right \|
∥w∥是w的
L
2
L_2
L2范数。
对于误分类的数据
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)来说(去掉绝对值,考虑符号正负),误分类点到S的距离为:
−
1
∥
w
∥
y
i
(
w
⋅
x
i
+
b
)
-\frac{1}{\left \| w \right \|}y_i\left ( w\cdot x_i+b \right )
−∥w∥1yi(w⋅xi+b)
设误分点集合为M,所有误分点到S平面的总距离为:
−
1
∥
w
∥
∑
x
i
ϵ
M
y
i
(
w
⋅
x
0
+
b
)
-\frac{1}{\left \| w \right \|}\sum_{x_i\epsilon M}y_i\left ( w\cdot x_0+b \right )
−∥w∥1xiϵM∑yi(w⋅x0+b)
不考虑
1
∥
w
∥
\frac{1}{\left \| w \right \|}
∥w∥1,就得到感知机损失函数。
为什么可以不考虑
1
∥
w
∥
\frac{1}{\left \| w \right \|}
∥w∥1?
1、
1
∥
w
∥
\frac{1}{\left \| w \right \|}
∥w∥1不影响
y
i
(
w
⋅
x
0
+
b
)
y_i\left ( w\cdot x_0+b \right )
yi(w⋅x0+b)正负的判断,因此不影响算法的中间过程。感知机是被误分类驱动的。
2、
1
∥
w
∥
\frac{1}{\left \| w \right \|}
∥w∥1不影响最终的学习结果。感知机最终期望的结果是所有点被正确分类,即
−
1
∥
w
∥
∑
x
i
ϵ
M
y
i
(
w
⋅
x
0
+
b
)
-\frac{1}{\left \| w \right \|}\sum_{x_i\epsilon M}y_i\left ( w\cdot x_0+b \right )
−∥w∥1∑xiϵMyi(w⋅x0+b)的分子部分为零。可以看出
1
∥
w
∥
\frac{1}{\left \| w \right \|}
∥w∥1不影响最终结果。
所以,感知机损失函数定义为:
L
(
x
,
b
)
=
−
∑
x
i
ϵ
M
y
i
(
w
⋅
x
0
+
b
)
L(x,b)=-\sum_{x_i\epsilon M}y_i\left ( w\cdot x_0+b \right )
L(x,b)=−xiϵM∑yi(w⋅x0+b)
感知机学习算法
感知机问题转化为求解损失函数的最优化问题,最优化的方法是随机梯度下降法。
感知机学习算法的原始形式
首先,任意选取一个超平面
w
0
,
b
0
w_0,b_0
w0,b0,然后用梯度下降法不断极小化目标函数。极小化过程中不是一次使M中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。
(感知机学习算法是对上述损失函数进行极小化,求得w和b。但是用普通的基于所有样本的梯度和的均值的批量梯度下降法(BGD)是行不通的,原因在于我们的损失函数里面有限定,只有误分类的M集合里面的样本才能参与损失函数的优化。所以我们不能用最普通的批量梯度下降,只能采用随机梯度下降(SGD))
假设误分类点集合M是固定的,那么损失函数
L
(
x
,
b
)
L(x,b)
L(x,b)的梯度为:
▽
w
L
(
w
,
b
)
=
−
∑
x
i
ϵ
M
y
i
x
i
\bigtriangledown_wL(w,b)=-\sum_{x_i\epsilon M}y_ix_i
▽wL(w,b)=−xiϵM∑yixi
▽
b
L
(
w
,
b
)
=
−
∑
x
i
ϵ
M
y
i
\bigtriangledown_bL(w,b)=-\sum_{x_i\epsilon M}y_i
▽bL(w,b)=−xiϵM∑yi
随机选取一个误分类点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi),对w,b进行更新。
w
←
w
+
η
y
i
x
i
w\leftarrow w+\eta y_ix_i
w←w+ηyixi
b
←
w
+
η
y
i
b\leftarrow w+\eta y_i
b←w+ηyi
η
\eta
η,(
0
<
η
≤
1
0<\eta \leq 1
0<η≤1)是步长又称为学习速率(learning rate)。
算法步骤:(感知机学习算法的原始形式)
输入:悬链数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
(
x
N
,
y
N
)
}
T =\{ {(x_1,y_1),(x_2,y_2),...(x_N,y_N)}\}
T={(x1,y1),(x2,y2),...(xN,yN)},其中
x
i
ϵ
χ
=
R
n
x_i\epsilon\chi= R^n
xiϵχ=Rn,
y
i
ϵ
{
−
1
,
+
1
}
,
i
=
1
,
2
,
.
.
.
,
N
y_i \epsilon\{-1,+1\},i=1,2,...,N
yiϵ{−1,+1},i=1,2,...,N;学习率
η
\eta
η(
0
<
η
≤
1
0<\eta \leq 1
0<η≤1);
输出:w,b;感知机模型
f
(
x
)
=
s
i
g
n
(
w
⋅
x
+
b
)
f(x)=sign(w\cdot x+b)
f(x)=sign(w⋅x+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\left ( w\cdot x_i+b \right )\leq0
yi(w⋅xi+b)≤0,
w
←
w
+
η
y
i
x
i
w\leftarrow w+\eta y_ix_i
w←w+ηyixi
b
←
w
+
η
y
i
b\leftarrow w+\eta y_i
b←w+ηyi
(4)转至(2),直至训练集中没有误分类点。
感知机学习算法由于采用不同的初值或选取不同的误分类点,解可以不同。
感知机学习算法的对偶形式
对偶形式的基本想法是,将w,b表示为实习
x
i
x_i
xi和
y
i
y_i
yi的线性组合形式,通过求解其系数而求得的w和b。
在原始算法的基础上,不失一般性,可以假设初始值选取初值
w
0
,
b
0
w_0,b_0
w0,b0均为0。对误分点通过
w
←
w
+
η
y
i
x
i
w\leftarrow w+\eta y_ix_i
w←w+ηyixi
b
←
w
+
η
y
i
b\leftarrow w+\eta y_i
b←w+ηyi
逐步修改w,b,设修改n次,最后学习到的w,b可以表示为:
w
=
∑
i
=
1
N
α
i
y
i
x
i
w=\sum_{i=1}^{N}\alpha_iy_ix_i
w=i=1∑Nαiyixi
b
=
∑
i
=
1
N
α
i
y
i
b=\sum_{i=1}^{N}\alpha_iy_i
b=i=1∑Nαiyi
α
i
=
n
i
η
\alpha_i=n_i\eta
αi=niη
算法:(感知机学习的对偶形式)
输入:悬链数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
(
x
N
,
y
N
)
}
T =\{ {(x_1,y_1),(x_2,y_2),...(x_N,y_N)}\}
T={(x1,y1),(x2,y2),...(xN,yN)},其中
x
i
ϵ
χ
=
R
n
x_i\epsilon\chi= R^n
xiϵχ=Rn,
y
i
ϵ
{
−
1
,
+
1
}
,
i
=
1
,
2
,
.
.
.
,
N
y_i \epsilon\{-1,+1\},i=1,2,...,N
yiϵ{−1,+1},i=1,2,...,N;学习率
η
\eta
η(
0
<
η
≤
1
0<\eta \leq 1
0<η≤1);
输出:w,b;感知机模型
f
(
x
)
=
s
i
g
n
(
∑
i
=
1
N
α
i
y
i
x
i
⋅
x
+
b
)
f(x)=sign(\sum_{i=1}^{N}\alpha_iy_ix_i\cdot x+b)
f(x)=sign(∑i=1Nαiyixi⋅x+b)。其中
α
=
(
α
1
,
α
2
,
.
.
.
,
α
N
)
T
\alpha =(\alpha_{1},\alpha_{2},...,\alpha_{N})^{T}
α=(α1,α2,...,αN)T。
(1)
α
←
0
,
b
←
0
\alpha \leftarrow 0,b\leftarrow 0
α←0,b←0;
(2)在训练数据集中选取数据
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi);
(3)如果
y
i
(
∑
i
=
1
N
α
i
y
i
x
i
⋅
x
i
+
b
)
≤
0
y_i\left (\sum_{i=1}^{N}\alpha_iy_ix_i\cdot x_i+b \right )\leq0
yi(∑i=1Nαiyixi⋅xi+b)≤0,
α
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矩阵。
G
=
[
x
i
⋅
x
j
]
N
×
N
G=\left[x_i\cdot x_j\right]_{N \times N}
G=[xi⋅xj]N×N
原始形式和对偶形式的选择
在向量维数(特征数)过高时,计算内积非常耗时,应选择对偶形式算法加速。
在向量个数(样本数)过多时,每次计算累计和就没有必要,应选择原始算法
算法的收敛性
当训练数据集线性可分时,感知机学习算法原始形式和对偶形式的迭代是收敛的,存在多个解。