课程链接
第二章 Deep Learning
模型训练general guidence
ML framework
General guide
具体来说,当在训练集上的loss 大的时候,有两种可能,一种是model bias, 一种是optimization的问题。
针对model bias, 一般是模型比较简单,想要找的function不咋模型包含的范围内。解决方法就是让模型变的更加复杂,例如增加feature 数量,或者使用更加复杂的网络。
优化问题一般是优化方法没法找到或接近最优解。
判断是优化问题还是model bias可以通过对比的方法,首先利用简单容易优化的模型训练,如果更加复杂的模型没有得到更小的training loss,那么就为optimization 问题。
当训练数据loss 小,而testing data loss 大,有两种可能,一种是overfitting,一种是mismatch
overfit 就是模型过度拟合训练集上的数据,因此和真实的数据分布有比较大的差距,导致train loss 很小或接近于0,test loss很大。
解决overfitting最好的方法就是增加数据量,但是实际中不太现实,可以通过data augmentation的方式增加数据量。当然也可以通过对模型增加约束实现。
training loss 小,testing loss 大还有一种可能,就是test data和training data 分布不一致。
optimization 问题,模型的优化没有到loss最小的点就停止了,这样的点包括local minima(局部最小点)及saddle point(鞍点)。局部最小点相比较于鞍点更难跳出。在实际的训练中,由于参数很多,在高维空间中更多可能遇到saddle point。判断是saddle point还是local minima,可以使用二阶Hassian矩阵判定,当Hassian矩阵的特征值都为正的时候为local minima, 都为负的时候为local max, 有正有负为saddle point.
实验中batchsize是一个需要选择的参数,large batch可以更快的完成一个epoch的训练,但是small batch在optimization和genralization上会更好。使用small batch可能避免梯度为0的点。
当然也可以利用动量的方式避开梯度为0的点。原始的梯度下降法利用梯度的方向作为优化的方向,梯度加上动量的方法不仅考虑了当前位置的梯度,也考虑了之前一步的movement。
adaptive learning rate
有时候训练停止,但是梯度并不为0,因此需要自适应的学习率。
RMSProP, 考虑之前的梯度累积的加权平方根。AdaGrad中分母为之前所有梯度的平方根。
当然也可以动态调整学习率