我的神经网络应该有多深?

数据挖掘 神经网络 深度学习
2022-03-02 17:20:36

是否有任何启发式方法可以决定从哪里开始神经网络的层数?我用 7 层构建了一个有 40 个输入特征的模型,这需要大约 8 个小时才能完全训练,但现在我想添加一堆多项式特征,这会将我的网络的输入大小增加到几千个特征。既然有这么多的功能,我的网络会从拥有更多层中受益吗?如果是这样,特征数量的一个好的起点是什么?

以下是有关我的问题的一些信息:假设我有一组来自网站的使用数据。因此,如果用户某一天登录该网站,则计算当天的使用统计数据。我正在使用一些统计工具来汇总数据,我想预测用户在接下来的 60 天内是否会使用该网站。我的计划是尝试从这个摘要中设计所有可能的单项二次特征,并将这些信息输入 DNN。如果没有特征工程,我大约有 60 个不同的特征,但有了它,我至少会增加 3600 个特征。

3个回答

回答

是否有任何启发式方法可以决定从哪里开始神经网络的层数?

不,一般来说没有。网络的架构(包括深度)被认为是新的“特征工程”。目前,它更像是一门艺术而不是科学。任何超过 3 层的东西都值得考虑。

我想添加一堆多项式特征

您不需要像在传统机器学习中那样进行这种特征工程。如果你有一个足够宽和足够深的网络,你的网络应该能够自己“设计”这些功能。想想第一个隐藏层如何是输入特征的线性组合。第二个隐藏层是第一个隐藏层的线性组合。很明显,神经网络如何能够构建任何多项式特征本身。

建议

尝试直接使用原来的 60 个特征,从 3 层开始。鉴于网络的规模,在支持 GPU 的机器上训练应该花费不到 10 分钟。将您的结果与您的基准模型进行比较(您应该始终拥有一个基准模型)。玩弄隐藏的大小和层,冲洗并重复。

是的,我也完全同意Louis T的观点,因为他建议最好从 3 个隐藏层开始,看看模型的表现如何。

我想在他的回答中添加几件事:

我会建议你做功能engg。数据,以便您可以更好地理解它,而不是模型接管该任务,其中一个主要原因是有时机器无法提供与业务相关的一些有意义的功能,而另一个重要的事情是成本函数,随着模型复杂性的增加,成本函数将越多。

那么,您如何决定哪种模型会给您带来更好的结果:

例如,有 2 个网络(假设使用 NN 进行预测):

  1. Net-1:隐藏层 = 3 和 RMSE = 3.4500
  2. Net-2:隐藏层 = 4 和 RMSE = 3.4200

如果您仔细观察 Net-2 的 RMSE,但考虑到 WRT 到隐藏层的场景,我会选择 Net-1,因为我们正在考虑复杂性和成本函数来决定。

希望我的回答有帮助。

NN:神经网络

RMSE:均方根误差

不要担心神经网络的工程特征。他们的重点是他们自己很好地学习了这些特征。

简而言之,首先,确保您有一个定期检查的代表性验证集。然后,构建一个大到足以过拟合和一个小到可以欠拟合的网络。甜蜜点在中间的某个地方;发现基于验证损失的最小化。