Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >感知机详解

感知机详解

作者头像
昱良
发布于 2018-04-08 03:13:52
发布于 2018-04-08 03:13:52
1.5K0
举报

1.感知机是什么?

一种类型的ANN系统是以被称为感知器(perceptron)的单元为基础的,如图1所示。感知器以一个实数值向量作为输入,计算这些输入的线性组合,然后如果结果大于某个阈值就输出1,否则输出-1。更精确地,如果输入为x1到xn,那么感知器计算的输出为:

其中每一个wi是一个实数常量,或叫做权值(weight),用来决定输入xi对感知器输出的贡献率。其中,常量(-w0)是一个阈值,它是为了使感知器输出1,输入的加权和必须超过的阈值。

图1 感知机

为了简化表示,假想有一个附加的常量输入x0=1,那么就可以把上边的不等式写为

,或以向量形式写为

。为了简短起见,有时会把感知器函数写为:

其中,

学习一个感知器意味着选择权w0, …, wn的值。所以感知器学习要考虑的候选假设空间H就是所有可能的实数值权向量的集合。其中,

我们可以把感知器看作是n维实例空间(即点空间)中的超平面决策面。对于超平面一侧的实例,感知器输出1,对于另一侧的实例输出-1。这个决策超平面方程是

。当然,某些正反样例集合不可能被任一超平面分割。那些可以被分割的称为线性可分(linearly separable)样例集合。

单独的感知器可以用来表示很多布尔函数。例如,假定用1(真)和-1(假)表示布尔值,那么使用一个两输入的感知器来实现与函数(AND)的一种方法是设置权w0= -0.8并且w1=w2=0.5。如果用这个感知器来表示或函数(OR),那么只要改变它的阈值w0=-0.3。事实上,AND和OR可被看作m-of-n函数的特例:也就是要使函数输出为真,那么感知器的n个输入中至少m个必须为真。OR函数对应于m=1,AND函数对应于m=n.。任意m-of-n函数可以很容易地用感知器表示,只要设置所有输入的权为同样的值(如0.5),然后据此恰当地设置阈值。

感知器可以表示所有的原始布尔函数(primitive boolean function):与、或、与非(NAND)和或非(NOR)。然而不幸的是,一些布尔函数无法用单一的感知器表示,例如异或函数(XOR),它当且仅当x1≠x2时输出为1。

感知器表示与、或、与非、或非的能力是很重要的,因为所有的布尔函数都可表示为基于这些原始函数的互连单元的某个网络。事实上,仅用两层深度的感知器网络就可以表示所有的布尔函数,在这些网络中输入被送到多个单元,这些单元的输出被输入到第二级,也是最后一级。

2.感知器法则你还记得吗?

虽然我们的目的是学习由多个单元互连的网络,但还是从如何学习单个感知器的权值开始。准确地说,这里的学习任务是决定一个权向量,它可以使感知器对于给定的训练样例输出正确的1或-1。

已知有几种解决这个学习任务的算法。这里我们考虑两种:感知器法则delta法则(delta rule)。这两种算法保证收敛到可接受的假设,在不同的条件下收敛到的假设略有不同。这两种方法对于ANN是很重要的,因为它们提供了学习多个单元构成的网络的基础。

为得到可接受的权向量,一种办法是从随机的权值开始,然后反复地应用这个感知器到每个训练样例,只要它误分类样例就修改感知器的权值。重复这个过程,直到感知器正确分类所有的训练样例。每一步根据感知器训练法则(perceptron training rule)来修改权值,也就是根据下面的法则修改与输入xi对应的权wi:

其中,

这里t是当前训练样例的目标输出,o是感知器的输出,η是一个正的常数称为学习速率(learning rate)。学习速率的作用是缓和每一步调整权的程度。它通常被设为一个小的数值(例如0.1),而且有时会使其随着权调整次数的增加而衰减。

3.梯度下降与delta法则更有用~

尽管当训练样例线性可分时,感知器法则可以成功地找到一个权向量,但如果样例不是线性可分时它将不能收敛。因此,人们设计了另一个训练法则来克服这个不足,称为delta法则(delta rule)。如果训练样本不是线性可分的,那么delta法则会收敛到目标概念的最佳近似。(how to converge?)

