在使用神经网络(TensorFlow:Deep Neural Regressor)时,当您将训练数据量从样本增加到整个数据(比如 10 倍大的数据集)时,您应该对模型架构(更深/更宽)、学习率进行哪些更改和一般的超参数?
进行这些更改涉及多少试验和错误多少启发式逻辑?
在使用神经网络(TensorFlow:Deep Neural Regressor)时,当您将训练数据量从样本增加到整个数据(比如 10 倍大的数据集)时,您应该对模型架构(更深/更宽)、学习率进行哪些更改和一般的超参数?
进行这些更改涉及多少试验和错误多少启发式逻辑?
我认为您不应该对模型定义进行太大更改。
但是,您应该考虑在完整数据集上进行训练所需的时间。如果花费的时间太长并且您仍处于测试阶段,您希望减少 epoch 的数量以更快地获得结果并相应地对模型进行更改。
我建议绘制所有指标并尝试了解趋势是积极的还是消极的。如果是肯定的,那么您所做的更改当然是正确的!
然后,一旦你对超参数感到满意,就放个赞,让epochs=100模型训练一整夜,然后再次绘制学习曲线并决定何时更早停止,或者使用early_stopping.
DNN 的深度和宽度用于建模复杂性,而不是数据的大小。因此,如果您已经有足够的数据来充分训练您的模型,那么增加训练数据的大小不需要您进行任何更改,除非可能减少 epoch 的数量。例如,要对 MNIST 数据集的数据复杂性进行建模,您不需要数百层,即使您需要训练数十亿张图像。
但是,在某些情况下增加深度和宽度是有意义的:如果您首先没有大量数据,因此您创建了一个小型 DNN 来防止过度拟合,这不能充分模拟数据的复杂性,并且然后你会得到大量的额外数据,增加 DNN 的深度和/或宽度是有意义的。
一个好的点是遵循规则:
您的网络应该能够过度拟合您的训练数据。当你不能过度拟合你的训练数据时,你应该增加你的深度/宽度。但很难说有多少,它有时更像是一门艺术而不是一门科学。
当然,这并不意味着您应该过度拟合您的数据。