为什么隐藏层中的神经元数量应该是 2 的幂?

人工智能 深度学习 优化 超参数优化 超参数 隐藏层
2021-10-29 23:50:47

我在网上某处读到(我丢失了参考资料),隐藏层中的单元(或神经元)的数量应该是 2 的幂,因为它有助于学习算法更快地收敛。

这是事实吗?如果是,为什么这是真的?是不是跟记忆是怎么形成的有关系?

2个回答

我在网上某处读到(我丢失了参考资料),隐藏层中的单元(或神经元)的数量应该是 2 的幂,因为它有助于学习算法更快地收敛。

我很想看到这个建议的参考,以防它被误解。

据我所知,在正常的神经网络中没有这样的效果。在卷积神经网络中,它可能以较小的方式可能是正确的,因为某些 FFT 方法可以更好地使用2n项目。

这是事实吗?如果是,为什么这是真的?是不是跟记忆是怎么形成的有关系?

我会说这不是一个普遍的事实。相反,通过增加或减少 2 倍来搜索一些超参数(例如每层中的神经元数量)似乎被误解了。这样做并尝试 32、64、128 等的层大小应该会提高找到与尝试尺寸 32、33、34 等相比,图层尺寸良好。

选择 2 的幂的主要原因是计算机科学的传统。如果没有司机可以选择其他特定数字,不妨选择 2 的幂。. . 但同样,出于类似的原因,您会看到研究人员选择 10、100 或 1000 的倍数作为“整数”。

一个相关因素:如果研究人员展示了某种新技术的结果,其中隐藏层大小被调整为例如 531、779、282 等,那么审查该工作的人会问一个明显的问题“为什么?” - 这样的数字可能意味着新技术不是通用的或需要大量的超参数调整,这两者都不会被视为积极特征。使用明显的“简单”数字会更好看。. .

有一个基于硬件的推理。矩阵乘法是深度学习中的核心计算之一。CPU 中的 SIMD 操作以批量大小发生,即 2 的幂。

以下是关于通过利用 SIMD 指令加速 CPU 上的神经网络的一个很好的参考:

提高 CPU 上神经网络的速度

您会注意到批量大小是 2 的幂。这是一篇关于使用 SIMD 指令实现神经网络的好论文。