本文概述
- 介绍
- 例子1
- 例子2
文章图片
人工神经网络(ANN)的初学者可能会问一些问题。其中一些问题包括要使用的隐藏层数是多少?每个隐藏层中有多少个隐藏神经元?使用隐藏层/神经元的目的是什么?增加隐藏层/神经元的数量是否总是能带来更好的结果?我很高兴地说我们可以回答这样的问题。明确地说, 如果要解决的问题很复杂, 回答此类问题可能会太复杂。到本文结尾, 你至少可以了解如何回答这些问题, 并能够根据简单的示例进行自我测试。
文章图片
介绍 ANN受生物神经网络的启发。为简单起见, 在计算机科学中, 它表示为一组层。这些层分为输入, 隐藏和输出三类。
知道输入和输出层的数量及其神经元的数量是最容易的部分。每个网络都有单个输入和输出层。输入层中神经元的数量等于正在处理的数据中输入变量的数量。输出层中神经元的数量等于与每个输入关联的输出的数量。但是挑战在于知道隐藏层及其神经元的数量。
以下是一些指南, 用于了解分类问题中每个隐藏层的隐藏层数和神经元:
- 根据数据, 画出预期的决策边界以分离类别。
- 将决策边界表示为一组线。注意, 这些线的组合必须屈服于决策边界。
- 所选行的数量表示第一隐藏层中隐藏神经元的数量。
- 为了连接上一层创建的线, 添加了一个新的隐藏层。请注意, 每次需要在上一个隐藏层中的各行之间创建连接时, 都会添加一个新的隐藏层。
- 每个新的隐藏层中的隐藏神经元数量等于要建立的连接数量。
例子1 让我们从一个具有两个类的分类问题的简单示例开始, 如下图所示。每个样本都有两个输入和一个代表类标签的输出。它与XOR问题非常相似。
文章图片
要回答的第一个问题是是否需要隐藏层。确定是否需要隐藏层要遵循的规则如下:
在人工神经网络中, 当且仅当数据必须非线性分离时才需要隐藏层。看下图, 似乎必须将这些类非线性分离。单行不起作用。结果, 我们必须使用隐藏层以获得最佳决策边界。在这种情况下, 我们可能仍不使用隐藏层, 但这会影响分类的准确性。因此, 最好使用隐藏层。
知道我们需要隐藏层才能使我们需要回答两个重要问题。这些问题是:
- 所需的隐藏层数是多少?
- 每个隐藏层中隐藏神经元的数量是多少?
文章图片
遵循准则, 下一步是用一组线表示决策边界。
使用一组线表示决策边界的想法来自以下事实:任何ANN都是使用单层感知器作为构建块构建的。单层感知器是线性分类器, 它使用根据以下等式创建的线来分隔类:
y = w1x1 + w2x2 +?+ wxx + b
其中xi是第i个输入, wi是其权重, b是偏置, y是输出。由于添加的每个隐藏神经元都会增加权重数, 因此建议使用最少数量的隐藏神经元来完成任务。使用比所需更多的隐藏神经元会增加更多的复杂性。
回到我们的示例, 说使用多个感知器网络构建ANN与说使用多个线路构建网络相同。
在此示例中, 决策边界由一组线代替。线从边界曲线改变方向的点开始。在这一点上, 放置了两条线, 每条线的方向不同。
因为边界曲线的变化方向只有一个点(如下图由灰色圆圈所示), 所以只需要两条线。换句话说, 有两个单层感知器网络。每个感知器产生一条线。
文章图片
【推断神经网络的层数和神经元(图解)】知道只需要两条线来表示决策边界, 就可以知道第一隐藏层将具有两个隐藏神经元。
到目前为止, 我们只有一个带有两个隐藏神经元的隐藏层。每个隐藏的神经元都可以看作是线性分类器, 如上图所示, 用线表示。将有两个输出, 每个分类器一个输出(即隐藏的神经元)。但是我们要构建一个单一的分类器, 其中一个输出代表类标签, 而不是两个分类器。结果, 两个隐藏神经元的输出将合并为一个输出。换句话说, 两条线将由另一个神经元连接。结果如下图所示。
幸运的是, 我们不需要添加带有单个神经元的另一个隐藏层来完成这项工作。输出层神经元将完成任务。这种神经元将合并先前生成的两条线, 因此网络只有一个输出。
文章图片
在知道了隐藏层及其神经元的数量之后, 网络架构就完成了, 如下图所示。
文章图片
例子2 下图显示了另一个分类示例。它与前面的示例相似, 其中有两个类别, 其中每个样本都有两个输入和一个输出。区别在于决策边界。该示例的边界比上一个示例复杂。
文章图片
根据指南, 第一步是绘制决策边界。下图(a)的最左侧显示了我们讨论中使用的决策边界。
下一步是将决策边界划分为一组线, 其中每条线将在ANN中建模为感知器。在画线之前, 应标记边界改变方向的点, 如下图(b)的最右侧所示。
文章图片
问题是需要多少行?顶部和底部的每个点都有两条与之关联的线, 总共4条线。中间点将与其他点共享两条线。下图显示了要创建的行。
因为第一隐藏层将具有等于行数的隐藏层神经元, 所以第一隐藏层将具有4个神经元。换句话说, 有4个分类器, 每个分类器由一个单层感知器创建。目前, 网络将生成4个输出, 每个分类器一个。接下来是将这些分类器连接在一起, 以使网络仅生成单个输出。换句话说, 这些线将由其他隐藏层连接在一起以仅生成一条曲线。
文章图片
模型设计者可以选择网络的布局。一种可行的网络体系结构是用两个隐藏的神经元构建第二个隐藏层。第一个隐藏的神经元将连接前两行, 最后一个隐藏的神经元将连接后两行。第二个隐藏层的结果。第二层的结果如下图所示。
文章图片
到目前为止, 有两条分离的曲线。因此, 网络有两个输出。接下来是将这些曲线连接在一起, 以使整个网络只有一个输出。在这种情况下, 可以使用输出层神经元进行最终连接, 而不是添加新的隐藏层。最终结果如下图所示。
文章图片
网络设计完成后, 完整的网络体系结构如下图所示。
文章图片
有关更多信息。
深度学习+使用ANN解决XOR的简介 幻灯片分享
youtube
推荐阅读
- 用Python进行集成学习
- SQL(报告和分析)
- Python列表(划分为给定大小的块)
- 用PyTorch研究张量
- Android ListView Animation 4种动画效果(贴上了GIF图)
- Android在滚动列表中实现视频的播放 ListViewRecyclerView
- ???????????????app??????????????????Activity
- APP注册邀请码
- 实现mapper接口注入的两种方式,以及后台的使用区别