编译:yxy
出品:ATYUN订阅号
人工神经网络有两个重要的超参数,用于控制网络的体系结构或拓扑:层数和每个隐藏层中的节点数。配置网络时,必须指定这些参数的值。
为你的特定预测建模问题配置这些超参数的最可靠方法是通过强大的测试工具系统实验。
对于初学者来说,寻找一种分析方法来计算最佳层数和节点数,或者遵循简单的经验法则,可能是一个很难接受的机器学习领域。
在这篇文章中,你将了解层和节点的作用,以及如何着手为你的预测建模问题配置多层感知器神经网络。
阅读这篇文章后,你会知道:
单层和多层感知器网络之间的区别。
在网络中拥有一个和多个隐藏层的价值。
配置网络中的层数和节点数的五种方法。
让我们开始吧。
这篇文章分为四个部分; 他们是:
多层感知器
如何计算层?
为什么要有多个层?
要使用多少层和节点?
多层感知器
节点,也称为神经元或感知器,是具有一个或多个权重输入连接的计算单元,它以某种方式连接输入的转移函数,并且连接输出。然后将节点组织成层以构成网络。
单层人工神经网络,也简称为单层,顾名思义,具有单层节点。单层中的每个节点直接连接到输入变量并提供输出变量。
单层网络只有一层活动的单元。输入通过单层权重直接连接到输出。输出不相互影响,因此具有N个输出的网络可被视为N个分离的单输出网络。
– 第15页,Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks,1999。
单层网络可以扩展到多层网络,也曾为称为多层感知器。多层感知器(MLP)是具有不止一层的人工神经网络。
它有一个连接到输入变量的输入层,一个或多个隐藏层,以及一个产生输出变量的输出层。
标准多层感知器(MLP)是单层感知器的连接在一起。存在一层输入节点,一层输出节点和一个或多个中间层。中间层也被称为“隐藏层”,因为它们不能直接从系统输入和输出中观察到。
– Page 31,Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks,1999。
我们可以总结MLP中层的类型如下:
输入层:输入变量,有时称为可见层。
隐藏层:输入和输出层之间的节点层。这些层可能存在一个或多个。
输出层:生成输出变量的节点层。
最后,以下是用于描述神经网络形状和能力的一些术语:
尺寸:模型中的节点数。
宽度:特定层中的节点数。
深度:神经网络中的层数。
能力:可以通过网络配置学到的函数的类型或结构。有时被称为“ 表征能力 ”。
架构:网络中层和节点的具体排列。
如何计算层?
过去,对于如何计算层数存在一些分歧。
分歧的核心在于输入层是否被计算在内。有一种观点认为不应该计算它,因为输入并不活动,它们只作输入变量。我们将使用这个惯例; 这也是《Neural Smithing》 一书中推荐的惯例。
因此,具有输入层,一个隐藏层和一个输出层的MLP是2层MLP!
可以使用简单的符号来概括MLP的结构。
这种方便的表示法表述了每层的层数和节点数。每个层中的节点数被指定为一个整数,从输入层到输出层,每个层的尺寸由一个正斜线字符(/)分隔。
例如,输入层中具有两个变量的网络,有一个具有八个节点的隐藏层和具有一个节点的输出层使用符号来描述为:2/8/1。
我建议在描述多层感知器神经网络的层及其尺寸时使用此表示法。
为什么要有多个层?
在我们查看要指定的层数之前,有必要先思考为什么我们希望拥有多个层。
单层神经网络只能用于表示线性可分离的函数。也就是说非常简单的问题,例如,分类问题中可以被一行整齐地分隔开的两个类。如果你的问题相对简单,那么单层网络就足够了。
然而,我们有兴趣解决的大多数问题都不是线性可分的。
多层感知器可用于表示凸区域。这意味着,实际上,他们可以学习在一些高维空间中围绕实例绘制形状,以对它们进行分类,从而克服线性可分性的限制。
实际上,Lippmann在1987年的论文“An introduction to computing with neural nets ”中有一个理论发现,它表明具有两个隐藏层的MLP足以创建任何所需形状的分类区域。这很有启发性,但应该注意的是,没有给出每层中使用多少节点或如何学习权重的指示。
进一步的理论发现和证明已经显示MLP是万能逼近器。有了一个隐藏层,MLP就可以逼近我们需要的任何函数。
具体而言,万能逼近定理表明:只要有足够的隐藏节点,具有线性输出层和至少一个具有任何“压缩”激活函数(如,logistic sigmoid)的隐藏层的前馈网络可以从一个有限维空间到另一个有限维空间有任意的非零误差逼近任何波莱尔可测函数。
– 第198页,Deep Learning,2016年。
这是一个经常被引用的理论发现,关于它的文献很多。在实践中,我们同样不知道在给定问题的单个隐藏层中要使用多少节点,也不知道如何有效地学习或设置其权重。此外,已经出现了许多反例,有些函数不能通过单个隐藏层的MLP直接学习或者需要无限数量的节点。
即使对于那些可以通过足够大的单隐藏层MLP学习的函数,使用两个(或更多)隐藏层来学习它也会更有效。
既然一个足够大的隐藏层足以近似大多数函数,为什么还有人会使用更多呢?其中一个原因在于“足够大”这个词。虽然单个隐藏层对于某些函数是最佳的,但是与有更多层的解决方案相比,单隐藏层解决方案的效率非常低。
– 第38页,Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks,1999。
要使用多少层和节点?
有了前面的铺垫,让我们来处理你真正的问题。应该在多层感知器中使用多少层,每层有多少个节点?
在本节中,我们将列举解决此问题的五种方法。
1)实验
一般来说,当我被问到用于MLP的层数和节点数时,我经常回复:
我不知道,你要使用系统的实验来发现对特定数据集最有效的方法。
我仍然坚持这个答案。
通常,你无法分析计算人工神经网络中每层使用的层数或节点数,以解决特定的实际预测建模问题。
每层中的层数和节点数是必须指定的模型超参数。
你可能是第一个尝试使用神经网络解决自己的特定问题的人。在你之前没有人解决过它。因此,没有人能告诉你如何配置网络的正确答案。
领取专属 10元无门槛券
私享最新 技术干货