《统计学习方法》(1)——感知机

《统计学习方法》(1)——感知机

1958年,Rosenblatt等人成功研制了代号为Mark I的感知机(perceptron),这是历史上首个神经网络的学习功能用于模式识别的装置,标志着神经网络进入了新的历史阶段。
\quad

1、感知机

感知机是二分类的线性分类模型,输入为实例的特征向量,输出是实例的类别,可以是-1和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 ∈ R n , y i = 1   o r   − 1 , i = 1 , 2 , 3 , … , n . x_i\in R^n,\quad y_i = 1\: or \: -1, \quad i=1,2,3,\dots,n. xiRn,yi=1or1,i=1,2,3,,n.并且假设该数据集是线性可分的,那我们想能否在n维空间找到一个超平面 ω T x + b = 0 \omega^Tx + b = 0 ωTx+b=0,该平面将数据集划分为两个部分,一部分是 y i = 1 y_i = 1 yi=1,另一部分 y i = 1 y_i = 1 yi=1。如下图所示:
在这里插入图片描述

这个超平面将T中的数据分为两类,即有:
ω T x i + b > 0 , y i = 1 ; ω T x i + b < 0 , y i = − 1. \omega^Tx_i + b >0,\quad y_i = 1; \quad \omega^Tx_i + b < 0,\quad y_i = -1. ωTxi+b>0,yi=1;ωTxi+b<0,yi=1.
从上图我们也可以看出,如果把斜率 ω \omega ω和截距 b b b稍微移动一点,也是可以分离两类数据的,所以感知机模型并不唯一
同时我们也容易知道当一个特征向量 x i x_i xi被误分类时,就有 y i ( ω T x i + b ) < 0 y_i(\omega^Tx_i + b) < 0 yi(ωTxi+b)<0成立。

下面我们就可以给出感知机的定义:
在这里插入图片描述

\quad

2、感知机的学习策略与算法

上面我们已经得出感知机的一般形式,关键就在于如何找出模型参数 ω \omega ω b b b,这里我们要使用损失函数 L ( ω , b ) L(\omega,b) L(ω,b),我们希望找到使得损失函数 L ( ω , b ) L(\omega,b) L(ω,b)最小的 ω \omega ω b b b

所以现在的问题就是如何定义损失函数,以及如何找到参数 ω \omega ω b b b。我们希望得到的损失函数是关于参数 ω \omega ω b b b的连续可偏导函数,这样求函数的极值比较方便,常用的损失函数是函数间隔
L ( ω , b ) = − ∑ x i ∈ M y i ( ω T x i + b ) L(\omega,b) = -\sum_{x_i \in M} y_i(\omega^T x_i +b) L(ω,b)=xiMyi(ωTxi+b)其中M为误分点的集合。那么求参数问题就转化为求极小化损失函数问题,即 m i n ω , b   L ( ω , b ) min_{\omega,b}\: L(\omega,b) minω,bL(ω,b).

至于为什么不用几何间隔 :
− 1 ∣ ∣ ω ∣ ∣ ∑ x i ∈ M y i ( ω T x i + b ) -\cfrac {1}{||\omega||} \sum_{x_i \in M} y_i(\omega^T x_i +b) ω1xiMyi(ωTxi+b)其中 ∣ ∣ ω ∣ ∣ = ∑ i = 1 n   w i 2 ||\omega|| = \sqrt{\sum_{i=1}^n \: w_i^2} ω=i=1nwi2 L 2 L_2 L2范数。我想可以有以下理解:

首先要明确的一点是损失函数是以误分类驱动的,当无误分类点时,损失函数为0;其次对线性可分的数据集,一定是能找到分离超平面的,也就是说一定能找到 ω \omega ω b b b,使得损失函数为0,在这个意义下极小化损失函数这种表述并不准确(因为我们就是要损失函数为0), 1 ∣ ∣ ω ∣ ∣ \frac {1}{||\omega||} ω1并不影响我们的结果。再者 1 ∣ ∣ ω ∣ ∣ \frac {1}{||\omega||} ω1也不影响符号,所以我们完全可以不考虑它。

在确定了损失函数之后,感知机学习的策略就是在假设空间(即线性模型空间)中选取使损失函数最小的模型参数 ω \omega ω b b b。这就转化为最优化问题,而其求解的方法就是随机梯度下降法。

感知机学习算法如下:
输入:训练数据 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 ∈ R n , y i = 1   o r   − 1 , i = 1 , 2 , 3 , … , n . x_i\in R^n,\quad y_i = 1\: or \: -1, \quad i=1,2,3,\dots,n. xiRn,yi=1or1,i=1,2,3,,n. 学习率为 η ∈ ( 0 , 1 ] \eta \in (0,1] η(0,1].
输出: ω \omega ω b b b
感知机模型 f ( x ) = s i g n ( ω T x + b ) f(x) = sign(\omega^Tx +b) f(x)=sign(ωTx+b).

1、选取初试值 ω 0 , b 0 \omega_0,b_0 ω0,b0(一般都取0);
2、在训练集中选取一个数据 ( x i , y i ) (x_i,y_i) (xi,yi)
3、若数据 ( x i , y i ) (x_i,y_i) (xi,yi)是误分点,即 y i ( ω T x i + b ) ≤ 0 y_i(\omega^Tx_i + b) \le 0 yi(ωTxi+b)0
L ( ω , b ) = − y i ( ω T x i + b ) ▽ ω L ( ω , b ) ) = − y i x i ▽ b L ( ω , b ) ) = − y i \begin{aligned} L(\omega,b) = -y_i(\omega^Tx_i + b)\\ \bigtriangledown_\omega L(\omega,b)) = -y_ix_i\\ \bigtriangledown_b L(\omega,b)) = -y_i \end{aligned} L(ω,b)=yi(ωTxi+b)ωL(ω,b))=yixibL(ω,b))=yi \quad 我们根据负梯度方向更新参数:
ω ← ω + η y i x i b ← b + η y i       \begin{aligned} \omega \gets \omega + \eta y_i x_i\\ b \gets b+\eta y_i \:\:\:\:\: \end{aligned} ωω+ηyixibb+ηyi
4转至第二步,直到没有误分点为止。

\quad

3、感知机的收敛性

首先,对于线性可分的数据集,一定是有分离超平面的(这一点是由线性可分的数据集的定义保证的)。那么现在就有另一个问题,就是根据随机梯度下降法,一共需要多少次能找到,Novikoff定理告诉我们,经过有限次迭代就可以找到分离超平面和感知机模型,定理如下:
在这里插入图片描述

4、总结

1、感知机模型简单,易于实现;
2、局限性很大,需要是线性可分的数据集,对于非线性可分的情形不适用,比如无法解决异或问题;
3、感知机模型不唯一,依赖于初值的选择,也依赖于迭代过程中误分类点的选择顺序;
4、由于考虑的是函数间隔而不是几何间隔,有些情况下,数据点可能离分离超平面非常近,从某种程度上说这样的分类效果并不是特别好,这个问题会在支持向量机中得到很好的解决。

更多内容见公众号大数据与AI小白

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值