人工神经网络中究竟使用多少隐藏层和神经元

简介: 本文讲述了人工神经网络中使用了多少隐藏层,每个隐藏层中包含多少神经元,使用隐藏层和神经元的目的,以及增加隐藏的层数和神经元的数量总是会带来什么结果。

人工神经网络(ANNs)的初学者很可能都会面临一些问题。其中一些问题包括使用隐藏层的数量是多少?每个隐藏层中包含了多少个神经元?使用隐藏的层和神经元的目的是什么?增加隐藏的层数和神经元的数量总是会带来更好的结果吗?

非常高兴地告诉大家,这些问题都是可以回答的。

人工神经网络的灵感来自于生物学的神经网络。为了简单起见,在计算机科学中,它被表示为一系列的网络层。这些层分为三类:分别是输入层、隐藏层和输出层。

了解输入层和输出层的数量和它们的神经元的数量是比较容易的。每个人工神经网络都有一个单独的输入层和输出层。输入层中的神经元数量等于正在处理的数据中的输入变量的数量。在输出层中的神经元的数量等于与每个输入相关联的输出的数量。但是,真正的挑战是如何知道隐藏层和它们所包含的神经元的数量。

这里有一些可以依照的准则,用于知道分类问题中隐藏层的数量和每个隐藏层中所包含的神经元的数量:

· 基于数据,画出一个期望的决策边界用来分离多个类;

· 将决策边界表示为一组直线。注意,这样的直线组合必须服从于决策边界;

·  所选直线的数量等于在第一个隐藏层中的隐藏神经元的数量;

·  为了连接由前一层所创建的直线,添加了一个新的隐藏层。需要注意的是,当每次需要在前一个隐藏层中创建直线之间的连接时,都要添加一个新的隐藏层;

·  每个新的隐藏层中隐藏神经元的数量等于要建立的连接的数量;

为了把事情弄的更清楚,让我们用之前的方法和原则来举几个例子。

示例 1

让我们从下图中简单的分类问题开始,每个样本都有两个输入,和一个用于表示类标签的输出,这与XOR问题十分相似。

0?e=2129500800&v=beta&t=_rrLwLhBZIJwUqeZ 

1

第一个要回答的问题是隐藏层是否是必需的。为了解答这个问题,需要遵循的规则如下:

在人工神经网络中,仅仅当数据必须被非线性分离的时候,隐藏层才是必需的。

请看图2,看起来类必须是非线性分离的,一条线是完不成的。因此,我们必须使用隐藏层,以获得最佳的决策边界。在这种情形下,我们可能仍然不使用隐藏层,但这将影响分类的精确度。所以,最好还是使用隐藏层。

理解我们需要隐藏层的原因,首先需要回答以下两个重要的问题:

1、所需要隐藏层的数量是多少?

2、每个隐藏层中所包含的隐藏神经元的数量是多少?

接着前面的过程,第一步是画出分割两个类的决策边界。至少有一个可能的决策边界会正确地分离数据,如图所示:

0?e=2129500800&v=beta&t=8HPoFUGBKD6zmte9 

2

使用一组直线来表示决策边界,这种想法来自于使用单层感知器作为构造块来构造任何人工神经网络的方式。单层的感知器是一个线性分类器,它根据以下等式所创建的直线方程来分离多个类:

y = w_1*x_1 + w_2*x_2++ w_i*x_i + b

其中x_i表示输入,w_i表示它的权重,b表示偏差,y表示输出。因为每个添加的隐藏神经元将增加权重的数量,所以建议使用最少的隐藏神经元来完成任务,另外,使用比实际需要更多的隐藏神经元也会增加更多的复杂性。

回到我们的例子,人工神经网络是用多个感知器网络构建的,与使用多条直线构建的网络是一样的。

在这个例子中,决策边界被一组直线所代替。这些直线从边界曲线改变方向的点开始,在这些点上,各有两条直线经过,每条直线在不同的方向上。

因为只有在一个点上,边界曲线改变了方向,下图所示的灰色圆圈,那么只需要两条直线,换句话说,有两个单层感知器网络,每个感知器仅仅产生一条直线。

0?e=2129500800&v=beta&t=CNYalo9EF3sYAmzR 

3

只需要两条直线来表示决策边界,这告诉我们第一个隐藏层将有两个隐藏神经元。

到目前为止,我们有一个带有两个隐藏神经元的隐藏层。每个隐藏神经元可看作一个线性分类器,如上图所示,表示为一条直线。一个隐藏层将会有两个输出,每个输出都来自于一个分类器(即隐藏的神经元)。但是,我们要建立一个单一的分类器,并且带有一个表示类标签的输出,而不是两个分类器。结果是,两个隐藏神经元的输出被合并成了一个输出。换句话说,这两条直线将被另一个神经元连接起来,结果如下图所示。

0?e=2129500800&v=beta&t=TvwuQ6r7H99jzxv9 

4

幸运的是,我们不需要用单一神经元来添加另一个隐藏层来完成这项工作,而是输出层神经元做这项工作。这样的神经元将合并先前生成的两条直线,使得只有一条直线来自人工神经网络的输出。

在知道隐藏层以及它们的神经元的数量之后,网络体系结构现在就已经完整了,如下图所示:

0?e=2129500800&v=beta&t=t3OJ_C-cuq1c4hFf 

5

示例 2

另一个分类的示例如图6所示,它类似于前一个示例,其中有两个类,并且每个样本包括两个输入和一个输出。这两个示例的区别就在于决策边界,示例2的边界比之前的示例要更复杂一些。

 0?e=2129500800&v=beta&t=N0TVdQU8MsKOX4H0

6

根据指导原则,第一步是画出决策边界,在我们讨论中所使用的决策边界如图7(a)所示。

