实践方法论
先检查训练数据的损失->看测试的结果->分析在训练集上没有学好的原因
模型偏差
- 增加模型的灵活性:增加更多特征,可以设一个更大的模型
优化问题
梯度下降优化存在的问题:
- 卡在局部最小值的地方,无法找到一个真的可以让损失很低的参数
如果训练损失大:
- 先判断是 模型偏差还是 优化
- 模型偏差-> 将模型变大
- 记录训练数据损失,确定优化有没有问题。
- 模型够大->看测试有没有问题
过拟合
过拟合:训练损失小,测试损失大
解决过拟合的问题:
- 增加训练集:增多训练集之后限制模型的灵活性
- 数据增强:根据问题的理解创造出新的数据。
- 要根据对数据的特性以及要处理的问题的理解,来选择合适的数据增强的方式。
- 数据增强:根据问题的理解创造出新的数据。
- 给模型限制:让模型不要有过大的灵活性
- 给模型比较少的参数。给它较少的神经元数量,或让模型共用参数。
- 全连接网络:比较有灵活性的架构。可以找出来的函数所形成的集合比较大
- 卷积神经网络:比较有限制的架构。形成的集合比较小。
- 其他方法
- 早停
- 正则化
- 丢弃法
- 给模型比较少的参数。给它较少的神经元数量,或让模型共用参数。
测试集需分为 公开和私人:
假设所有的数据都是公开,就算是一个一无是处的模型,它也有可能在公开的数据上面得到好的结果。
交叉验证
将训练的数据分为两部分,一部分为 训练集 一部分为 验证集。
在训练集上训练出的模型使用验证集来衡量分数,在根据分数来挑选结果。
根据过去的经验,就在公开排行榜上排前几名的,往往私人测试集很容易就不好。
K折交叉验证:先把训练集切成k等份。再进行排列组合分k次测试使一部分为训练集一部分为验证集来筛选结果。
不匹配
概念:根据过去进行的对未来的预测与实际结果出现了过大的偏差。
也即训练集和测试集的分布不同