我看到很多人在深度神经网络中改变每一层的宽度。IE。输入->50->100->150->输出。我很好奇这种结构相对于静态层宽度的优势(如果有的话)是什么。输入->50->50->50->输出。
鉴于以下三种模型结构,它们之间的现实意义和差异以及它们如何解释数据?
示例 1:
输入 -> 100 -> 100 -> 100 -> 输出
示例 2:
输入 -> 50 -> 100 -> 150 -> 输出
示例 3:
输入 -> 150 -> 100 -> 50 -> 输出
我看到很多人在深度神经网络中改变每一层的宽度。IE。输入->50->100->150->输出。我很好奇这种结构相对于静态层宽度的优势(如果有的话)是什么。输入->50->50->50->输出。
鉴于以下三种模型结构,它们之间的现实意义和差异以及它们如何解释数据?
示例 1:
输入 -> 100 -> 100 -> 100 -> 输出
示例 2:
输入 -> 50 -> 100 -> 150 -> 输出
示例 3:
输入 -> 150 -> 100 -> 50 -> 输出
实际上,您指的是哪个深度神经网络并不完全清楚,但我猜您指的是 Dense,也就是全连接网络。这取决于您的数据,但为简化起见,根据此处的答案,第一个隐藏层的神经元尝试找到用于分离数据的线,随后层的神经元尝试同时考虑它们,我建议阅读孔答案。当你增加第一层神经元的数量时,你尝试增加分离线的数量,链接的最后一个形状,当你尝试增加第二层的数量时,凸形的数量将增加。如果您将它们增加太多,您将过度拟合您的数据。
在卷积网络中增加过滤器、神经元或内核的数量还有另一个意义。如果您增加过滤器的数量,则意味着您尝试找到更多可以更好地代表您的数据的特征。在转换层中,您实际上是在尝试查找数据的特征。尽管您在密集网络中以某种方式执行相同的过程,但是由于神经元的连接较少并且它们在卷积网络中得到类似的更新,因此卷积网络学习的特征与密集层完全不同。有关更多信息,我建议您查看此处。
这实际上取决于您要解决的问题。神经网络层试图获得越来越多的输入抽象表示,并针对您的输出量身定制。因此,影响您的输出的因素需要能够在每个抽象级别上很好地表示。每个抽象级别代表您的输入之间越来越多的非线性交互,并希望噪声越来越少。
让我们以卷积神经网络为例,因为它更容易解释正在发生的事情。第一层正在寻找小的模式,而后面的级别正在寻找这些相关的较小模式的组合。如果有很多与您的任务相关的不同小模式,但后面的层只是在寻找这些过滤器的几种不同组合,那么您的第三个示例将是合适的。另一方面,如果您有一些边缘检测器,然后在前几个抽象层中有一些基本形状,但您试图区分全部由这些基本形状构建的 1000 个类,那么您将需要一个更极端的变体第二个例子。第一个例子介于两者之间。