感知机详解

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》等

本文分享自微信公众号 - 机器学习算法与Python学习(guodongwei1991)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-10-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏算法channel

机器学习常见的聚类算法(上篇)

陈浩然,北大在读,个人网站:chrer.com,里面记录了机器学习、深度学习的系统学习笔记,欢迎大家访问,感谢分享!

13100
来自专栏李智的专栏

斯坦福CS231n - CNN for Visual Recognition(2)-lecture3(上)线性分类器、损失函数

  由于之前KNN分类器的缺点,让我们很自然地去寻找有更加强大地方法去完成图像分类任务,这种方法主要有两部分组成: 评分函数(score function)...

13310
来自专栏机器学习算法与Python学习

干货 | 深度学习之损失函数与激活函数的选择

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 前言 在深度神经网络(DNN)反向传...

70660
来自专栏书山有路勤为径

深度卷积网络:实例探究

介绍几种经典的卷积神经网络结构,分别是LeNet、AlexNet、VGGNet。 LeNet-5 LeNet-5主要是针对灰度设计的,所以其输入较小,为32...

10140
来自专栏人工智能LeadAI

反向传播(backpropagation)算法 | 深度学习笔记

接上一篇(多层感知机(MLP)与神经网络结构 | 深度学习笔记)的最后,我们要训练多层网络的时候,最后关键的部分就是求梯度啦。纯数学方法几乎是不可能的,那么反向...

305100
来自专栏深度学习自然语言处理

白话word2vec

word2vec 是2012年被被Google提出来的将文本生成词向量模型,其中包括了两个模型,continous bag of words(CBOW)和Ski...

20020
来自专栏Python数据科学

【机器学习笔记】:从零开始学会逻辑回归(一)

逻辑回归是一个非常经典,也是很常用的模型。之前和大家分享过它的重要性:5个原因告诉你:为什么在成为数据科学家之前,“逻辑回归”是第一个需要学习的

11610
来自专栏新智元

【干货】TensorFlow 实用技巧:模型盘点,使用情况及代码样例

本文将介绍当前 TensorFlow 上的所有抽象模型,描述每个模型的使用情况以及简单的代码样例。详细的示例请访问这里:https://github.com/c...

39770
来自专栏深度学习

机器学习、深度学习 知识点总结及面试题

一、反向传播思想: 1、计算出输出与标签间的损失函数值,然后计算其相对于每个神经元的梯度,根据梯度方向更新权值。 (1)将训练集数据输入到ANN的输入层,经过隐...

40770
来自专栏企鹅号快讯

EM算法原理总结

EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM),...

25180

扫码关注云+社区

领取腾讯云代金券