感知机模型

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 xiX=Rn y i ∈ Y = { + 1 , − 1 } y_i\in\mathcal{Y}=\{+1,-1\} yiY={+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=wx+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)={+11…………………………………………(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(wx+b)……………………………………(2.2)

这个求解方程即被称为感知机。要求解这个方程只需要确定 w w w b b b 的值,为了确定参数值,就需要定义一个损失函数并将损失函数及小化。

感知机模型_第1张图片

感知机所用的损失函数为误分类点到超平面 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∣∣1wx0+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(wixi+b)>0 成立。因为当 w ⋅ x i + b > 0 w\cdot x_i+b>0 wxi+b>0 时, y i = − 1 y_i=-1 yi=1,而当 w ⋅ x i + b < 0 w\cdot x_i+b<0 wxi+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(wxi+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∣∣1xiMyi(wxi+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 xiX=Rn y i ∈ Y = { + 1 , − 1 } y_i\in \mathcal{Y}=\{+1, -1\} yiY={+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(wx+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)=xiMyi(wxi+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 xiX=Rn y i ∈ Y = { + 1 , − 1 } y_i\in \mathcal{Y}=\{+1, -1\} yiY={+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)=xiMyi(wxi+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)=xiMyixi

∇ b L ( w , b ) = − ∑ x i ∈ M y i \nabla_bL(w,b)=-\sum_{x_i\in M}y_i bL(w,b)=xiMyi

给出.

随机选取一个误分类点 ( 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) ww+η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) bb+η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(wx+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.

感知机模型_第2张图片

解:

最优化问题为:

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)=xiMyi(wxi+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(w0x1+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 w1x+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(w1x1+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)Ty3(w1x3+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)} w2x+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 w7x+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(w7xi+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)

你可能感兴趣的:(统计学习方法,机器学习)