深度学习模型中不同节点数的直觉

时间:2018-04-18 13:18:39

标签: matrix vector neural-network deep-learning sparse-matrix

除了试验和错误之外,深度学习模型中节点数量的变化会产生什么影响呢?

我如何理解这一点:如果节点数量较少,则每个层的学习表示是密集向量,如果节点数量较高,则每个表示都是稀疏向量。这有助于提高或多或少准确的培训准确度?

3 个答案:

答案 0 :(得分:2)

神经网络可以被视为函数逼近工具。近似的质量由其“误差”定义,即预测与潜在的基础事实有多远。如果我们将实用者方法(试验和错误)放在一边,我们可以通过两种理论来研究节点数量(即宽度)对网络质量的影响;一个是计算理论,另一个是代数拓扑。还没有提供结果立即可翻译为“如果你添加另一个节点然后发生这种情况”,但两者都有一些非常好的见解。我不确定这是否是您期望的那种答案,但我将尽力简要介绍后一领域在解释方面提供的主要观点。

代数拓扑/控制理论

  1. “浅”网络(即单个密集层)可以在节点数量无约束的假设下以任意低误差近似任何连续函数。这就是说,只要你能让它使用尽可能多的节点(可能是无数的),你的网络就可以(无论多么复杂)学习(几乎)完美无缺。实际上,即使我们知道存在一个浅层网络,其近似于错误ε→0一个连续函数 f ,我们不知道该网络是什么或如何估计它的参数。通常情况下, f 越复杂,我们想要ε越低,我们需要的节点就越多,直到培训因为诅咒而变得不可行的程度。维。在非常应用的术语中,这意味着您的图层越宽,表示越丰富,您的预测就越准确。作为副作用,您还需要培训更多参数,因此需要更多的数据要求,以及防止过度拟合的措施。
  2. 高阶张量,例如通常用作神经网络的目标函数的高阶张量,可以被分解为一系列潜在的较低等级张量。这有效地降低了自由度,并且使用更少的参数使数字表示更容易。然而,确定分解的等级(加数的数量)是NP-Hard,如确定系数本身一样。 浅网络对应于规范分解,因此由于它是NP-Hard,因此不能对构造完美近似所需的节点数做出任何声明。然而,我们所知道的是,递归网络对应于另一种分解,即Tensor-Train分解,它具有更高的内存效率和稳定性;因此,我们知道浅网络需要指数级更大的宽度才能模拟相同宽度的循环网络。同样,我们知道卷积网络对应于Hierarchical-Tucker分解,它也比浅层网络更有效;因此, conv层可以在多项式大小中计算出需要浅层的超多项式大小
  3. 参考:

    1. Approximation by Superpositions of a Sigmoidal Function
    2. Convolutional Rectifier Networks as Generalized Tensor Decomposition
    3. Expressive Power of Recurrent Neural Networks
    4. TL; DR :我们不太了解某些近似需要多少宽度,但我们可以比较不同网络类型之间的宽度效率。我们知道,如果我们让它在没有约束的情况下成长,那么浅层网络(完全连接层)可以近似任何东西。我们还知道,其大小的指数增加等于复现层大小的线性增加,并且其大小的超多项式增加等于卷积层中的多项式增加。因此,如果您要增加宽度,最好是在RNN单元格上:)

      计算理论视角遵循不同的路线;也就是说,将各种网络类型转换为计算理论机器并检查它们的图灵度。有人声称使用浅网模拟图灵机所需的节点数量,以及各种网络在尺寸复杂性方面如何相互关联,但我不确定这是否与您所接近的任何地方相近这样问我会跳过这部分。

      我也没有进行宽度和深度效率之间的比较,因为这不是你要问的问题,但是在这个主题上还有更多的实验结果(很多SO答案远比我自己写的要好得多) )。

答案 1 :(得分:1)

你的问题可以用How do width and depth of deep learning models affect the final performance?作为替代。 https://stats.stackexchange.com/questions/214360/what-are-the-effects-of-depth-and-width-in-deep-neural-networks有一个非常好的答案。我重现了下面的一些答案:

  
      
  • Widdening始终如一地提高不同深度的剩余网络的性能;
  •   
  • 增加深度和宽度有助于参数数量变得太高并且需要更强的正则化;
  •   
  • 对于具有相同数量的广泛网络,残余网络中的非常高的深度似乎没有正则化效应   作为瘦的参数可以学习相同或更好的表示。此外,广泛的网络可以成功学习2个或更多   参数数量多于薄数量,这将重新   quire将薄网络的深度加倍,使它们变得不可行   训练费用很高。
  •   

碰巧的是,当我正在为学校模块学习时,这个问题被提出了,但是以简单的方式进行了更容易的分析。您可以通过此链接(https://drive.google.com/file/d/1ZCGQuekVf6KcNUh_M4_uOT3ihX7g7xg9/view?usp=sharing)查看作业的问题和答案。

我在这项任务中得出的结论(您可以在第7页的eassy.pdf中详细了解),更广泛的网络通常具有更好的容量,但也更容易过度拟合。

直观地说,你可以这样想象。更宽的节点本质上意味着您将输入空间分解为多个可能重叠的输出空间,然后您可以在下一层重新组合。如果该层中有更多节点,则会有一组更大的潜在输出空间直接转换为容量。事实上,深度并不直接转化为与普遍看法相反的能力。

作为最后一个注释,如果你在向量中表示稀疏==多个零值,那么你的解释不一定正确。如果使用relu激活,那么向量中确实存在很多零。但是,通常表示向量中接近零节点的数量与节点数量不相关。

答案 2 :(得分:0)

据我所知,为什么过度参数化的网络与SGD一样适用于优化技术仍然没有得到很好的理解。我们知道深度网络比新测试数据更好地概括。增加单元数可以增加模型学习越来越多的训练数据的能力。当然,节点之间会有很多冗余,如果对权重使用适当的正则化,最终可能会出现稀疏模型。例如,一个1000-1000-1000的网络(3个密集层,每个1000个单元)可以使用100k训练样本给出90%的准确度。您可能会遇到另外500k训练样本,准确率仍为90%。模型可能已达到饱和点,您需要增加单位/图层或修改模型体系结构。