感知机模型简介

一、综述

感知器(英语:Perceptron)是Frank Rosenblatt在1957年就职于康奈尔航空实验室(Cornell Aeronautical Laboratory)时所发明的一种人工神经网络。它可以被视为一种最简单形式的前馈神经网络,是一种二元线性分类器。

Frank Rosenblatt给出了相应的感知机学习算法,常用的有感知机学习、最小二乘法和梯度下降法。譬如,感知机利用梯度下降法对损失函数进行极小化,求出可将训练数据进行线性划分的分离超平面,从而求得感知机模型。

在人工神经网络领域中,感知机也被指为单层的人工神经网络,以区别于较复杂的多层感知机(Multilayer Perceptron)。作为一种线性分类器,(单层)感知机可说是最简单的前向人工神经网络形式。尽管结构简单,感知机能够学习并解决相当复杂的问题。感知机主要的本质缺陷是它不能处理线性不可分问题。

在神经网络、支持向量机等算法盛行的当下,感知机模型应用得并不多,但其却是神经网络和支持向量机的基础,所以还是很有必要学习一下的,本文接下来的内容将从感知机数学描述、损失函数、两个方面详细介绍感知机。

二、模型介绍

1.数学定义

对于给定的训练集 D = { ( x i , y i ) } i = 1 m , x i ∈ X ⊆ R n D=\{(x_{i},y_{i})\}_{i=1}^{m},x_{i}\in X\subseteq R^{n} D={(xi,yi)}i=1m,xiXRn表示训练样本的特征向量, y i ∈ Y = { + 1 , − 1 } y_{i}\in Y=\{+1,-1\} yiY={+1,1}表示样本类别,它们之间有如下关系:

y = f ( x ) = s i g n ( w x + b ) y=f(x)=sign(wx+b) y=f(x)=sign(wx+b)

这称为感知机。 w ∈ R n w\in R^{n} wRn称为感知机的权值系数或权值向量, b ∈ R b\in R bR称为偏置,sign是符号函数:

