独家 | 初学者的问题:在神经网络中应使用多少隐藏层/神经元?(附实例)

简介:

人工神经网络(ANNs)初学者可能会问这样的问题:

● 该用多少个隐藏层?
● 每个隐藏层中有多少个隐藏的神经元?
● 使用隐藏层/神经元的目的是什么?
● 增加隐藏层/神经元的数量总能带来更好的结果吗?

很高兴我们可以回答这些问题。首先要清楚,如果要解决的问题很复杂,回答这些问题可能会过于复杂。到本文结束时,您至少可以了解这些问题的答案,而且能够在简单的例子上进行测试。

ANN的灵感来自生物神经网络。在计算机科学中,它被简化表示为一组层级。而层级分为三类,即输入,隐藏和输出类。

确定输入和输出层的数量及其神经元的数量是最容易的部分。每一神经网络都有一个输入和一个输出层。输入层中的神经元数量等于正在处理的数据中输入变量的数量。输出层中的神经元数量等于与每个输入相关联的输出数量。但挑战在于确定隐藏层及其神经元的数量。

以下是一些指导,可以帮助了解分类问题中每个隐藏层的隐藏层数和神经元数:

● 根据数据绘制预期的决策边界,从而将各个类别分开。
● 将决策边界表示为一组线。注意这些线的组合必须服从于决策边界。
● 所选的线的数量表示第一隐藏层中隐藏神经元的数量。
● 如要连接由前一层所创建的连线,则需添加一个新的隐藏层。注意,每次添加一个新的隐藏层时,都需要与上一个隐藏层创建连接。
● 每个新隐藏层中隐藏神经元的数量等于要建立的连接数。

为便于理解,请看以下实例:

实例一

让我们从一个两个类的分类问题的简单示例开始。如图1所示,每个示例都有两个输入和一个表示类标签的输出。它与XOR问题非常相似。

a23aa5ea4411f40860519b75884579cd0fad703c

图1

第一个问题是是否需要隐藏层。确定是否需要隐藏层的规则如下:

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

如图2所示,似乎这些类必须是非线性分离的。一条单线不能分离数据。因此,我们必须使用隐藏层以获得最佳决策边界。在这种情况下,我们可能仍然不使用隐藏层,但这会影响分类准确性。因此,最好使用隐藏层。

知道需要隐藏层之后,有两个重要问题需要回答,即:

● 所需的隐藏层数是多少?
● 每个隐藏层的隐藏神经元数量是多少?

按照前面的过程,第一步是绘制分割两个类的决策边界。如图2所示,有多个可能的决策边界正确地分割数据。我们将进一步讨论图2(a)中的那个。

4ae0dd658a9f6684becdd26352331f1a74e412b2

图2

接下来是通过一组线进行表达决策边界。

使用一组线来表示决策边界的事实依据是:任何ANN都是使用单层感知器作为构建块构建的。单层感知器是一个线性分类器,它使用根据以下等式创建的线来分隔不同类:

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

其中 x_i 是 输入,w_i 是其权重,b 是偏差,y 是输出。因为添加的每个隐藏神经元都会增加权重数量,且使用更多的隐藏神经元会增加复杂性,因此建议使用最少数量的隐藏神经元来完成任务。

回到我们的例子,说ANN是使用多个感知器网络构建的,就像说网络是使用多条线路构建的。

在这个例子中,决策边界被一组线代替。线从边界曲线改变方向的点开始。在这一点上,放置两条线,每条线在不同的方向上。

如图3所示,因为边界曲线只有一个点通过灰色圆圈改变方向,所以只需要两条线。换句话说,这里有两个单层感知器网络,每个感知器产生一条线。

20392bb88cf42dc6a951e7dbfebaf21f45b48e54

图3

决策边界只需要两条线即可表示,这意味着第一个隐藏层将有两个隐藏的神经元。

到目前为止,我们有一个隐藏层,其包括有两个隐藏的神经元,每个隐藏的神经元可以被视为线性分类器,如图3中的线所示。这里将有两类输出,其中一类来自每一个分类器(即隐藏的神经元)。然而我们希望构建一个只能输出类标的分类器。因此,两个隐藏神经元的输出将合并为一个输出。换句话说,这两条线将由另一个神经元连接。结果如图4所示。

幸运的是,我们不需要添加另一个带有单个神经元的隐藏层来完成这项工作。输出层神经元将完成任务。其可将先前生成的两条线进行融合,使网络最终只有一个输出。

2a220c332f62cfcea32671afea6b77031e6a0779

图4

知道隐藏层及其神经元的数量后,网络架构现已完成,如图5所示。

3a316544a846a9296f188e5a9685506e613cd3c2

图5

实例二

另一个分类的例子如图6所示。与之前的例子类似,有两个分类,其中每个样本有两个输入和一个输出。区别在于决策边界。此示例的边界比前一个示例更复杂。

afc55318f9b9b4b4fd1861dd2d5189340071ed9a

图6

根据最开始的指示,第一步是绘制决策边界。前述中使用的决策边界如图7(a)所示。