delta法则的关键思想是使用梯度下降(gradient descent)来搜索可能权向量的假设空间,以找到最佳拟合训练样例的权向量。这个法则很重要,因为它提供了反向传播算法的基础,而反向传播算法能够学习多个单元的互连网络。这个法则重要性的另一个原因是,对于包含多种不同类型的连续参数化假设的假设空间,梯度下降是必须遍历这样的假设空间的所有学习算法的基础。

最好把delta训练法则理解为训练一个无阈值的感知器,也就是一个线性单元(linear unit),它的输出o如下:

于是,一个线性单元对应于感知器的第一阶段,不带有阈值。

为了推导线性单元的权值学习法则,先指定一个度量标准来衡量假设(权向量)相对于训练样例的训练误差(training error)。尽管有很多办法定义这个误差,一个常用的特别方便的度量标准为:

其中D是训练样例集合,td是训练样例d的目标输出,od是线性单元对训练样例d的输出。在这个定义中E(w)是目标输出td和线性单元输出od的差异的平方在所有的训练样例上求和后再除以2。这里我们把E定为w 的函数,是因为线性单元的输出o依赖于这个权向量。

梯度下降搜索确定一个使E最小化的权向量的方法是从一个任意的初始权向量开始,然后以很小的步伐反复修改这个向量。在每一步,按照沿误差曲面产生最陡峭下降的方向修改权向量(如图2)。继续这个过程直到到达全局的最小误差。

图2 不同假设的误差曲面

(对于有两个权值的线性单元,假设空间H就是w0,w1平面。纵轴表示与固定的训练样例集合相应的权向量假设的误差。箭头显示了该点梯度的相反方向,指出了在w0,w1平面中沿误差曲面最陡峭下降的方向。)

梯度下降的推导:

怎样能计算出沿误差曲面最陡峭下降的方向呢?可以通过计算E相对向量的每个分量的导数来得到这个方向。这个向量导数被称为E对于w的梯度(gradient),记作∇E(w)。

注意∇E(w)本身是一个向量,它的成员是E对每个wi的偏导数。当梯度被解释为权空间的一个向量时,它确定了使E最陡峭上升的方向。所以这个向量的反方向给出了最陡峭下降的方向。例如,图2中的箭头显示了w0,w1平面的一个特定点的负梯度-∇E(w)。

既然梯度确定了E最陡峭上升的方向,那么梯度下降的训练法则是:

其中,

这里η是一个正的常数叫做学习速率,它决定梯度下降搜索中的步长。其中的负号是因为我们想要让权向量向E下降的方向移动。这个训练法则也可以写成它的分量形式:

其中,

需要一个高效的方法在每一步计算这个梯度,幸运的是,计算过程并不困难。可以从上面公式中计算E的微分,从而得到组成这个梯度向量的分量

。过程如下:

其中xid表示训练样例d的一个输入分量xi。现在有了一个等式,能够用线性单元的输入xid、输出od、以及训练样例的目标值td表示

。上式辨识得到的权值更新法则。

概而言之,训练线性单元的梯度下降算法如下:选取一个初始的随机权向量;应用线性单元到所有的训练样例,然后根据上式计算每个权值的Δwi;通过加上Δwi来更新每个权值,然后重复这个过程。这个算法被归纳在表1中。因为误差曲面仅包含一个全局的最小值,所以无论训练样本是否线性可分,这个算法会收敛到具有最小误差的权向量,条件是必须使用一个足够小的学习速率η。如果η太大,梯度下降搜索就有越过误差曲面最小值的危险,而不是停留在那一点。因此,对此算法的一种常用的改进是随着梯度下降步数的增加逐渐减小η的值。

表1 训练线性单元的梯度下降算法

