感知机算法介绍

感知机(perceptron) 是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取 + 1 +1 +1 − 1 -1 1。感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。感知机的目的是找到将训练数据进行线性划分的分离超平面,为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。

感知机模型

定义

假设输入空间(特征空间)是 χ ⊆ R n \chi \subseteq \mathbf{R}^n χRn,输出空间是 Y = { + 1 , − 1 } \mathscr{Y}=\{+1,-1\} Y={+1,1},输入 x ∈ χ x \in \chi xχ表示实例( n n n维特征向量),对应于输入空间的点;输出 y ∈ Y y \in \mathscr{Y} yY表示实例的类别,由输入空间映射到输出空间,步骤如下:

  1. n n n维输入向量 x = [ x 1 , x 2 , ⋯   , x n ] x=[x_1,x_2,\cdots,x_n] x=[x1,x2,,xn]经过与其相应的权重 w = [ w 1 , w 2 , ⋯   , w n ] w=[w_1,w_2,\cdots,w_n] w=[w1,w2,,wn]综合计算,得到
    z = w 1 x 1 + w 2 x 2 + ⋯ + w n x n + b z = w_1x_1+w_2x_2+\cdots+w_nx_n+b z=w1x1+w2x2++wnxn+b
    其中, z z z叫做感知机的净活性值 w ∈ R n w \in \mathbf{R}^n wRn叫做感知机的权重向量(weight vector)权重(weight) b ∈ R b \in \mathbf{R} bR叫做感知机的偏置(bias),写成向量形式:
    z = w T x + b z=w^T x + b z=wTx+b
  2. 在线性模型之后添加激活函数,得到:
    a = s i g n ( z ) (1) a=sign(z) \tag{1} a=sign(z)(1)
    称为感知机,其中, a a a叫做活性值 s i g n ( ⋅ ) sign(\cdot) sign()符号函数
    s i g n ( z ) = { + 1 , z ≥ 0 − 1 , z < 0 (2) sign(z) = \begin{cases} +1, &z \geq 0 \\ -1, &z < 0 \tag{2} \end{cases} sign(z)={+1,1,z0z<0(2)
    由上述步骤可以看出,感知机是一种线性分类模型,属于判别模型。感知机模型的假设空间是定义在特征空间中的所有线性分类模型或线性分类器,即函数集合 { f ∣ f ( x ) = w T x + b } \{f|f(x)=w^T x + b\} {ff(x)=wTx+b}

几何解释

感知机模型中的线性方程:
w T x + b = 0 (3) w^T x + b=0 \tag{3} wTx+b=0(3)
对应于特征空间 R n \mathbf{R}^n Rn中的一个超平面 S S S,其中 w w w是超平面的法向量, b b b是超平面的截距。这个超平面将特征空间划分为两个部分。位于两部分的点(特征向量)分别被分为正、负两类。因此,超平面 S S S又称为分离超平面,如下图所示:
感知机模型

感知机学习策略

数据集的线性可分性

给定一个数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)}
其中 x i ∈ χ ⊆ R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , ⋯   , N x_i \in \chi \subseteq \mathbf{R}^n,y_i \in \mathscr{Y}=\{+1,-1\},i=1,2,\cdots,N xiχRn,yiY={+1,1},i=1,2,,N,如果存在某个超平面 S S S能够将数据集的正实例点和负实例点完全正确地划分到超平面地两侧,则称数据集 T T T线性可分数据集;否则,称数据集 T T T线性不可分。

学习策略

