感知机模型
感知机类似于神经网络中的一层,特征空间为
χ
⊆
R
n
\chi \subseteq R^{n}
χ⊆Rn ,输出为
y
=
{
−
1
,
1
}
y = \{-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和b被称为感知机模型的参数,
w
∈
R
n
w \in R ^{n}
w∈Rn被称为权值向量,
b
∈
R
b \in R
b∈R被称为偏置。
w
⋅
x
w \cdot x
w⋅x表示
w
w
w和
x
x
x的内积,
s
i
g
n
sign
sign是符号函数,表示为:
a
=
{
+
1
,
x
⩾
0
−
1
,
x
<
0
a=\left\{\begin{matrix} +1, x \geqslant 0\\ -1, x <0 \end{matrix}\right.
a={+1,x⩾0−1,x<0
感知机分类的实质就是找到一个存在于特征空间$ R ^{n}$内的超平面,将整个空间划分为两个部分,分别标记为正负两类。
这也是感知机为什么无法处理异或问题的原因,异或问题并非线性可分问题,所以也不存在一个超平面能完整的将其分为两个部分。
感知机学习策略
线性可分性
从感知机的实质出发理解线性可分性,能被超平面完整划分为两部分的数据集被称为线性可分数据集。
即对于所有
y
>
1
y>1
y>1的实例均有
w
⋅
x
+
b
>
0
w \cdot x +b>0
w⋅x+b>0,对于所有
y
<
1
y<1
y<1的实例均有
w
⋅
x
+
b
<
0
w \cdot x +b<0
w⋅x+b<0
感知机学习策略
感知机的目标是找到一个能将训练集中正负实例点完全分离的超平面,为了找到这样的超平面,我们想到的办法是找到一个模型参数w,b,使得通过w,b构建的超平面能无限接近于目标的超平面。
为了实现这个目标,我们需要找到一个合适的度量,用以描述我们找到的构建超平面与目标超平面之间的距离。再通过不断缩小这个距离,使其无限接近于0,以得到无限接近与目标超平面的构建超平面。
那么如何得到这个损失呢?
首先我们先回忆一下点到直线的距离公式
d
=
A
x
0
+
B
y
0
+
C
A
2
+
b
2
d= \frac{Ax_{0}+By_{0}+C}{\sqrt {A^{2}+b^{2}}}
d=A2+b2Ax0+By0+C
可以看出,A,B,C的值相当于我们感知机模型中的w,b,则根据点到直线的公式,得到点到超平面的公式
1
∣
∣
w
∣
∣
∣
w
⋅
x
0
+
b
∣
\frac{1}{||w||}|w \cdot x_{0}+b|
∣∣w∣∣1∣w⋅x0+b∣
其中,||w||是w的
L
2
L_{2}
L2范数。
我们的思路是,既然无法直接求得两个超平面之间的距离,那为何不求出每个数据点到构建超平面的距离呢?如果这些点都分离在构建超平面的两侧,那是不是可以理解为我们求出的超平面与某一目标超平面无限接近了呢 (目标超平面不唯一)?
显而易见,在数据量足够大的情况下是可以的。这也是机器学习的关键问题,数据量问题。一般我们所说的过拟合问题往往是因为数据量太小,不足以完全刻画我们的超平面造成的。
我们根据点到超平面的距离公式可以得到每个数据点到超平面的距离,在超平面之上的点带入距离公式中,去掉绝对值可以得到
(
w
⋅
x
+
b
)
>
0
(w \cdot x +b)>0
(w⋅x+b)>0相反,在超平面之下的点,可以得到
(
w
⋅
x
+
b
)
<
0
(w \cdot x +b)<0
(w⋅x+b)<0,令超平面之上的点的y值为1 ,之下为-1,则对所有分类错误的点的集合M来说:
−
y
i
(
w
⋅
x
i
+
b
)
>
0
-y_{i}(w \cdot x_{i}+b)>0
−yi(w⋅xi+b)>0则所有误分类点到超平面的距离为:
−
1
∣
∣
w
∣
∣
∑
x
i
∈
M
y
i
(
w
⋅
x
i
+
b
)
-\frac{1}{||w||}\sum_{x_{i}\in M}y_{i}(w \cdot x_{i}+b)
−∣∣w∣∣1xi∈M∑yi(w⋅xi+b)
不考虑
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1,就得到了感知机的损失函数,定义为
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)
根据以上的推导我们可以知道损失函数
L
(
w
,
b
)
L(w,b)
L(w,b)是非负的。如果无分类错误,
L
L
L的值为0。分类错误越少,
L
L
L的值越小。故在存在误分类的情况下,
L
L
L是
w
,
b
w,b
w,b的线性函数,在无误分类的情况下,
L
L
L的值为0。因此可以得知,
L
L
L是
w
,
b
w,b
w,b的连续可导函数。
感知机学习算法
原始形式
在确定损失函数的情况下,感知机学习算法则变成了求一个损失函数极小化的问题的解。
由于已经证明
L
L
L是
w
,
b
w,b
w,b的连续可导函数。则通过梯度下降的方式可以更新是
w
,
b
w,b
w,b的值。
可以求得关于
w
,
b
w,b
w,b的偏导数:
▽
w
L
(
w
,
b
)
=
−
∑
x
i
∈
M
y
i
x
i
\bigtriangledown_{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
\bigtriangledown_{b}L(w,b)= -\sum_{x_{i} \in M}y_{i}
▽bL(w,b)=−xi∈M∑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
其中,
η
\eta
η为学习率。
通过不断更新
w
,
b
w,b
w,b的值,可以使
L
(
w
,
b
)
L(w,b)
L(w,b)的值不断减少,直到为0。
据此,提出感知机学习算法的原始形式。
输入:训练数据
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
,
y
i
∈
{
+
1
,
−
1
}
,
i
=
1
,
2
,
.
.
.
,
N
;
x_{i} \in R^{n},y_{i} \in \{+1,-1\} , i=1,2,...,N ;
xi∈Rn,yi∈{+1,−1},i=1,2,...,N;学习率为
η
(
0
<
η
⩽
1
)
\eta(0< \eta \leqslant 1)
η(0<η⩽1)
输出:
w
,
b
;
w, b;
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}(w \cdot x_{i} + b) \leqslant 0
yi(w⋅xi+b)⩽0
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
(4)转至(2),直到没有误分类点
收敛性证明(Novikoff定理)
(Novikoff)
训练数据
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
,
y
i
∈
{
+
1
,
−
1
}
,
i
=
1
,
2
,
.
.
.
,
N
;
x_{i} \in R^{n},y_{i} \in \{+1,-1\} , i=1,2,...,N ;
xi∈Rn,yi∈{+1,−1},i=1,2,...,N;则:
(1)存在满足条件
∥
w
^
o
p
t
∥
=
1
∥\hat w_{opt}∥=1
∥w^opt∥=1的超平面
w
^
o
p
t
⋅
x
^
=
w
o
p
t
⋅
x
+
b
o
p
t
=
0
\hat w_{opt} \cdot \hat x = w_{opt} \cdot x + b_{opt} =0
w^opt⋅x^=wopt⋅x+bopt=0 将训练数据完全正确分开;且存在
γ
>
0
\gamma > 0
γ>0,则对于所有的
i
=
1
,
2
,
.
.
.
,
N
i=1,2,...,N
i=1,2,...,N:
y
i
(
w
^
o
p
t
⋅
x
^
i
)
=
w
o
p
t
⋅
x
+
b
o
p
t
≥
γ
(
e
q
1
)
y_{i}(\hat w_{opt} \cdot \hat x_{i})=w_{opt} \cdot x + b_{opt} \geq \gamma \ \ \ \ \ \ \ \ \ (eq 1)
yi(w^opt⋅x^i)=wopt⋅x+bopt≥γ (eq1)
(2)令
R
=
m
a
x
1
⩽
i
⩽
N
∣
∣
x
^
i
∣
∣
R=\underset{1 \leqslant i \leqslant N }{max}||\hat x_{i}||
R=1⩽i⩽Nmax∣∣x^i∣∣,则感知机算法在训练数据集上误分类次数k满足不等式
k
⩽
(
R
γ
)
2
(
e
q
2
)
k \leqslant (\frac {R}{\gamma})^{2} \ \ \ \ \ \ \ \ \ (eq 2)
k⩽(γR)2 (eq2)
证明:
对于(1)来说,由于数据集线性可分,故一定存在一个超平面将数据集完全分开,取此超平面为
w
^
o
p
t
⋅
x
^
=
w
o
p
t
⋅
x
+
b
o
p
t
=
0
\hat w_{opt} \cdot \hat x = w_{opt} \cdot x + b_{opt} =0
w^opt⋅x^=wopt⋅x+bopt=0 使
∥
w
^
o
p
t
∥
=
1
∥\hat w_{opt}∥=1
∥w^opt∥=1对于i=1,2,,,N均有
y
i
(
w
^
o
p
t
⋅
x
^
)
=
y
i
(
w
o
p
t
⋅
x
+
b
o
p
t
)
>
0
y_{i}(\hat w_{opt} \cdot \hat x) = y_{i}(w_{opt} \cdot x + b_{opt}) >0
yi(w^opt⋅x^)=yi(wopt⋅x+bopt)>0所以存在
γ
=
m
i
n
i
{
y
i
(
w
o
p
t
⋅
x
+
b
o
p
t
)
}
\gamma=\underset{i}{min}\{y_{i}(w_{opt} \cdot x + b_{opt}) \}
γ=imin{yi(wopt⋅x+bopt)}使
y
i
(
w
^
o
p
t
⋅
x
^
)
=
y
i
(
w
o
p
t
⋅
x
+
b
o
p
t
)
⩾
γ
y_{i}(\hat w_{opt} \cdot \hat x) = y_{i}(w_{opt} \cdot x + b_{opt}) \geqslant \gamma
yi(w^opt⋅x^)=yi(wopt⋅x+bopt)⩾γ
对于(2)的证明如下:
从
w
^
0
=
0
\hat w_{0}=0
w^0=0开始,如果实例被误分类,则更新权重。令
w
^
k
−
1
\hat w_{k-1}
w^k−1是第k个误分类实例之前的权重向量,即
w
^
k
−
1
=
{
w
k
−
1
T
,
b
k
−
1
}
T
\hat w_{k-1}=\{ w_{k-1}^{T}, b_{k-1}\}^{T}
w^k−1={wk−1T,bk−1}T已知条件为分类错误次数为k,则第k个误分类的实例条件为
y
i
(
w
^
k
−
1
⋅
x
^
)
=
y
i
(
w
k
−
1
⋅
x
+
b
k
−
1
)
⩽
0
(
e
q
3
)
y_{i}(\hat w_{k-1} \cdot \hat x) = y_{i}(w_{k-1} \cdot x + b_{k-1}) \leqslant 0 \ \ \ \ \ \ \ \ \ (eq 3)
yi(w^k−1⋅x^)=yi(wk−1⋅x+bk−1)⩽0 (eq3)若是被
w
^
k
−
1
=
{
w
k
−
1
T
,
b
k
−
1
}
T
\hat w_{k-1}=\{ w_{k-1}^{T}, b_{k-1}\}^{T}
w^k−1={wk−1T,bk−1}T错误分类的数据,那么
(
w
,
b
)
(w,b)
(w,b)将会被更新为:
w
k
←
w
k
−
1
+
η
y
i
x
i
w_{k} \leftarrow w_{k-1} + \eta y_{i}x_{i}
wk←wk−1+ηyixi
b
k
←
b
k
−
1
+
η
y
i
b_{k} \leftarrow b_{k-1} + \eta y_{i}
bk←bk−1+ηyi
也就是
w
^
k
=
w
^
k
−
1
+
η
y
i
x
i
(
e
q
4
)
\hat w_{k}=\hat w_{k-1}+ \eta y_{i}x_{i} \ \ \ \ \ \ \ \ \ (eq 4)
w^k=w^k−1+ηyixi (eq4)
下面是证明的核心部分
推导两个不等式**(完全不晓得是从哪里找到的这两个不等式)**
- w ^ k w ^ o p t ⩾ k η γ \hat w_{k} \hat w_{opt} \geqslant k \eta \gamma w^kw^opt⩾kηγ
- ∣ ∣ w ^ k ∣ ∣ 2 ⩽ k η 2 γ 2 ||\hat w_{k}||^{2} \leqslant k \eta^{2}\gamma^{2} ∣∣w^k∣∣2⩽kη2γ2
对于1的证明,可以由eq1以及eq4得到:
w
^
k
w
^
o
p
t
=
w
^
k
−
1
w
^
o
p
t
+
η
y
i
w
^
o
p
t
x
^
i
⩾
w
^
k
w
^
o
p
t
+
η
γ
\hat w_{k} \hat w_{opt} = \hat w_{k-1} \hat w_{opt} + \eta y_{i} \hat w_{opt} \hat x_{i} \geqslant \hat w_{k} \hat w_{opt}+\eta \gamma
w^kw^opt=w^k−1w^opt+ηyiw^optx^i⩾w^kw^opt+ηγ由于设
w
^
0
=
0
\hat w_{0}=0
w^0=0,因此上式可以递推为
w
^
k
w
^
o
p
t
⩾
k
η
γ
\hat w_{k} \hat w_{opt} \geqslant k\eta \gamma
w^kw^opt⩾kηγ
对于2的证明,可以由eq3以及eq4得到:
∣
∣
w
^
k
∣
∣
2
=
∣
∣
w
^
k
−
1
∣
∣
2
+
2
η
y
i
w
^
k
−
1
⋅
x
^
i
+
η
2
∣
∣
x
^
i
∣
∣
2
||\hat w_{k}||^{2} =||\hat w_{k-1}||^{2}+2\eta y_{i}\hat w_{k-1} \cdot \hat x_{i}+\eta^{2}||\hat x_{i}||^{2}
∣∣w^k∣∣2=∣∣w^k−1∣∣2+2ηyiw^k−1⋅x^i+η2∣∣x^i∣∣2
根据eq3可知 2 η y i w ^ k − 1 ⋅ x ^ i ⩾ 0 2\eta y_{i}\hat w_{k-1} \cdot \hat x_{i} \geqslant 0 2ηyiw^k−1⋅x^i⩾0,故 ∣ ∣ w ^ k ∣ ∣ 2 ⩽ ∣ ∣ w ^ k − 1 ∣ ∣ 2 + η 2 ∣ ∣ x ^ i ∣ ∣ 2 ||\hat w_{k}||^{2} \leqslant ||\hat w_{k-1}||^{2}+\eta^{2}||\hat x_{i}||^{2} ∣∣w^k∣∣2⩽∣∣w^k−1∣∣2+η2∣∣x^i∣∣2递推得 ∣ ∣ w ^ k ∣ ∣ 2 ⩽ k η 2 γ 2 ||\hat w_{k}||^{2} \leqslant k\eta^{2}\gamma^{2} ∣∣w^k∣∣2⩽kη2γ2
综合1以及2,可得:
k
η
γ
⩽
w
^
k
w
^
o
p
t
⩽
∣
∣
w
^
k
∣
∣
∣
∣
w
^
o
p
t
∣
∣
⩽
k
η
R
k\eta \gamma \leqslant \hat w_{k} \hat w_{opt} \leqslant ||\hat w_{k}||||\hat w_{opt}|| \leqslant \sqrt{k}\eta R
kηγ⩽w^kw^opt⩽∣∣w^k∣∣∣∣w^opt∣∣⩽kηR
k
2
γ
2
⩽
k
2
η
2
k^{2} \gamma^{2} \leqslant k^{2}\eta^{2}
k2γ2⩽k2η2
(根据向量的余弦公式可以得到 w ^ k w ^ o p t = ∣ ∣ w ^ k ∣ ∣ ∣ ∣ w ^ o p t ∣ ∣ c o s ∠ w ^ k w ^ o p t ⩽ ∣ ∣ w ^ k ∣ ∣ ∣ ∣ w ^ o p t ∣ ∣ \hat w_{k} \hat w_{opt} = ||\hat w_{k}||||\hat w_{opt}||cos \angle \hat w_{k} \hat w_{opt} \leqslant ||\hat w_{k}||||\hat w_{opt}|| w^kw^opt=∣∣w^k∣∣∣∣w^opt∣∣cos∠w^kw^opt⩽∣∣w^k∣∣∣∣w^opt∣∣)
故可证
k
⩽
(
R
γ
)
2
k \leqslant (\frac {R}{\gamma})^{2}
k⩽(γR)2
这个定理说明,感知机算法误分类次数k是有上界的。
对偶形式
感知机算法的对偶形式其实就是用一种累加求和的方式来表示
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
逐步改善
w
,
b
w,b
w,b的值,可以用一个参数
α
i
\alpha_{i}
αi代替
n
i
η
n_{i}\eta
niη,则最后可以表示为
w
=
∑
i
=
1
N
α
i
y
i
x
i
w = \sum_{i=1}^{N}\alpha_{i}y_{i}x_{i}
w=i=1∑Nαiyixi
b
=
∑
i
=
1
N
α
i
y
i
b = \sum_{i=1}^{N}\alpha_{i}y_{i}
b=i=1∑Nαiyi
除此之外并无任何改变,我们可以得到感知机算法的对偶形式:
输入:训练数据
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
,
y
i
∈
{
+
1
,
−
1
}
,
i
=
1
,
2
,
.
.
.
,
N
;
x_{i} \in R^{n},y_{i} \in \{+1,-1\} , i=1,2,...,N ;
xi∈Rn,yi∈{+1,−1},i=1,2,...,N;学习率为
η
(
0
<
η
⩽
1
)
\eta(0< \eta \leqslant 1)
η(0<η⩽1)
输出:
α
,
b
;
\alpha , b;
α,b;感知机模型
f
(
x
)
=
s
i
g
n
(
w
⋅
x
+
b
)
.
f(x)=sign(w \cdot x + b).
f(x)=sign(w⋅x+b).
(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
(
∑
j
=
1
N
α
j
y
j
x
j
⋅
x
i
+
b
)
⩽
0
y_{i}(\sum_{j=1}^{N}\alpha_{j}y_{j}x_{j} \cdot x_{i}+b) \leqslant 0
yi(∑j=1Nαjyjxj⋅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矩阵,其实就是
x
i
x_{i}
xi内积的矩阵
G
=
[
(
x
1
⋅
x
1
)
(
x
1
⋅
x
2
)
(
x
1
⋅
x
3
)
(
x
2
⋅
x
1
)
(
x
2
⋅
x
2
)
(
x
2
⋅
x
3
)
(
x
3
⋅
x
1
)
(
x
3
⋅
x
2
)
(
x
3
⋅
x
3
)
]
G= \begin{bmatrix} (x_{1} \cdot x_{1})&(x_{1} \cdot x_{2}) &(x_{1} \cdot x_{3}) \\ (x_{2} \cdot x_{1}) & (x_{2} \cdot x_{2}) & (x_{2} \cdot x_{3})\\ (x_{3} \cdot x_{1}) &(x_{3} \cdot x_{2}) &(x_{3} \cdot x_{3}) \end{bmatrix}
G=⎣⎡(x1⋅x1)(x2⋅x1)(x3⋅x1)(x1⋅x2)(x2⋅x2)(x3⋅x2)(x1⋅x3)(x2⋅x3)(x3⋅x3)⎦⎤
(完)