过拟合概念
过拟合指的是训练误差小,测试误差大,训练误差和测试误差与模型复杂度的关系如下图所示。
防止过拟合的方法
early stopping、数据集扩增(Data augmentation)、正则化(Regularization)、Dropout
Early stopping
Early stopping是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。
求解最优化问题的基本方法是迭代算法。迭代算法是指采用逐步逼近的计算方法来逼近问题的精确解的方法。最优化方法有两种基本结构,分为线搜索方法和信頼域方法两种类型。
线搜索方法:对极小化问题,在一个算法中,我们先选定一个初始迭代点x0∈R^n, 在该迭代点处,确定一个使函数值下降的方向,再确定在这个方向上的步长,从而求得下一个迭代点,以此类推,产生一个迭代点列{xk},{xk}或其子列应收敛于问题的最优解。当给定的某种终止准则满足时,或者表明xk以满足我们要求的近似最优解的精度,或者表明算法已无力进一步改善迭代点,迭代结束。
Early stopping方法的具体做法是,在每一个Epoch结束时(一个Epoch集为对所有的训练数据的一轮遍历)计算validation data的accuracy,当accuracy不再提高时,就停止训练。一般的做法是,在训练的过程中,记录到目前为止最好的validation accuracy,当连续10次Epoch(或者更多次)没达到最佳accuracy时,则可以认为accuracy不再提高了。此时便可以停止迭代了(Early Stopping)。这种策略也称为“No-improvement-in-n”,n即Epoch的次数,可以根据实际情况取,如10、20、30……
数据集扩增
在数据挖掘领域流行着这样的一句话,“有时候往往拥有更多的数据胜过一个好的模型”。数据集扩增即需要得到更多的符合要求的数据,即和已有的数据是独立同分布的,或者近似独立同分布的。一般有以下方法:
a.从数据源头采集更多数据
b.复制原有数据并加上随机噪声
c.重采样
d.根据当前数据集估计数据分布参数,使用该分布产生更多数据等
正则化方法
正则化方法是指在进行目标函数或代价函数优化时,在目标函数或代价函数后面加上一个正则项,一般有L1正则与L2正则等。
Dropout
在神经网络中,有一种方法是通过修改神经网络本身结构(在训练开始时,随机得删除一些(可以设定为一半,也可以为1/3,1/4等)隐藏层神经元,即认为这些神经元不存在,同时保持输入层与输出层神经元的个数不变)来实现的,其名为Dropout。
https://blog.csdn.net/heyongluoyao8/article/details/49429629