同上一篇,“优化”是指提高训练速度、降低训练时间 ,效果是指模型的评价指标结果。
- profile会是你的好朋友。知道时间消耗在哪,是优化的第一步。
- 较深的网络,因为梯度过度衰减,拟合速度会很慢,尤其在训练后期。深层网络模块,需要使用残差块连接输入和输出,把梯度传播到后方网络模块——门控残差连接更佳。
- RNN和它的嫡系兄弟LSTM和GRU的序列长度,是另一个方向的深度,且RNN们不支持在该方向上并行处理。如果不是处理持续增长的序列数据,请考虑TCN、Attention等可替代模块。
- 理性看待微调预训练模型,你的任务可能不需要那么大规模的模型;通用的预训练模型在垂直领域表现可能并不优秀。
- 一个设计良好的小型模型的效果,远胜设计一般的大型模型。这可能是整篇最重要一条。
- 在模型效果不能再提升时,优化几个超参数,再简单微调,也许可以把模型效果再提升一丢丢。
- 拟合速度很慢的模型,很可能不是一个设计良好的模型,很难或者不可能取得期望的效果。
- 池化层是免费(没有学习参数)的提取主要/平均特征的网络组件。
- 文档中的重要信息,可能很不起眼。浏览文档时,往往因为文档上太多不需要的信息,而漏掉重要的信息。
- 看起来“错误”的操作,可能并不影响结果。看起来“正确”的操作,可能导致模型效果意外下降。一切以最终结果为准。
- 训练/验证/测试的准确率可能没有任何意义。原因可能是:训练/验证/测试数据出现一定程度的数据倾斜;训练/验证/测试数据分布与生产数据分布差异较大。