假设训练数据集是线性可分的,感知机学习的目标是找到一个能够将训练集的正实例点和负实例点完全正确分开的分离超平面。为了找出这样的超平面,即计算出感知机模型参数 w , b w,b w,b,需要定义一个学习策略,即定义损失函数,并将损失函数极小化。
损失函数的一个自然选择是误分类点的总数。但是,这样的损失函数对于参数 w , b w,b w,b不是连续可导函数,不易优化。损失函数的另一个选择是误分类点到超平面 S S S的总距离,这是感知机所采用的损失函数。输入空间 R n \mathbf{R}^n Rn中的任一点 x 0 x_0 x0到超平面 S S S的距离:
∣ w T x 0 + b ∣ ∣ ∣ w ∣ ∣ \frac{|w^Tx_0+b|}{||w||} wwTx0+b
这里, ∣ ∣ w ∣ ∣ ||w|| w w w w L 2 L_2 L2范数。
其次,对于误分类的数据 ( x i , y i ) (x_i,y_i) (xi,yi)来说,
− y i ( w T x i + b ) > 0 -y_i(w^Tx_i+b)>0 yi(wTxi+b)>0
成立。因为当 w T x i + b > 0 w^Tx_i+b>0 wTxi+b>0时, y i = − 1 y_i=-1 yi=1;而当 w T x i + b < 0 w^Tx_i+b<0 wTxi+b<0时, y i = + 1 y_i=+1 yi=+1。因此,误分类点到超平面 S S S的距离为:
− y i ( w T x i + b ) ∣ ∣ w ∣ ∣ -\frac{y_i(w^Tx_i+b)}{||w||} wyi(wTxi+b)
这样,假设超平面 S S S的误分类点集合为 M M M,那么所有误分类点到超平面 S S S的总距离为:
− 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M y i ( w T x i + b ) -\frac{1}{||w||} \sum_{x_i \in M} y_i(w^Tx_i+b) w1xiMyi(wTxi+b)
不考虑 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} w1,就得到感知机学习的损失函数。
给定训练集:
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)}
其中 x i ∈ χ ⊆ R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , ⋯   , N x_i \in \chi \subseteq \mathbf{R}^n,y_i \in \mathscr{Y}=\{+1,-1\},i=1,2,\cdots,N xiχRn,yiY={+1,1},i=1,2,,N。感知机 s i g n ( w T x + b ) sign(w^T x + b) sign(wTx+b)学习的损失函数定义为:
L ( w , b ) = − ∑ x i ∈ M y i ( w T x i + b ) (4) L(w,b)=-\sum_{x_i \in M} y_i(w^Tx_i+b) \tag{4} L(w,b)=xiMyi(wTxi+b)(4)
其中 M M M为误分类点的集合。

感知机算法

感知机学习问题转化为求解损失函数式(4)的最优化问题,最优化的方法是随机梯度下降法

感知机学习算法的原始形式

输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),\cdots,(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 \mathbf{R}^n,y_i \in \{+1,-1\},i=1,2,\cdots,N xiRn,yi{+1,1},i=1,2,,N;学习率 η ( 0 < η < 1 ) \eta(0<\eta<1) η(0<η<1)
输出 w , b w,b w,b,感知机模型 f ( x ) = s i g n ( w T x + b ) f(x)=sign(w^T x + b) f(x)=sign(wTx+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 T x i + b ) ≤ 0 y_i(w^T x_i + b) \leq 0 yi(wTxi+b)0
w ← w + η y i x i b ← b + η y i w \leftarrow w+\eta y_ix_i \\ b \leftarrow b+\eta y_i ww+ηyixibb+ηyi
(4) 转至(2),直至训练集中没有误分类点。
上述算法过程可理解为:当一个实例点被误分类,即位于分离超平面的错误一侧时,则调整 w , b w,b w,b的值,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面之间的距离,直至超平面越过该误分类点使其被正确分类。

感知机算法的对偶形式

输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),\cdots,(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 \mathbf{R}^n,y_i \in \{+1,-1\},i=1,2,\cdots,N xiRn,yi{+1,1},i=1,2,,N;学习率 η ( 0 < η < 1 ) \eta(0<\eta<1) η(0<η<1)
输出 α , b \alpha,b α,b,感知机模型 f ( x ) = s i g n ( ∑ j = 1 N α j y j x j ⋅ x + b ) f(x)=sign(\sum_{j=1}^N \alpha_jy_jx_j \cdot x+b) f(x)=sign(j=1Nαjyjxjx+b),其中 α = ( α 1 , α 2 , ⋯   , α N ) T \alpha=(\alpha_1,\alpha_2,\cdots,\alpha_N)^T α=(α1,α2,,αN)T
(1) α ← 0 , b ← 0 \alpha \leftarrow \mathbf{0},b \leftarrow \mathbf{0} α0,b0
(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_jy_jx_j \cdot x_i+b) \leq 0 yi(j=1Nαjyjxjxi+b)0
α i ← α i + η b ← b + η y i \alpha_i \leftarrow \alpha_i+\eta \\ b \leftarrow b+\eta y_i αiαi+ηbb+ηyi
(4)转至(2),直至训练集中没有误分类点。

参考:
[1] 李航.统计学习方法(第2版)[D].清华大学出版社.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

great-wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值