神经网络中的“层”是什么?

11

以下是一个典型的前馈神经网络:

Typical Feed Forward Neural Network

现在我的问题是,就术语而言,“层”是什么意思?
每个单独的过程(矩形)是否可以被认为是一层?还是层是流程图中单个行的组合?我有时会将乘法+加法视为单个层,将非线性函数(relu)视为单独的层。但我真的很想得到一个明确的答案。
我经常发现在线视频教人们神经网络时,讲师们本身也会混淆单个示例中的层数。

那是一种非常令人困惑的观察神经网络的方式。请尝试查看此页面右侧的图表:https://en.wikipedia.org/wiki/Artificial_neural_network#Background - beaker
2
我个人是基于激活函数来构建的。一个激活函数等于一层。 - Guy Coder
这绝不是正式定义,但直观地说,“一组节点与输入的距离相同”。 - yurib
@yurib 我认为这不仅是非正式的,而且也是错误的定义。仅仅因为它们与输入的距离相同,你可能不想将两个独立的层视为一件事情。 - user5538922
我认为混淆可能源于“层”一词在不同上下文中的含义不同。在某些情况下,“层”指代一组节点(例如本帖中提供的节点),而在其他情况下,“层”指代一组节点的原子操作(例如所有主要神经网络库中,“层”对应于原子操作,如线性变换或激活函数)。在前一种情况下,一个“层”通常对应于后一种情况下的两个“层”。 - Lei
3个回答

15

根据你的图表,每行实际上是一层。但正如@beaker所说,这不是可视化神经网络的最佳方式。

此处获取的一张图片可以帮助大家更清楚地了解。

enter image description here

“层”是一个通用术语,适用于在神经网络特定深度内共同操作的“节点”集合。

输入层 包含原始数据(您可以将每个变量视为“节点”)。

隐藏层 是神经网络中发生黑魔法的地方。每层都试图通过最小化错误/成本函数来学习有关数据的不同方面。 最直观的理解这些层的方法是在“图像识别”(例如脸部)的上下文中。 第一层可能会学习边缘检测,第二层可能会检测眼睛,第三层则检测鼻子等。虽然实际情况并非如此,但其思想是将问题分解成不同级别的组件,以便不同抽象级别的组件可以像我们自己的大脑一样拼合在一起(因此被称为“神经网络”)。

输出层 最简单,通常对于分类问题只包含一个输出。虽然它是一个单独的“节点”,但仍被认为是神经网络中的一层,因为它可能包含多个节点。


1
神经网络的核心构建模块是层,它是一种数据处理模块,可以将其视为数据的过滤器。一些数据进入,以更有用的形式输出。具体而言,层从输入的数据中提取表示——希望这些表示对于正在处理的问题更有意义。大部分深度学习都是将简单的层链接在一起,实现逐步数据蒸馏的形式。深度学习模型就像是用一系列不断精细的数据过滤器——即层——制成的数据处理筛子。

1

Goodfellow在他的书"深度学习"中定义网络是由每个函数层组成的函数组合:

f^{(3)}(f^{(2)}(f^{(1)}(x)))

然而,从原始问题来看,我不认为可以被向量化的事物(乘法和添加偏置)应该被视为单独的层,尽管ReLU或其他激活函数通常被视为层,这也符合Goodfellow的定义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接