感知机模型

1 模型的基本描述

感知机模型是二类分类的线性分类模型,是神经网络和支持向量机的基础,有原始形式和对偶形式两种,最终目的是求出将训练数据进行线性划分的分离超平面。它的输出只有正类+1和负类-1两种类别,用的是基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,从而求得感知机模型:
f ( x ) = s i g n ( w • x + b ) = { + 1 , w • x + b ⩾ 0 − 1 , w • x + b < 0 f(x)=sign(w•x+b)=\left\{ \begin{aligned} +1 & , & w•x+b\geqslant0 \\ -1 & , & w•x+b<0 \end{aligned} \right. f(x)=sign(wx+b)={+11,,wx+b0wx+b<0
w•x+b=0对应着一个超平面S,S把所有的样本分成正负两类,求感知机模型相当于求超平面S的参数w和b。
其中,b为超平面的截距,w为超平面的法向量,维度与x的维度保持一致,比如x={x(1),x(2),x(3)},那么w={w1,w2,w3}。w•x不是两个数值简单相乘,而是两个向量的内积,最终函数 f(x) = w•x+b = w1x(1)+w2x(2)+w3x(3)+b。

2 感知机的学习策略

  1. 确定一个学习策略,定义损失函数并极小化损失函数,损失函数通常是误分类点(就是分错的点)到超平面S的总距离
  2. 推导感知机的损失函数:
    首先,我们学过初中数学,点(x0,y0,z0)到超平面Ax+By+Cz+D=0的距离为:
    ∣ A x 0 + B y 0 + C z 0 + D ∣ A 2 + B 2 + C 2 \frac{|Ax_0+By_0+Cz_0+D|}{\sqrt{A^2+B^2+C^2}} A2+B2+C2 Ax0+By0+Cz0+D
    这里面的A,B,C相当于w1,w2,w3,x0,y0,z0相当于x(1),x(2),x(3),D相当于b,那么样本点到超平面S的距离为:
    ∣ w 1 x ( 1 ) + w 2 x ( 2 ) + w 3 x ( 3 ) + b ∣ w 1 2 + w 2 2 + w 3 2 \frac{|w_1x^{(1)}+w_2x^{(2)}+w_3x^{(3)}+b|}{\sqrt{w_1^2+w_2^2+w_3^2}} w12+w22+w32 w1x(1)+w2x(2)+w3x(3)+b
    以上是三维空间的计算,推广到n维,点(x(1),x(2),…,x(n))到超平面S = w1x(1)+w2x(2)+,…,+wnx(n)+b的距离为:
    ∣ w 1 x ( 1 ) + w 2 x ( 2 ) + . . . + w n x ( n ) + b ∣ w 1 2 + w 2 2 + . . . + w n 2 \frac{|w_1x^{(1)}+w_2x^{(2)}+...+w_nx^{(n)}+b|}{\sqrt{w_1^2+w_2^2+...+w_n^2}} w12+w22+...+wn2 w1x(1)+w2x(2)+...+wnx(n)+b
    此处科普一下, w 1 2 + w 2 2 + . . . + w n 2 \sqrt{w_1^2+w_2^2+...+w_n^2} w12+w22+...+wn2 就是法向量w的模,一般简记为w的L2范数||w||。
    为了计算方便,我们还需要将分子中的绝对值去掉:
    当一个正类样本xi分对成正类时,w•xi+b>0且yi=+1 > 0;
    当一个负类样本xi分对成负类时,w•xi+b<0且yi=-1 < 0;
    当一个正类样本xi分错成负类时,w•xi+b>0但yi=-1 < 0;
    当一个负类样本xi分错成正类时,w•xi+b<0但yi=+1 > 0;
    感知机所求的损失函数只计算分错的样本们到超平面的总距离,并追求距离为0或接近0的情况,所以这里我们只研究后两种分错的情况,可以很容易的看出来,对于后两种情况,-yi(w•xi+b) > 0成立,至此,计算样本到超平面的距离便不用再考虑绝对值。
    将所有误分类点到超平面S的距离加起来,便得到总距离:
    − ∑ x i ∈ M y i ( w • x i + b ) ∣ ∣ w ∣ ∣ -\frac{\sum_{x_i\in{M}}y_i(w•x_i+b)}{||w||} wxiMyi(wxi+b)
    其中M是误分类点的集合。
    我们进一步发现,在每个样本的计算过程中,分母都是相同的二范式||w||,且与样本无关,不影响最终结果,因此为了降低计算量,去掉分母,得到最终的损失函数计算公式:
    L ( w , b ) = − ∑ x i ∈ M y i ( w • x i + b ) ⩾ 0 L(w,b) = -{\sum_{x_i\in{M}}y_i(w•x_i+b)} \geqslant0 L(w,b)=xiMyi(wxi+b)0
    误分类点越少,损失函数值越小,说明选择的超平面越好。
    当没有误分类点时,损失函数为0,当有误分类点时,损失函数为关于w和b的线性函数,故损失函数是连续可导的。而连续可导这一性质就为用梯度下降法求解参数w,b提供了前提条件。

    还是不懂的话,可以看一下吴恩达老师讲解的梯度下降法
  3. 最终学习策略为,从假设空间中选择使损失函数最小的参数w,b,得到参数w和b对应的超平面S=sign(w•x+b),使S分类后的误分类点个数为0或接近0。

3 感知机学习算法——梯度下降法

感知机算法的原始形式

  1. 输入训练数据集 T = {(x1,y1),(x2,y2),…,(xN,yN)},学习率 η ( 0 < η ≤ 1 ) \eta(0<\eta\le1) η(0<η1)(决定了下山时一步跨多大,太大可能会越过最低点,太小可能会循环次数过多,所以选择一个合适的学习率很重要)。
  2. 选取初值w0和b0
  3. 从训练集中选取样本点(xi,yi),计算该点的损失函数值 yi(w0•xi+b0)。
  4. 如果yi(w0•xi+b0) > 0,说明该点是正确分类,不需要更新w和b;
    如果yi(w0•xi+b0) < 0,说明该点是误分类点,根据以下公式更新w和b:
    w = w + η y i x i b = b + η y i w = w+\eta y_ix_i \\ b = b + \eta y_i w=w+ηyixib=b+ηyi
    此处大部分人都会对公式中的yixi和yi不解,大学高数学的求偏导还记得吧,这两部分其实就是损失函数L(w,b)分别对w和b求偏导得到的结果。每更新一次,都相当于向最值又靠近了一步。如果还是不解的话,建议搭配吴恩达老师的学习视频食用。
    传送门:https://www.bilibili.com/video/BV164411b7dx?p=9
  5. 重复步骤3,4,直到训练集中没有误分类点。
  6. 输出参数w,b 和感知机模型 f ( x ) = s i g n ( w • x + b ) f(x) = sign(w•x+b) f(x)=sign(wx+b)

经过定理证明(证明过程略),有限次搜索后一定可以找到能将训练数据完全正确分开的超平面。同时需要注意,感知机学习算法的解不一定唯一,其解依赖于初值的选择,也依赖于误分类点的选择顺序。
对超平面加上约束条件后,会得到唯一的超平面,也就是支持向量机SVM。
传送门:SVM扩展知识

感知机算法的对偶形式

  1. 输入训练数据集 T = {(x1,y1),(x2,y2),…,(xN,yN)},学习率 η ( 0 < η ≤ 1 ) \eta(0<\eta\le1) η(0<η1)
  2. 选取初值 α \alpha α0 = 0 和 b0 = 0。
  3. 从训练集中选取样本点(xi,yi),计算该点的损失函数值 y i ( ∑ j = 1 N α j y j x j • x + b ) y_i({\sum_{j=1}^{N}\alpha _jy_jx_j•x+b}) yi(j=1Nαjyjxjx+b)
  4. 如果 y i ( ∑ j = 1 N α j y j x j • x + b ) y_i({\sum_{j=1}^{N}\alpha _jy_jx_j•x+b}) yi(j=1Nαjyjxjx+b) > 0,说明该点是正确分类,不需要更新 α \alpha α和b;
    如果 y i ( ∑ j = 1 N α j y j x j • x + b ) y_i({\sum_{j=1}^{N}\alpha _jy_jx_j•x+b}) yi(j=1Nαjyjxjx+b) < 0,说明该点是误分类点,根据以下公式更新 α \alpha α和b:
    α i = α i + η b = b + η y i \alpha_i = \alpha_i+\eta \\ b = b + \eta y_i αi=αi+ηb=b+ηyi
    这里的 α i = n i η , n i \alpha_i = n_i\eta,n_i αi=niη,ni表示点(xi,yi)被误分类的次数, η \eta η=1时, α i \alpha_i αi表示第i个实例点由于误分而进行更新的次数。更新次数较多的实例,对学习影响结果较大,距离超平面较近,也就较难正确分类,容易反复横跳。
  5. 重复步骤3,4,直到训练集中没有误分类点。
  6. 输出参数 α \alpha α,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•x+b}) f(x)=sign(j=1Nαjyjxjx+b)

在对偶形式中,实例仅以内积的形式出现,为了避免重复计算,可以预先将训练集中实例间的内积计算出来,并存储到Gram矩阵中。
G = [ x i • x j ] N ∗ N G = [x_i•x_j]_{N*N} G=[xixj]NN

扩展学习方法:口袋算法、表决感知机、带边缘感知机等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值