实践方法论
背景:如果训练集结果不好:在确定它学起来后,训练数据的损失很大,显然它在训练集上面也没有训练好。
接下来分析一下在训练集上面没有学好的原因。
2.1 模型偏差
如果说损失函数找不到损失最小的方向,可以利用更多的数据设计一个更加灵活的模型·。
2.2优化问题
梯度下降寻找优化的结果函数没有找到。
2.2.2判断
到底是因为模型的灵活性不够,海里面没有针。还是模型的灵 活性已经够了,只是优化梯度下降不给力,它没办法把针捞出来
- 通过比较不同的模型来判断模型现在到底够不够大,先找个简单的模型再找个深的模型,如果得到的结果差距不大,则代表说优化有问题,梯度下降不给力。
- 如果训练数据上面的损失小,测试数据上的损失大,可能是真的过拟合。
2.3过拟合
包容性低,条件卡的比较死,解决方向:
- 数据增强(增加数据)
2.给模型一些限制(如果是深度学习的话,就给它比较少的神经元的数量,全连接网络(fully-connected network)其实是一个比较有灵活性的架构, 而卷积神经网络(Convolutional Neural Network,CNN)是一个比较有限制的架构。):
• 用比较少的特征,本来给 3 天的数据,改成用给两天的数据,其实结果就好了一些。
• 还有别的方法,比如早停(early stopping)、正则化(regularization)和丢弃法(dropout method)。
- 给模型太大的限制,可能有模型偏差的问题。
2.4交叉验证
数据分成两半,一部分称为训练集(training set), 一部分是验证集(validation set)。k 折交叉验证就是先把训练集切成 k 等份。
2.5不匹配
出现了反常的情况。这种情况应该算是另外一种错误的形式,这种 错误的形式称为不匹配(mismatch)
我们可能要对训练集跟测试集的产生方式有一些理解,才能判断它是不是遇到了不匹配的情况。看图理解。