下一步是将决策边界分成一组线,每条线都可构建为像ANN感知器那样的模型。在绘制线之前,应该标记边界变化方向的点,如图7(b)所示。

ced633cbb038e4221f27c796fedeb726b878a240

图7

问题是需要多少条线?顶点和底点中的每一个将具有与它们相关联的两条线,总共4条线。中间点有两条线从其他点共享。要创建的线如图8所示。

因为第一个隐藏层将具有等于线数的隐藏层神经元,所以第一个隐藏层将具有4个神经元。换句话说,有4个分类器,每个分类器由单层感知器创建。目前,网络将生成4个输出,每个分类器一个。接下来是将这些分类器连接在一起,以使网络仅生成单个输出。换句话说,线条将通过其他隐藏层连接在一起来生成单独一条曲线。

b95a8ee7f32c5bc6e5d9b3d098d0d08651e1a2bd

图8

模型设计者可以选择网络布局。一种可行的网络架构是构建具有两个隐藏神经元的第二隐藏层。第一个隐藏的神经元将连接前两条线,最后一个隐藏的神经元将连接最后两条线。第二个隐藏层的结果如图9所示。

ccb9f6cf90983306b4e7f9d2158f510bf0b2e4f0

图9

到目前为止,这里有两条分开的曲线。因此,网络有两个输出。接下来是将这些曲线连接在一起从整个网络中获得单个输出。在这种情况下,输出层神经元可用于进行最终连接而非添加新的隐藏层。最终结果如图10所示。

02e1288f682a62d9ea8ad9e9ce6f829bf2fb37c6

图10

网络设计完成后,完整的网络架构如图11所示。

503ad1b013c7716bad5be9c3e3bb58318d8c581a

图11


原文发布时间为:2018-09-3

本文作者:Ahmed Gad

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”。

相关文章
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
什么是神经元、神经网络、模型、调参、炼丹?
什么是神经元、神经网络、模型、调参、炼丹?
111 0
|
6月前
|
数据采集 JSON API
C#网络爬虫实例:使用RestSharp获取Reddit首页的JSON数据并解析
C#网络爬虫实例:使用RestSharp获取Reddit首页的JSON数据并解析
|
24天前
|
机器学习/深度学习 PyTorch 算法框架/工具
卷积神经元网络中常用卷积核理解及基于Pytorch的实例应用(附完整代码)
卷积神经元网络中常用卷积核理解及基于Pytorch的实例应用(附完整代码)
20 0
|
2月前
|
弹性计算 大数据 测试技术
2024年阿里云服务器价格购买价格表(实例配置价格+磁盘价格+网络宽带价格)
2024年阿里云服务器价格购买价格表来了!2024年阿里云服务器租用费用,轻量应用服务器和云服务器ECS优惠价格表,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服务器30元3个月,幻兽帕鲁4核16G和8核32G服务器配置,云服务器ECS可以选择经济型e实例、通用算力u1实例、ECS计算型c7、通用型g7、c8i、g8i等企业级实例规格。今天分享阿里云服务器租用费用最新报价:
60 2
|
7月前
|
弹性计算 固态存储 数据可视化
2023年最新阿里云服务器价格表(实例配置价格+磁盘价格+网络宽带价格)
2023年阿里云服务器租用费用,轻量应用服务器和云服务器ECS优惠价格表,阿里云轻量应用服务器2核2G3M带宽轻量服务器一年108元,2核4G4M带宽轻量服务器一年297.98元12个月,云服务器ECS包括通用算力型u1、ECS计算型c7、通用型g7和内存型r7均有活动
502 0
|
4月前
|
网络安全 PHP
[网络安全/CTF] BUUCTF极客大挑战2019PHP解题详析(Dirsearch使用实例+php反序列化)
[网络安全/CTF] BUUCTF极客大挑战2019PHP解题详析(Dirsearch使用实例+php反序列化)
39 0
|
9月前
|
Java
Java 网络实例的demo(三)
Java 网络实例的demo(三)
57 0
|
9月前
|
存储 Java
Java 网络实例的demo(二)
Java 网络实例的demo(二)
58 0
|
4月前
|
数据采集 NoSQL 关系型数据库
Go语言网络爬虫工程经验分享:pholcus库演示抓取头条新闻的实例
网络爬虫是一种自动从互联网上获取数据的程序,它可以用于各种目的,如数据分析、信息检索、竞争情报等。网络爬虫的实现方式有很多,不同的编程语言和框架都有各自的优势和特点。在本文中,我将介绍一种使用Go语言和pholcus库的网络爬虫工程,以抓取头条新闻的数据为例,展示pholcus库的功能和用法。
489 0
Go语言网络爬虫工程经验分享:pholcus库演示抓取头条新闻的实例
|
6月前
|
弹性计算 人工智能 测试技术
2023年最新阿里云服务器价格表(实例配置价格+磁盘价格+网络宽带价格)
2023年最新阿里云服务器价格表(实例配置价格+磁盘价格+网络宽带价格)
225 0

热门文章

最新文章