1. 提出问题
问题:有一组训练数据集
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
…
,
(
x
N
,
y
N
)
}
T=\{(x_1,y_1), (x_2,y_2), \ldots ,(x_N,y_N)\}
T={(x1,y1),(x2,y2),…,(xN,yN)}
其中
x
i
∈
X
=
R
n
x_i\in\mathcal{X}=R^n
xi∈X=Rn,
y
i
∈
Y
=
{
+
1
,
−
1
}
y_i\in\mathcal{Y}=\{+1,-1\}
yi∈Y={+1,−1},
i
=
1
,
2
,
…
,
N
i=1,2,\ldots,N
i=1,2,…,N,求一个超平面
S
S
S 使其能够完全将
y
i
=
+
1
y_i=+1
yi=+1 和
y
i
=
−
1
y_i=-1
yi=−1 的点分开。
2. 感知机及其损失函数
一个线性平面的方程为 y = w ⋅ x + b y=w\cdot x+b y=w⋅x+b,要将 y i = + 1 y_i=+1 yi=+1 和 y i = − 1 y_i=-1 yi=−1 的点分开则需要让求解方程的的因变量为 ± 1 \pm 1 ±1,所以需要一个sign函数,sign函数的表达式为:
s i g n ( x ) = { + 1 − 1 … … … … … … … … … … … … … … … … ( 2.1 ) sign(x)=\begin{cases} +1\\ -1 \end{cases}\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots(2.1) sign(x)={+1−1…………………………………………(2.1)
所以求解方程为:
f ( x ) = s i g n ( w ⋅ x + b ) … … … … … … … … … … … … … … ( 2.2 ) f(x)=sign(w\cdot x+b)\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots(2.2) f(x)=sign(w⋅x+b)……………………………………(2.2)
这个求解方程即被称为感知机。要求解这个方程只需要确定 w w w 和 b b b 的值,为了确定参数值,就需要定义一个损失函数并将损失函数及小化。
感知机所用的损失函数为误分类点到超平面 S S S 的总距离。首先写出空间 R n R^n Rn 中任意一点 x 0 x_0 x0 到超平面 S S S 的距离:
1 ∣ ∣ w ∣ ∣ ∣ w ⋅ x 0 + b ∣ … … … … … … … … … … … … … … … ( 2.3 ) \frac{1}{||w||}|w\cdot x_0+b|\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots(2.3) ∣∣w∣∣1∣w⋅x0+b∣………………………………………(2.3)
这里 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣ 是 w w w 的 L 2 L_2 L2 范数。
对于误分类的数据 ( x i , y i ) (x_i,y_i) (xi,yi) 来说, − y i ( w i ⋅ x i + b ) > 0 -y_i(w_i\cdot x_i + b)>0 −yi(wi⋅xi+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,而当 w ⋅ x i + b < 0 w\cdot x_i+b<0 w⋅xi+b<0 时, y i = + 1 y_i=+1 yi=+1 ,因此,误分类点 x i x_i xi 到超平面 S S S 的距离是:
− 1 ∣ ∣ w ∣ ∣ y i ( w ⋅ x i + b ) … … … … … … … … … … … … … ( 2.4 ) -\frac{1}{||w||}y_i(w\cdot x_i+b)\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots(2.4) −∣∣w∣∣1yi(w⋅xi+b)…………………………………(2.4)
这样,假设超平面 S S S 的误分类点集合为 M M M ,那么所有误分类点到超平面 S S S 的总距离为:
− 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M y i ( w ⋅ x i + b ) … … … … … … … … … … ( 2.5 ) -\frac{1}{||w||}\sum_{x_i\in M} y_i(w\cdot x_i+b)\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots(2.5) −∣∣w∣∣1∑xi∈Myi(w⋅xi+b)…………………………(2.5)
不考虑 1 ∣ ∣ w ∣ ∣ \frac{1}{||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),\dots,(x_N, y_N)} T=(x1,y1),(x2,y2),…,(xN,yN),其中, x i ∈ X = R n x_i\in \mathcal{X}=R^n xi∈X=Rn, y i ∈ Y = { + 1 , − 1 } y_i\in \mathcal{Y}=\{+1, -1\} yi∈Y={+1,−1}, i = 1 , 2 , … , N i=1,2,\dots,N i=1,2,…,N . 感知机 s i g n ( w ⋅ x + b ) sign(w\cdot x+b) sign(w⋅x+b) 学习的损失函数定义为:
L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) … … … … … … … … ( 2.6 ) L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b)\dots\dots\dots\dots\dots\dots\dots\dots(2.6) L(w,b)=−∑xi∈Myi(w⋅xi+b)……………………(2.6)
其中 M M M 为误分类点的集合,这个损失函数就是感知机学习的经验风险函数。
3. 求解
给定训练数据集 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) T={(x_1,y_1),(x_2,y_2),\dots,(x_N, y_N)} T=(x1,y1),(x2,y2),…,(xN,yN),其中, x i ∈ X = R n x_i\in \mathcal{X}=R^n xi∈X=Rn, y i ∈ Y = { + 1 , − 1 } y_i\in \mathcal{Y}=\{+1, -1\} yi∈Y={+1,−1}, i = 1 , 2 , … , N i=1,2,\dots,N i=1,2,…,N ,求参数 w , b w, b w,b ,使其为以下损失函数极小化问题的解:
m i n w . b L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) … … … … … ( 3.1 ) min_{w.b}L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b)\dots\dots\dots\dots\dots(3.1) minw.bL(w,b)=−∑xi∈Myi(w⋅xi+b)……………(3.1)
其中 M M M 为误分类点的集合。
采用随机梯度下降法来求解。首先,任意选取一个超平面 w 0 , b 0 w_0,b_0 w0,b0,然后用随机梯度下降法不断地极小化目标函数,极小化的过程中不是一次使 M M M 中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。
假设误分类点集合 M M M 是固定的,那么损失函数 L ( w , b ) L(w,b) L(w,b) 的梯度由:
∇ w L ( w , b ) = − ∑ x i ∈ M y i x i \nabla_wL(w,b)=-\sum_{x_i\in M}y_ix_i ∇wL(w,b)=−∑xi∈Myixi
∇ b L ( w , b ) = − ∑ x i ∈ M y i \nabla_bL(w,b)=-\sum_{x_i\in M}y_i ∇bL(w,b)=−∑xi∈Myi
给出.
随机选取一个误分类点 ( x i , y i ) (x_i,y_i) (xi,yi) ,对 w , b w,b w,b 进行更新:
w ← w + η y i x i … … … … … … … … … … … … … … ( 3.2 ) w\gets w+\eta y_ix_i\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots(3.2) w←w+ηyixi……………………………………(3.2)
b ← b + η y i … … … … … … … … … … … … … … … ( 3.3 ) b\gets b+\eta y_i\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots(3.3) b←b+ηyi………………………………………(3.3)
式中 η ( 0 < η ≤ 1 ) \eta(0<\eta\leq1) η(0<η≤1) 是步长,在统计学系中又称为学习率. 这样,通过迭代可以期待损失函数 L ( w , b ) L(w,b) L(w,b) 不断减小,直到为0.
4. 例子
如下图所示的训练数据集,其正实例点是 x 1 = ( 3 , 3 ) T x_1=(3, 3)^T x1=(3,3)T, x 2 = ( 4 , 3 ) T x_2=(4,3)^T x2=(4,3)T,负实例点是 x 3 = ( 1 , 1 ) T x_3=(1, 1)^T x3=(1,1)T,试用感知机学习算法的原始形式求感知机模型 f ( x ) = s i g n ( w ⋅ x + b ) f(x)=sign(w\cdot x+b) f(x)=sign(w⋅x+b). 这里 w = ( w ( 1 ) , w ( 2 ) ) T w=(w^{(1)},w^{(2)})^T w=(w(1),w(2))T, x = ( x ( 1 ) , x ( 2 ) ) T x=(x^{(1)},x^{(2)})^T x=(x(1),x(2))T.
解:
最优化问题为:
m i n 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) minw.bL(w,b)=−∑xi∈Myi(w⋅xi+b)
用第3节的方式求解 w , b w, b w,b,设学习率 η = 1 \eta=1 η=1.
(1)取初值
w
0
=
0
,
b
0
=
0
w_0=0, b_0=0
w0=0,b0=0
(2)对
x
1
=
(
3
,
3
)
T
x_1=(3,3)^T
x1=(3,3)T,
y
1
(
w
0
⋅
x
1
+
b
0
)
=
0
y_1(w_0\cdot x_1+b_0)=0
y1(w0⋅x1+b0)=0,未能=被正确分类,更新
w
,
b
w,b
w,b
w 1 = w 0 + y 1 x 1 = ( 3 , 3 ) T , b 1 = b 0 + y 1 = 1 w_1=w_0+y_1x_1=(3,3)^T, b_1=b_0+y_1=1 w1=w0+y1x1=(3,3)T,b1=b0+y1=1
得到线性模型
w 1 ⋅ x + b 1 = 3 x ( 1 ) + 3 x ( 2 ) + 1 w_1\cdot x+b_1=3x^{(1)}+3x^{(2)}+1 w1⋅x+b1=3x(1)+3x(2)+1
(3)对
x
1
,
x
2
x_1,x_2
x1,x2,显然,
y
1
(
w
1
⋅
x
1
+
b
1
)
>
0
y_1(w_1\cdot x_1+b_1)>0
y1(w1⋅x1+b1)>0,被正确分类,不修改
w
,
b
w,b
w,b;
对
x
3
=
(
1
,
1
)
T
,
y
3
(
w
1
⋅
x
3
+
b
1
)
<
0
x_3=(1,1)^T,y_3(w_1\cdot x_3+b_1) < 0
x3=(1,1)T,y3(w1⋅x3+b1)<0,被误分类,更新
w
,
b
w, b
w,b.
w 2 = w 1 + y 3 x 3 = ( 2 , 2 ) T , b 2 = b 1 + y 3 = 0 w_2=w_1+y_3x_3=(2,2)^T, b_2=b_1+y_3=0 w2=w1+y3x3=(2,2)T,b2=b1+y3=0
得到线性模型
w 2 ⋅ x + b 2 = 2 x ( 1 ) + 2 x ( 2 ) w_2\cdot x+b_2=2x^{(1)}+2x^{(2)} w2⋅x+b2=2x(1)+2x(2)
如此继续下去,直到
w 7 = ( 1 , 1 ) T , b 7 = − 3 w_7=(1,1)^T, b_7=-3 w7=(1,1)T,b7=−3
w 7 ⋅ x + b 7 = x ( 1 ) + x ( 2 ) − 3 w_7\cdot x+b_7=x^{(1)}+x^{(2)}-3 w7⋅x+b7=x(1)+x(2)−3
对所有数据点 y i ( w 7 ⋅ x i + b 7 ) > 0 y_i(w_7\cdot x_i+b_7) > 0 yi(w7⋅xi+b7)>0,没有误分类点,损失函数达到极小
分离超平面为:
x ( 1 ) + x ( 2 ) − 3 = 0 x^{(1)}+x^{(2)}-3=0 x(1)+x(2)−3=0
感知机模型为:
f ( x ) = s i g n ( x ( 1 ) + x ( 2 ) − 3 ) f(x)=sign(x^{(1)}+x^{(2)}-3) f(x)=sign(x(1)+x(2)−3)