参考文献:《机器学习》,《machine learning》等

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习算法与Python学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度学习之线性单元(梯度下降算法)(二)
线性的概念: "线性"="齐次性"+"可加性", "齐次性"是指类似于: f(ax)=af(x), "可加性"是指类似于: f(x+y)=f(x)+f(y),
李小白是一只喵
2020/04/24
7080
深度学习-从感知器到LSTM(目的是处理序列问题)
感知器——基础的全连接网络——线性单元到线性模型——梯度下降——神经网络和反向传播算法——循环神经网络——LSTM——LSTM-CRF
机器学习AI算法工程
2019/10/28
6530
深度学习-从感知器到LSTM(目的是处理序列问题)
深度学习概述
目前,关于神经网络的定义尚不统一,按美国神经网络学家Hecht Nielsen 的观点,神经网络的定义是:“神经网络是由多个非常简单的处理单元彼此按某种方式相互连接而形成的计算机系统,该系统靠其状态对外部输入信息的动态响应来处理信息”。
Ai学习的老章
2021/04/20
1K0
深度学习概述
深度学习与神经网络:单层感知机
今天这个文章让我们一起来学习下感知机: 一个传统的单层感知机如上图所示,其实理解起来很简单,我们可以直接理解为输入节点接受信号之后直接传输到输出节点,然后得到结果y. 就和上图一样,我们给出了权向量W
云时之间
2018/04/10
1.4K0
深度学习与神经网络:单层感知机
感知机--模型与策略
看到模型和策略,应该很快联想到了李航的《统计学习方法》,统计学习方法的三要素定义为:模型、策略、算法。 感知机 感知机是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别(取+1和-1
MachineLP
2018/01/09
6090
感知机--模型与策略
机器学习线性分类算法:感知器原理
感知器PLA是一种最简单,最基本的线性分类算法(二分类)。其前提是数据本身是线性可分的。 模型可以定义为 ,sign函数是阶跃函数,阈值决定取0或1。 模型选择的策略,利用经验损失函数衡量算法性能,由
机器学习AI算法工程
2018/03/14
1.7K0
机器学习线性分类算法:感知器原理
零基础入门深度学习 | 第三章:神经网络和反向传播算法
无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习这个超热的技术,会不会感觉马上就out了? 现在救命稻草来了,《零基础入门深度学习》系列文章旨在讲帮助爱编程的你从零基础达到入门级水平。零基础意味着你不需要太多的数学知识,只要会写程序就行了,没错,这是专门为程序员写的文章。虽然文中会有很多公式你也许看不懂,但同时也会有更多的代码,程序员的你一定能看懂的(我周围是一群狂热的Clean Code程序员,所以我写的代码也不会
用户1332428
2018/03/09
3.8K0
零基础入门深度学习 | 第三章:神经网络和反向传播算法
多层网络与反向传播算法详解
本篇文章是感知机详解的继续,看本篇文章前最好先看上一篇文章或者有响应的神经网络学习与应用基础。 图1 多层前馈网络的决策区域 这里显示的网络是用来训练识别10种出现在“h_d”(例如“had”,“hi
昱良
2018/04/08
1.2K0
多层网络与反向传播算法详解
统计学习方法之感知机1.感知机模型2.学习策略3.学习算法4.源代码
1.感知机模型 在机器学习中,感知机(perceptron)是二分类的线性分类模型,属于监督学习算法。输入为实例的特征向量,输出为实例的类别(取+1和-1)。感知机对应于输入空间中将实例划分为两类的分离超平面。感知机旨在求出该超平面,为求得超平面导入了基于误分类的损失函数,利用梯度下降法 对损失函数进行最优化(最优化)。感知机的学习算法具有简单而易于实现的优点,分为原始形式和对偶形式。感知机预测是用学习得到的感知机模型对新的实例进行预测的,因此属于判别模型。感知机由Rosenblatt于1957年提出的
JasonhavenDai
2018/04/11
1K0
统计学习方法之感知机1.感知机模型2.学习策略3.学习算法4.源代码
入门 | 从感知机到深度神经网络,带你入坑深度学习
选自Medium 作者:Adi Chris 机器之心编译 参与:朱乾树、刘晓坤 机器学习工程师 Adi Chris 最近学习完吴恩达在 Coursera 上的最新课程后,决定写篇博客来记录下自己对这一领域的理解。他建议通过这种方式有效地深入理解一个学习主题。除此之外,也希望这篇博客可以帮助到那些有意入坑的朋友。 言归正传。在我正式介绍深度学习是什么东西之前,我想先引入一个简单的例子,借以帮助我们理解为什么需要深度神经网络。 同时,本文附有使用深度神经网络模型求解异或(XOR)问题的代码,发布在 GitHu
机器之心
2018/05/10
6600
零基础入门深度学习 | 第二章:线性单元和梯度下降
无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就out了? 现在救命稻草来了,《零基础入门深度学习》系列文章旨在讲帮助爱编程的你从零基础达到入门级水平。零基础意味着你不需要太多的数学知识,只要会写程序就行了,没错,这是专门为程序员写的文章。虽然文中会有很多公式你也许看不懂,但同时也会有更多的代码,程序员的你一定能看懂的(我周围是一群狂热的Clean Cod
用户1332428
2018/03/09
3.2K0
零基础入门深度学习 | 第二章:线性单元和梯度下降
感知机(Perceptron)是怎么实现“知错能改”的?
感知机(perceptron)是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1二值。感知机对应于输入空间中将实例划分为正负两类的分离超平面,属于判别模型。感知机学习旨在求出将训练数据进行线性划分的分离超平面,为此导入了基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。感知机学习算法具有简单而易于实现的优点,分为原始形式和对偶形式。感知机是神经网络与支持向量机的基础。 划重点:简单说就是个二分类的线性分类模型,感知机学习,就是通过训练数据集,求得感知机模
AI研习社
2018/03/28
1.2K0
感知机(Perceptron)是怎么实现“知错能改”的?
机器学习(7)之感知机python实现
关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 感知器PLA是一种最简单,最基本的线性分类算法(二分类)。其前提是数据本身是
昱良
2018/04/04
1.6K0
机器学习(7)之感知机python实现
入门机器学习(二)-------线性单元和梯度下降及其代码实现(代码实现)
通过上一篇文章,我们学会了一个简单的感知器,了解了阶跃函数(更喜欢叫二分类,简单明了哈哈),还有训练感知器的感知器规则。在这里学习另一种感知器——线性单元,通过此线性单元来了解机器学习的一些基本概念, 比如模型,目标函数,算法优化等。以此来简单了解机器学习。
andrew_a
2019/07/30
5680
入门机器学习(二)-------线性单元和梯度下降及其代码实现(代码实现)
感知机的对偶形式「建议收藏」
首先声明感知机的对偶形式与原始形式并没有多大的区别,运算的过程都是一样的,但通过对偶形式会事先计算好一些步骤的结果并存储到Gray矩阵中,因此可以加快一些运算速度,数据越多节省的计算次数就越多,因此比原始形式更加的优化。 首先我们介绍一下感知机的原始形式,之后与其对比。
全栈程序员站长
2022/11/01
4550
感知机的对偶形式「建议收藏」
感知机模型(perceptron)
将点分成两类(这条直线更一般的名称叫做超平面);另外感知机模型对数据的假设是:数据是线性可分的;比如下图所示的数据所对应的就不是一个线性可分的输入空间
王诗翔呀
2021/04/07
7800
感知机模型(perceptron)
感知机初探
感知机模型的假设空间:定义在特征空间中的所有线性分类模型(linear classification model)或线性分类器(linear classifier)即函数集合:
王强
2018/08/09
3580
感知机初探
【干货】一种直观的方法认识梯度下降
【导读】本文是深度学习专家Thalles Silva分享的一篇技术博客,主要讲解机器学习算法中的梯度下降。首先从形象的角度介绍梯度下降:梯度、偏导数等。然后,根据一个具体的例子“根据历史数据来预测当前
WZEARW
2018/04/08
1.2K0
【干货】一种直观的方法认识梯度下降
感知机
感知机本质可以看作是输入空间(特征空间)中将实例划分为正负两类的分离超平面。其基于误分类的损失函数,并利用梯度下降法对损失函数进行极小化进行求解。
hotarugali
2022/04/25
7830
感知器算法
理解并掌握感知机模型的定义以及几何含义,编写一个简单的使用感知机模型进行判别的例子。
不去幼儿园
2024/12/03
1510
感知器算法
相关推荐
深度学习之线性单元(梯度下降算法)(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档