如何缩短神经网络的开发时间?

人工智能 神经网络 训练 长短期记忆 超参数优化 时代
2021-10-23 03:05:48

我正在开发用于序列标记的 LSTM。在开发过程中,我对系统进行了各种更改,例如,添加新功能、更改隐藏层中的节点数等。每次更改后,我都会在开发数据集上使用交叉验证来检查准确性。

目前,在每次检查中,我使用 100 次迭代来训练系统,这需要大量时间。所以我想,也许,在开发过程中,我只能使用例如 20 次迭代。然后,每次检查都会更快。找到最佳配置后,我可以切换回 100 次迭代以获得更好的精度。

我的问题是:这种考虑是否正确?更具体地说,如果模型 A 在 20 次训练迭代中优于模型 B,那么 A 在 100 次训练迭代中是否也可能优于 B?

或者,有没有更好的方法来加快开发过程?

2个回答

你的情况很常见。

最直接的方法是随机对数据进行二次抽样。除非您的数据或模型有很大的偏差,否则您与较小数据集的性能应该是可比的。准确性可能较低,但目的是进行快速的完整性检查。

这可能适用于您的情况,但不一定正确,取决于网络在迭代中经过多少数据。您应该能够通过做一个小的改变和训练直到 100 次迭代来测试这一点,看看性能是否有显着变化,以及是否可以从第 20 次迭代中预测出来。

另一种可能对您有用的方法是预加载网络的较低层(如果您有多个层)。例如,如果您有 5 层并且正在对最后 2 层进行更改,则可以使用先前训练的权重预加载底部 3 层。这应该会减少需要进行的训练量,因为您的网络已经可以识别问题的一些主要特征。