多层感知机和神经网络的区别_从感知机到人工神经网络

在第10章中,我们介绍了感知机,一种用于二元分类的线性模型。我们了解到感知机并不是一种通用的函数逼近器,它的决策边界必须是一个超平面。在第11章中,我们介绍了SVM,它通过使用核函数将特征表示映射到可能会使分类线性可分的更高维度空间,克服了感知机的一些局限。在本章中,我们将讨论ANN,一种可用于监督任务和非监督任务的强大非线性模型,它使用一种不同的策略来克服感知机的局限。如果将感知机类比为一个神经元,那么ANN或者说神经网络,就应该类比为一个大脑。正如一个人类的大脑由数十亿个神经元和数万亿个突触组成一样,一个ANN是一个由人工神经元组成的有向图。图的边表示权重,这些权重都是模型需要学习的参数。

本章将提供一个关于小型前馈人工神经网络结构和训练的概述。scikit-learn类库实现了用于分类、回归和特征提取的神经网络。然而,这些实现仅仅适用于小型网络。训练一个神经网络需要消耗大量的算力,在实际中大多数神经网络使用包含上千个并行处理核的图形处理单元进行训练。scikit-learn类库不支持GPU,而且在近期也没有支持的打算。GPU加速还不成熟但是在迅速的发展中,在scikit-learn类库中提供对GPU的支持将会增加许多依赖项,而这与scikit-learn项目“轻松在各种平台上安装”的目标有所冲突。另外,其他机器学习算法很少需要使用GPU加速来达到和神经网络相同的程度。训练神经网络最好使用专门的类库例如Caffe、TensorFlow和Keras来实现,而不要使用像scikit-learn这样的通用的机器学习类库。

虽然我们不会使用scikit-learn类库来训练一个用于目标识别的深度卷积神经网络(CNN)或者用于语音识别的递归网络,理解将要训练的小型网络的原理对于这些任务来说是重要的先决条件。

12.1 非线性决策边界

回顾第10章,虽然一些布尔函数例如ANDORNAND可以用感知机来逼近,线性不可分函数XOR却不能,如图12.1所示。

bc76b06ac29a0d76edb42b27908a5a6a.png

图12.1

让我们回顾XOR函数的更多细节来建立一种关于ANN能力的直觉。和AND函数(当输入都等于1时输出才等于1)以及OR函数(当输入至少有一个等于1输出才等于1)不同,只有当一个输入等于1时,XOR函数的输出才等于1。当两个条件都为真时,我们可以将XOR函数的输出看作1。第1个条件是至少有一个输出项等于1,这个条件和OR函数的检验条件相同。第2个条件是输入项不能都等于1,这个条件和NAND函数的检验条件相同。我们可以通过将输入项目同时使用OR函数和NAND函数处理,然后使用AND函数来验证两个函数的输出结果是否都等于1,来得到XOR函数的处理输出结果。也就是说,OR函数、NAND函数和AND函数可以通过组合得到和XOR函数相同的输出结果。

表12.1是关于输入A和输入B对于XOR函数、OR函数、AND函数和NAND函数的真实值表格。从这个表格中我们可以验证输入A和输入B经过OR函数的输出和NAND函数的输出再经过AND函数处理的输出结果,和直接经过XOR函数处理的输出结果相同,如表12.2所示。

7f9c2cd56607d4663258bcf8083be21c.png

12.2 前馈人工神经网络和反馈人工神经网络

ANN可以由3个关键组件来描述。第1个关键组件是模型的架构或者说拓扑,它描述了神经元的类型和神经元之间的连接结构。第2个关键组件是人工神经元使用的激活函数。第3个关键组件是找出权重最优值的学习算法。

ANN主要有两种类型。前馈神经网络是最常见的类型,它通过有向非循环图来定义。在前馈神经网络中,信息只在一个方向上朝着输出层进行传递。相反,反馈神经网络或者递归神经网络包含循环。反馈循环可以表示网络的一种内部状态,它会导致网络的行为基于本身的输入随着时间变化而发生变化。前馈神经网络经常用于学习一个将输入映射到输出的函数。例如,一个前馈神经网络可以被用于识别一张照片中的物体,或者预测一个SaaS产品的订阅用户流失的可能性。反馈神经网络的时间行为使其适合用于处理输入序列。反馈神经网络已经被用于在两种语言之间翻译文档和自动转录演讲。因为反馈神经网络没有在scikit-learn类库中实现,我们将把讨论的话题仅限于前馈神经网络。

12.3 多层感知机

多层感知机是一个简单的ANN。然而,它的名字是一种误称。一个多层感知机的并不是每一层只包含单一的感知机的多层结构,而是一个由人工神经元模拟感知机的多层结构。多层感知机包含3层或者更多层人工神经元,这些神经元形成了一个有向、非循环图。一般地,每层和后面的层都是全连接,一个层中的每个人工神经元的输出项或者说激活项,都是下一层中每个人工神经元的输入项。特征通过输入层进行输入。输入层中的简单神经元至少和一个隐层连接。隐层表示潜在变量,这些变量在训练数据中无法被观测到。隐层中隐藏神经元通常被称为隐单元。最后一个隐层和一个输出层连接,该层的激活项是响应变量的预测值。图12.2描述了一个包含3层感知机的多层感知机结构。标有+1的神经元是常量偏差神经元,在大多数架构图中并不出现。这个神经网络有两个输入神经元,3个隐神经元以及2个输出神经元。

3077064a80e0c61fa612c78349cb1f78.png

图12.2

输入层并不包含在一个神经网络的层

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值