构建策略的必要性
参数众多:
- 数据集分布和大小
- 训练时间
- 优化算法
- 网络大小和结构(包括hidden units)
- 正则化
- 激活函数
正交化策略
深度学习超参数调试中,每调整一个参数,保持其他参数不变,对应得到某一性能改变,被称作正交化
需要对四种情况进行分析:
- 是否存在bias,即Training Error是否较大
- 是否存在variance,即在开发集(或验证集)上的效果是否与训练集的效果出入较大
- 是否在测试集上的效果与在开发集上效果出入较大
- 是否在实际应用中与模型测试效果出入较大
这四种情况分别对应以下正交化策略:
- bias:更复杂网络、更长训练时间、优化算法
- variance: 更多训练数据、正则化
- 测试结果与开发集上的效果差别大:增加开发集数据
- 实际效果与测试结果差别大:更换cost function,使用更符合实际的验证集
单一指标策略
- 使用单一性能指标对不同模型在同一个benchmark上进行筛选,常用的分类指标包括F1,AUC等
- 另外在信息检索领域还有其他性能指标,包括MRR,MAP等等。
开发集与测试集
- 开发集和训练集分布应当尽量一致,否则即使通过tune,在开发集上达到最佳效果,仍然不能再测试集上取得满意结果。
- 可根据数据量划分数据集,数据量较大时,可以划分99%的数据集用于训练
可避免偏差
训练错误与人类错误之间的差距被称为可避免偏差
实际操作中,需要比较可避免偏差和方差,来选择合适的机器学习优化策略
误差分析
如果观察到深度学习模型对于某类样本进行了错误的分类,那么是否有必要针对这类样本对模型进行优化呢?
答案是首先进行误差分析。也就是说,针对深度学习模型错误分类的测试样本进行手动分析、分类,查看这类错误在所有错误分类中的占比,从而决定深度学习模型的优化方向。
总结一句话就是,抓住主要矛盾。
清洗误标记数据
- 误标记数据,基本不会影响到训练效果。但误标记数据对于模型评估可能有显著影响
- 此时需要对模型分类结果进行误差分析,在错误分类的数据中,查看误标记数据所占比例,从而决定是否清洗
训练集和测试集分布不同
-
混合大量收集数据与一部分真实数据,构建训练集,将需要分析的数据作为开发集和测试集,构建模型并进行评估。
-
数据分布不同,可能导致training error与dev error有较大差异,此时需要判断是否是由于数据集分布不同导致的差异
迁移学习
- Pretrain:在large data set上进行训练得到模型
- Fine tune: 在需要进行研究的数据上,对Pretrain的模型进一步训练参数,此时可以固定某些层的参数。
多任务学习
满足以下条件,可以进行多任务学习:
- 多个任务都能利用相同的特征集合
- 不同任务的数据量基本相似
- 对于所有任务都能训练足够大的网络
端到端学习
由深度学习算法自动学习raw data中的特征的方法,不需要人工设计特征