下一步是将决策边界分割成一组直线,其中每一条直线将在人工神经网络中被模拟成感知器。在画出这些直线之前,在决策边界改变方向所在的那些点应该被标记为图7(b)所示的那样。

 0?e=2129500800&v=beta&t=aKDzaOTVvgLn_--e

7

那么究竟我们需要多少直线呢?每个在顶部和底部的点都有两条直线经过,这样一共就有四条。中间的点会有两条从其它的点共享的两条直线,要创建的直线如图8所示:

0?e=2129500800&v=beta&t=kYY1_ctgknAqIi8- 

8

因为第一个隐藏层将具有与直线数量相等的隐藏层神经元,那么它有四个神经元。换句话说,它包含四个分类器,每一个分类器都是由单层感知器创建的。目前,人工神经网络将会产生四个输出,每个输出都会来自于一个分类器。下一步是将这些分类器连接在一起,这是为了让网络仅产生单一的输出。换句话说,这些直线会被其它隐藏层连接在一起,以形成一条单独的曲线。

由模型设计者来选择网络的布局。一个可用的网络结构是构造一个具有两个隐藏神经元的第二隐藏层。第一个隐藏神经元将连接前两条直线,最后一个隐藏神经元会连接最后两条直线,这就是第二隐藏层,结果如图9所示。

0?e=2129500800&v=beta&t=c6F6qWWmenJIVz1X 

9

对此,将有两条分离的曲线,所以会有两个来自网络的输出。下一步是将这样的曲线链接在一起,目的是为了从整个人工神经网络中仅得到一个输出。在这种情况下,输出层神经元可以被用来做最后的连接,而不是添加一个新的隐藏层。最后的结果如图10所示。

0?e=2129500800&v=beta&t=XZd7vFaDW7ljj6Md 

10

在网络结构设计完成之后,完整的网络体系结构如图11所示。

0?e=2129500800&v=beta&t=UW1ckRZyxaPoFU9v 

11

数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

文章原标题《Beginners Ask “How Many Hidden Layers/Neurons to Use in Artificial Neural Networks?”》

作者:Ahmed Gad, KDnuggets Contributor

译者:奥特曼,审校:袁虎。

文章为简译,更为详细的内容,请查看原文

相关文章
|
5月前
|
机器学习/深度学习 数据处理
用人工神经网络对混凝土的强度进行建模
用人工神经网络对混凝土的强度进行建模
|
2月前
|
机器学习/深度学习 人工智能 TensorFlow
神经网络深度剖析:Python带你潜入AI大脑,揭秘智能背后的秘密神经元
【8月更文挑战第1天】在当今科技飞速发展的时代,AI已成为日常生活中不可或缺的一部分。神经网络作为AI的核心,通过模拟人脑中的神经元连接方式处理复杂数据模式。利用Python及其强大的库TensorFlow,我们可以轻松构建神经网络模型。示例代码展示了如何建立一个含有两层隐藏层的简单神经网络,用于分类任务。神经网络通过反向传播算法不断优化权重和偏置,从而提高预测准确性。随着技术的进步,神经网络正变得越来越深、越来越复杂,能够应对更加艰巨的挑战,推动着AI领域向前发展。
40 2
|
1月前
|
机器学习/深度学习 人工智能 TensorFlow
神经网络深度剖析:Python带你潜入AI大脑,揭秘智能背后的秘密神经元
【9月更文挑战第12天】在当今科技飞速发展的时代,人工智能(AI)已深入我们的生活,从智能助手到自动驾驶,从医疗诊断到金融分析,其力量无处不在。这一切的核心是神经网络。本文将带领您搭乘Python的航船,深入AI的大脑,揭秘智能背后的秘密神经元。通过构建神经网络模型,我们可以模拟并学习复杂的数据模式。以下是一个使用Python和TensorFlow搭建的基本神经网络示例,用于解决简单的分类问题。
39 10
WK
|
1月前
|
机器学习/深度学习 自然语言处理 算法
PSO算法和人工神经网络有什么不同
PSO算法(粒子群优化)与人工神经网络(ANN)在原理、应用及优化方式上差异显著。PSO模拟鸟群行为,通过粒子协作在解空间中搜索最优解;而ANN模仿大脑神经元结构,通过训练学习输入输出映射,适用于模式识别、图像处理等领域。PSO主要用于优化问题,实时性高,结果直观;ANN则在处理复杂非线性关系方面更强大,但结构复杂,训练耗时长,结果解释性较差。实际应用中需根据需求选择合适技术。
WK
17 0
|
2月前
|
机器学习/深度学习 数据可视化 Python
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
该博客展示了如何通过Python预处理神经网络权重矩阵并将其导出为表格,然后使用Chiplot网站来可视化神经网络的神经元节点之间的连接。
40 0
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
|
3月前
|
机器学习/深度学习 数据采集 算法
Python实现人工神经网络回归模型(MLPRegressor算法)并基于网格搜索(GridSearchCV)进行优化项目实战
Python实现人工神经网络回归模型(MLPRegressor算法)并基于网格搜索(GridSearchCV)进行优化项目实战
|
3月前
|
机器学习/深度学习 算法 数据可视化
Python基于librosa和人工神经网络实现语音识别分类模型(ANN算法)项目实战
Python基于librosa和人工神经网络实现语音识别分类模型(ANN算法)项目实战
|
5月前
|
机器学习/深度学习 人工智能 算法
神经网络中的神经元和激活函数介绍
神经网络中的神经元和激活函数介绍
84 0
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】26.卷积神经网络之AlexNet模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】26.卷积神经网络之AlexNet模型介绍及其Pytorch实现【含完整代码】
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】28.卷积神经网络之NiN模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】28.卷积神经网络之NiN模型介绍及其Pytorch实现【含完整代码】

热门文章

最新文章