在应用机器学习算法时,实践方法论能够帮助我们更好地训练模型。
1.模型偏差
模型偏差可能会影响模型训练。举个例子,假设模型过于简单,即使找到的最好的函数也不能满足需求。这种情况就是想要在大海里面捞针(一个损失低的函数),结果针根本就不在海里。
可以通过增加特征和网络层数来丰富模型。
2.优化问题
模型的灵活性已经够了,只是优化梯度下降不给力,它没办法把针捞出来。
判断是优化问题和还是模型偏差,可以使用多个模型来判断模型够不够大。
可以先跑一些比较小的、比较浅的网络,或甚至用一些非深度学习的方法,比如线性模型、支持向量机(Support Vector Machine,SVM),SVM 可能是比较容易做优化的,它们比较不会有优化失败的问题。
3.过拟合
模型太灵活,导致训练集损失小而测试集损失大。
解决方法:
1.增大数据,通过数据增强等方法。
2.对模型添加限制
- 给模型较少参数。深度学习中可减少神经元数量或者让模型共用参数。
- 用比较少的特征,比如原来输入为三天,改为两天。
- 早停(early stopping)、正则化(regularization)和丢弃法(dropoutmethod)。
但是不能给太多限制,不然会造成模型偏差。
4.交叉验证
比较合理选择模型的方法是把训练的数据分成两半,一部分称为训练集(training set),一部分是验证集(validation set)。
如图所示为k折交叉验证,将数据分为n等分,一部分当作训练集,一部分当作验证集,重复多次。然后用多个模型都用来训练取平均值较小的。
5.不匹配
不匹配原因是训练集和验证集分布不同。