当我第一次在研究生院学习神经网络的时候,我问我的教授是否有选择架构和超参数的经验法则。我期望他的回答是“嗯,有点,但不是真的”……毕竟,神经网络比其他机器学习算法有更多的选择!当我阅读 Ian Goodfellow, Yoshua Bengio, 和 Aaaron Courville的深度学习书时,我一直在思考这个问题,并决定在这本书中列出一份规则清单。事实证明,它们有很多……主要是因为它们可以完成很多类型的神经网络和任务。
有趣的是,许多这些经验法则并没有得到很好的确立-深度学习仍然是一个相对较新的活跃研究领域,所以下面列出的很多规则只是研究人员最近发现的。除此之外,这本书中还有很多领域,作者要么说(用更多的学术术语)“我们不知道这是为什么,但我们可以看到这是真的”或者“我们知道这不是最好的方法,但这是一个活跃的研究领域,我们目前还不知道更好的方法“。
如果可能的话,使用迁移学习。如果没有,并且要处理一个已经被广泛研究过的问题,那么从复制架构开始。
总是要early stopping
两种早期停止方法
在整个数据集上使用新的参数重新训练模型,在早期停止点达到与前一个模型相同的训练步骤时停止。
保持在早期停止时获得的参数,继续使用所有数据进行训练,当平均训练误差降到前一个早期停止点的训练误差以下时停止训练。
使用Dropout可能是个好主意
输入层用0.8的概率,隐藏层用0.5。
Dropout可能需要更大的网络,需要与更多的迭代训练。
ReLUs是理想的激活函数。当然它们还是存在缺陷,因此使用leaky或noisy ReLUs 可以获得性能增益,而代价是需要调整更多的参数。
要获得可接受的性能,每个类别至少需要5,000次观察。
使用GPU内存所能处理的批处理大小
具有动量和衰减学习率的随机梯度下降是一种较好的优化算法。