[Deep Learning] 感知器(perceptron)

感知器(Perceptron)


感知器的概念

感知器是人工神经网络中的一种典型结构,它的主要的特点是结构简单,对所能解决的问题存在着收敛算法,并能从数学上严格证明,从而对神经网络研究起了重要的推动作用。

它可以被视为一种最简单形式的前馈式人工神经网络,是一种二元线性分类器

那么什么是二元线性分类器呢?

首先要先理解什么是线性分类器——在机器学习领域,分类的目标是指将具有相似特征的对象聚集。而一个线性分类器则透过特征的线性组合来做出分类决定,以达到此种目的。对象的特征通常被描述为特征值,而在向量中则描述为特征向量。
在这里插入图片描述
对于一个二元分类问题——可以设想成是将一个线性分类利用超平面划分高维空间的情况:在超平面一侧的所有点都被分类成“是”,另一侧则分成“否”。
在这里插入图片描述

感知器的作用

感知器是二类分类的线性分类模型,它的思想很简单,在一个二维空间中,就是寻找一条直线将红点和蓝点分开(图3),类比到高维空间中,感知器尝试寻找一个超平面,将所有二元类别分开(图4)。
在这里插入图片描述

图3 二维空间

在这里插入图片描述

图4 三维空间


注意:无论是在二维空间中寻找线、三维空间中寻找平面还是高维空间中寻找超平面,这里所说的空间是指特征空间

如果我们找不到一条直线的话怎么办?找不到的话那就意味着类别线性不可分(图5),也就意味着感知器模型不适合该类数据的分类。使用感知器一个最大的前提,就是数据需要是线性可分的
在这里插入图片描述

图5 不可分数据

感知器的模型

在这里插入图片描述
如果我们有n个样本,每个样本有m维空间和一个二元输出类别:
( ( x 1 1 , x 2 1 , . . . , x m 1 1 , x m 1 , y 1 ) , ( x 1 2 , x 2 2 , . . . , x m 1 2 , x m 2 , y 2 ) , . . . , ( x 1 n , x 2 n , . . . , x m 1 n , x m n , y n ) ((x_1^1,x_2^1,...,x_{m-1}^1,x_m^1,y_1),(x_1^2,x_2^2,...,x_{m-1}^2,x_m^2,y_2),...,(x_1^n,x_2^n,...,x_{m-1}^n,x_m^n,y_n)
感知器的目标是找到一个超平面
ω 1 x 1 + ω 2 x 2 + . . . + ω m x m + b = 0 \omega_1x_1+\omega_2x_2+...+\omega_mx_m+b=0
让其中一个类别的样本满足 ω 1 x 1 + ω 2 x 2 + . . . + ω m x m + b > 0 \omega_1x_1+\omega_2x_2+...+\omega_mx_m+b>0 ,而另一类样本满足 ω 1 x 1 + ω 2 x 2 + . . . + ω m x m + b < 0 \omega_1x_1+\omega_2x_2+...+\omega_mx_m+b<0 ,从而实现样本线性可分。但这样的超平面不是唯一的,感知器模型采取不同的初始值 ( ω 0 , b 0 ) (\vec{\omega_0},b_0) 解可能会不同。

我们用向量方式对上式进行表达: ω x + b = 0 \vec{\omega}\cdot\vec{x}+b=0 ,由此感知器模型可以定义为:
y = f ( ω x + b ) y=f(\vec{\omega}\cdot\vec{x}+b)

注意:感知器的激活函数可以有很多选择,这里我们选择阶跃函数 f f 来作为激活函数:
f ( z ) = { 1            z > 0 0     o t h e r w i s e f(z) = \left\{\begin{aligned} 1 \ \ \ \ \ \ \ \ \ \ z>0 \\ 0 \ \ \ otherwise \end{aligned}\right.

例如:将一个新的样本 x n + 1 = ( x 1 n + 1 , x 2 n + 1 , . . . , x m 1 n + 1 , x m n + 1 ) \vec{x}^{n+1}=(x_1^{n+1},x_2^{n+1},...,x_{m-1}^{n+1},x_m^{n+1}) 代入训练好的模型 ω x + b \vec{\omega}\cdot\vec{x}+b ,当 ω x n + 1 + b > 0 \vec{\omega}\cdot\vec{x}^{n+1}+b>0 时, x n + 1 \vec{x}^{n+1} 被分为1类,当 ω x n + 1 + b 0 \vec{\omega}\cdot\vec{x}^{n+1}+b\leq0 时, x n + 1 \vec{x}^{n+1} 被分为0类。

感知器的训练过程

找到一个合适函数的过程就是感知器的训练过程,对下面具体的公式来说,就是找到一组合适的权重和偏置项,使得样本的输出与预期的结果接近,最好是完全一样。

一般情况下,需要对加权求和做一个偏置运算,这样训练感知器的时候,更加方便。感知器本质是一个线性函数,线性函数就是一条直线(不是准确说法,只是方便大家理解,二维空间下是直线,三维空间下是平面,高维空间下是超平面),所谓训练感知器就是调整直线,调整直线就是调整直线的斜率和截距。其中最后一项,作为加权求和的偏置项。
y = f a c t i v i t y ( ω 1 x 1 + ω 2 x 2 + . . . + ω m x m + b ) y = f_{activity}(\omega_1x_1+\omega_2x_2+...+\omega_mx_m+b)

感知器训练过程如下:

  • 随机初始化一组权重 ω \vec{\omega} 和偏置 b b
  • 每次从训练数据中取出一个样本的输入向量 x \vec{x} ,使用感知器模型计算其输出 y ^ \hat{y}
  • 根据计算输出 y ^ \hat{y} ,与样本实际值y,通过下面的感知器规则计算 ω \vec{\omega} 的调整值 Δ ω \Delta\omega 以及b的调整值 Δ b \Delta b
  • 根据上一步计算出来的调整值 Δ ω \Delta\omega Δ b \Delta b ,调整 ω \vec{\omega} 和b
  • 继续第二步,经过多轮迭代(即全部的训练数据被反复处理多轮),就可以训练出感知器的权重和偏置

ω i ω i + Δ ω i \omega_i \leftarrow\omega_i+\Delta\omega_i
b b + Δ b b \leftarrow b+\Delta b
其中:
Δ ω i = η ( y ^ y ) x i \Delta\omega_i = \eta(\hat{y}-y)x_i
Δ b = η ( y ^ y ) \Delta b = \eta (\hat{y}-y)
ω i \omega_i 是与输入 x i x_i 对应的权重项,b是偏置项。y是训练样本的实际值,一般称为label。而 y ^ \hat{y} 是感知器的输出值。 η \eta 是一个称为学习速率的常数,其作用是控制每一步调整权的幅度。

以上感知器规则是由梯度下降法得来的,对于撸代码来说,知道这套规则就可以了,如果想知道具体的数学推导过程,可以自行了解一下,我也会在之后的文章中写关于梯度下降相关的内容。

若有错误,欢迎大家留言指正!谢谢!

发布了1 篇原创文章 · 获赞 1 · 访问量 220

猜你喜欢

转载自blog.csdn.net/Oh_MyBug/article/details/104241000
今日推荐