翻译自Andrej Karpathy blog
处方
在实践中,我们从简单到复杂构建模型,并且在每一步我们对将要发生的具体事情进行预测,通过实验进行验证并且通过调查发现问题。一定要防止同时引入许多未经验证的猜想,否则总是会在查找问题。一开始,要使用较小的学习率,并每一步都要评估测试集上的表现。
1 不要一开始写代码
我习惯花费很多时间去观察样本,了解数据的分布并寻找模式。我们的大脑擅长做这些。我会寻找数据的不平衡和差异,我会注意分类数据的过程,这个过程暗示了各种可能的框架。局部的特征是否足够,我们是否需要全局的文本呢?有多少变化,采取了什么样的形式?什么变化是虚假的,可以预处理?空间位置是否重要,或者我们是否想要将其平均化?细节有多重要,我们可以多大程度上对数据进行缩减采样?有多少标签是噪声?
此外,由于神经网络是原始数据的压缩(编译),因此能够查看网络(错误)预测的并了解他们的来源。如果你的网络给你的预测看起来与在数据中不一致,那么就会有所收获。
一旦从数据中发现规律,可以编写一些代码对他们进行搜索、过滤、排序。把数据可视化能帮助我们发现异常值,而异常值总能揭示数据的质量或预处理中的一些错误。
2 设置端到端的训练评估框架