s i g n = { + 1 , x ≥ 0 − 1 , x < 0 sign=\left\{ \begin{array}{lr} +1,x\ge0\\ - 1,x<0 \end{array} \right. sign={+1,x01,x<0

通过上式不难看出,感知机最终既是对 w , b w,b w,b的求解。从几何上来看,空间即被 w x + b = 0 wx+b=0 wx+b=0分成了两个区域,因此它可以做到二元线性分类。大家可以以二维空间为例来想象一下,在确定 w , b w,b w,b之后,直线 w x + b = 0 wx+b=0 wx+b=0随之确定,当一个样本 ( x 0 , y 0 ) (x_{0},y_{0}) (x0y0)位于直线上方时,此时 s i g n ( w x + b ) sign(wx+b) sign(wx+b)容易看出为 + 1 +1 +1,反之,为 − 1 -1 1,由此它便做到了分类。此外,这里要注意这条直线并不唯一,即 w , b w,b w,b并非唯一。

2.损失函数

为了求解参数 w w w b b b,确定最终的分割超平面, 就需要定义一个目标函数,或称为损失函数,通过最小化这个函数来达到目的。在感知机模型中,以误分类的样本对象与分割超平面间的距离之和最为损失函数。

由点到平面距离公式,可推出误分类点 x i x_{i} xi到超平面的距离为:

d = ∣ w x i + b ∣ ∣ ∣ w ∣ ∣ d=\frac{|wx_{i}+b|}{||w||} d=wwxi+b

其中, ∣ ∣ w ∣ ∣ ||w|| w w w w L 2 L_{2} L2范数。由于点 x i x_{i} xi是误分类点,故 y i y_{i} yi w x i + b wx_{i}+b wxi+b的值正负相反,且 y i y_{i} yi + 1 +1 +1 − 1 -1 1,因此

− y i ∗ ( w x i + b ) > 0 -y_{i}*(wx_{i}+b)>0 yi(wxi+b)>0

所以

− y i ∗ ( w x i + b ) = ∣ w x i + b ∣ -y_{i}*(wx_{i}+b)=|wx_{i}+b| yi(wxi+b)=wxi+b

于是, ( x i , y i ) (x_{i},y_{i}) (xi,yi)到超平面的距离可化为:

d = − y i ∗ ( w x i + b ) ∣ ∣ w ∣ ∣ d=\frac{-y_{i}*(wx_{i}+b)}{||w||} d=wyi(wxi+b)

由于在求取误差点到平面的距离时,||w||是个定值,因此在设计损失函数时,可将其忽略,毕竟这里需要的不是真正的求距离。
这是我们就确定了损失函数为:

L ( w , b ) = ∑ x i ∈ M ( − y i ∗ ( w x i + b ) ) L(w,b)=\sum_{xi\in M}(-y_{i}*(wx_{i}+b)) L(w,b)=xiM(yi(wxi+b))

三、优化方法

前面讨论了损失函数的推导过程,下面介绍对其优化方法。对于感知机模型,有两种优化方式原始形式和对偶形式,下面主要介绍原始形式。原始形式采用的是梯度下降法来求解,这里先说说什么是梯度下降法。

一个直观的解释是比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。在这里插入图片描述
从上述描述可看出,采用梯度下降法并不能确保我们找到全局最优解,我们也可能找到的是局部最优解。

梯度下降算法大体步骤:

  • 确定当前位置的损失函数梯度,对于函数 f ( a 1 , a 2 , . . . , a n ) f(a_{1},a_{2},...,a_{n}) f(a1,a2,...,an) a i a_{i} ai的梯度表达式如下:
    ∂ f ( a 1 , a 2 , . . . , a n ) ∂ a i \frac{\partial f(a_{1},a_{2},...,a_{n})}{\partial a_{i}} aif(a1,a2,...,an)
  • 用步长 l l l乘以损失函数的梯度得到当前位置下降的距离,即 l ∗ ∂ f ( a 1 , a 2 , . . . , a n ) ∂ a i l*\frac{\partial f(a_{1},a_{2},...,a_{n})}{\partial a_{i}} laif(a1,a2,...,an),以对应与前面讲到的登山中的某一步
  • 确定是否所有的 a i a_{i} ai,梯度下降的距离都小于 ε \varepsilon ε,如果小于 ε \varepsilon ε则算法停止,当前的 a 1 , a 2 , . . . , a n a_{1},a_{2},...,a_{n} a1,a2,...,an即为所求的结果否则进入下一步
  • 更新所有的 a a a,对于 a i a_{i} ai,其更新表达式如下:
    a i = a i − l ∗ ∂ f ( a 1 , a 2 , . . . , a n ) ∂ a i a_{i}=a_{i}-l*\frac{\partial f(a_{1},a_{2},...,a_{n})}{\partial a_{i}} ai=ailaif(a1,a2,...,an)
    更新完毕转入步骤一。

这里回到正题,对损失函数 L ( w , b ) = ∑ x i ∈ M ( − y i ∗ ( w x i + b ) ) L(w,b)=\sum_{xi\in M}(-y_{i}*(wx_{i}+b)) L(w,b)=xiM(yi(wxi+b))求偏导:
∂ L ( w , b ) ∂ w = − ∑ x i ∈ M y i ∗ x i \frac{\partial L(w,b)}{\partial w}=-\sum_{xi\in M}y_{i}*x_{i} wL(w,b)=xiMyixi
∂ L ( w , b ) ∂ b = − ∑ x i ∈ M y i \frac{\partial L(w,b)}{\partial b}=-\sum_{xi\in M}y_{i} bL(w,b)=xiMyi
据此可知 w w w的梯度下降迭代公式为:

w = w + l ∗ ∑ x i ∈ M y i ∗ x i w=w+l*\sum_{xi\in M}y_{i}*x_{i} w=w+lxiMyixi

偏置 b b b的梯度下降 迭代公式为:

b = b + l ∗ ∑ x i ∈ M y i b=b+l*\sum_{xi\in M}y_{i} b=b+lxiMyi

感知机模型中,一般采用随机梯度下降法进行优化,每次使用一个误分类样本点进行梯度更新。假设 ( x i , y i ) (x_{i},y_{i}) (xi,yi) M M M中一个误分类点,进行梯度更新:

w = w + l ∗ y i ∗ x i w=w+l*y_{i}*x_{i} w=w+lyixi

b = b + l ∗ y i b=b+l*y_{i} b=b+lyi

整体步骤如下:

  • 初始化 w 0 , b 0 ; w_{0},b_{0}; w0,b0;
  • D D D中选取任意点 ( x i , y i ) ; (x_{i},y_{i}); (xi,yi);
  • 通过 y i ∗ ( w ∗ x i + b ) y_{i}*(w*x_{i}+b) yi(wxi+b)的值判断是否为误分类点,如果是,进行梯度更新
  • 更新参数,返回至第二步直至准确率满足要求。

对偶形式是原始形式在执行效率上的优化,在这里便不作介绍。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值