IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 神经网络中如何确定隐藏层的层数和大小 -> 正文阅读

[人工智能]神经网络中如何确定隐藏层的层数和大小

在前馈神经网络中,隐藏层的数量和层数的确定尚无依据,一般是由经验决定。

查阅了大量相关的文章之后我对其进行了综合梳理。

这里需要明确的一点是,这些只是根据经验提出的一些参考的方法,具体的层数和大小还是要在实际实验中进行验证。

在此之前我们还需要理解一点,就是当我们神经元足够多,隐藏层足够多的时候我们甚至能完美拟合所有的点,但是也会带来过拟合的问题。因此我们要把握一个适中的度。

二分类问题

方法出自:Beginners Ask “How Many Hidden Layers/Neurons to Use in Artificial Neural Networks?”1

对于二分类比较好理解。但是我对这个方法持保留态度

先看下边这两类,我们只需要一条斜线就可以完成映射。所以不需要隐藏层,直接inputoutput即可。
在这里插入图片描述

在这里插入图片描述
对于这样要靠两个方向的直线才能分开的这样想:一个神经元只能学习一条方向的直线,所以两个方向需要两个神经元,最后把两个方向的神经元拼起来获得最后的分割线。
在这里插入图片描述
以此类推,第一个隐藏层学到单方向的直线,第二个隐藏层将两条线拼接,以此类推直到最后都拼接起来。
在这里插入图片描述
但是对于这个我存在一个疑问,二分类问题本来就很简单了,需要那么多层隐藏层吗?我觉得根本没必要那么多层隐藏层。

虽然从理论上说,层数越多拟合函数越强,但是实际上更深的层数可能会带来过拟合的问题,同时也会增加训练难度,使模型难以收敛。

隐藏层数量

从上边我们可以得到一个结论:在神经网络中,当数据需要非线性分离的时候才需要隐藏层。

什么是线性?
image.png2

对于隐藏层的层数我找到一个说法:

Table: Determining the Number of Hidden Layers3

Num Hidden LayersResult
noneOnly capable of representing linear separable functions or decisions.
1Can approximate any function that contains a continuous mapping from one finite space to another.
2Can represent an arbitrary decision boundary to arbitrary accuracy with rational activation functions and can approximate any smooth mapping to any accuracy.
>2Additional layers can learn complex representations (sort of automatic feature engineering) for layer layers.

翻译过来就是:

  • 没有隐藏层:仅能表示线性可分离函数或决策。?
  • 1 ?可以近似任何包含从一个有限空间到另一个有限空间的连续映射的函数。?
  • 2 ?可以使用有理激活函数将任意决策边界表示为任意精度,并且可以将任何平滑映射近似到任何精度。?
  • >2 ?可以学习的复杂特征。

多分类

如果二分类可以按照上述方法进行计算,那多分类如何搞?

现在比较常见的方法是根据输入层和输出层的大小进行估算。

现在假设:

  • 输入层大小为 n n n
  • 输出层分为 m m m
  • 样本数量为 s s s
  • 一个常数 c c c

常见的观点有隐藏层数量 h h h

  • h = s c ( n + m ) c ∈ [ 2 , 10 ] h = \frac{s}{c(n+m)} \quad c \in [2,10] h=c(n+m)s?c[2,10]
  • h = n + m + c c ∈ [ 1 , 10 ] h = \sqrt{n+m} + c \quad c \in [1,10] h=n+m ?+cc[1,10]
  • h = n m h = \sqrt{nm} h=nm ?
  • h = log ? 2 n h = \log_2n h=log2?n
  • h = 1.5 ? n h = 1.5*n h=1.5?n
  • h = 1.5 ? ( n + m ) h = 1.5*(n+m) h=1.5?(n+m)
  • h < 2 n h<2n h<2n
  • ……

还有一些其他的观点但是我个人不太同意:

  • m i n ( m , n ) < h < m a x ( m , n ) min(m,n)<h<max(m,n) min(m,n)<h<max(m,n)

因为看了这么一个文章4,文中提到这MINST么一篇论文:SCALABLE MUTUAL INFORMATION ESTIMATION USING DEPENDENCE GRAPHS5

在下边两幅图中,都是使用ReLU做激活函数的神经网络,横坐标从右到左表示压缩率,最右边表示网络第一层,最左边表示网络最后一层,越往左表示压缩效果越好。可以看出隐藏层先增大后减小的压缩效果比逐渐减小的压缩效果更好。

由于文中使用MNIST做的实验,我们可以知道增大的过程中明显大于输入层的大小( 1024 > 28 ? 28 1024>28*28 1024>28?28),更大于输出层的类别数。

这不是个例,通常在CNN中都是使用先增大后减小的隐藏层数量,并且隐藏层的大小都大于 m a x ( n , m ) max(n,m) max(n,m)
在这里插入图片描述在这里插入图片描述


我是萝莉安,我好忙。😢


  1. Beginners Ask “How Many Hidden Layers/Neurons to Use in Artificial Neural Networks?” ??

  2. 《线性代数的几何意义》任广千 ??

  3. Heaton Research: The Number of Hidden Layers ??

  4. 神经网络隐藏层的大小该如何取舍? ??

  5. SCALABLE MUTUAL INFORMATION ESTIMATION USING DEPENDENCE GRAPHS ??

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:23:58  更:2022-03-30 18:24:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 -2025/2/21 3:37:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码