【机器学习——防止过拟合方法】
原文地址:机器学习中防止过拟合的处理方法
为了防止过拟合,我们需要用到一些方法,如:提前终止(early stopping)、数据集扩增(Data augmentation)、正则化(Regularization)、Dropout等。
【提前终止】
对模型进行训练的过程即是对模型的参数进行学习更新的过程,这个参数学习的过程往往会用到一些迭代方法,如梯度下降(Gradient descent)学习算法。Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。
【数据集扩增】
在某些场景下的目标检测中,样本数量较小,导致检测的效果比较差,这时就需要进行数据扩增。数据集扩增即需要得到更多的符合要求的数据,即和已有的数据是独立同分布的,或者近似独立同分布的。一般有以下方法:
从数据源头采集更多数据
- 复制原有数据并加上随机噪声
- 重采样
- 根据当前数据集估计数据分布参数,使用该分布产生更多数据等
【正则化】
正则化方法是指在进行目标函数或代价函数优化时,在目标函数或代价函数后面加上一个正则项,一般有L1正则与L2正则等。
【L1正则】
L1正则是基于L1范数,即在目标函数后面加上参数的L1范数和项,即参数绝对值和与参数的积项,
其中C0 代表原始的代价函数,n是样本的个数,λ就是正则项系数,权衡正则项与C0 项的比重。后面那一项即为L1正则项。
【L2正则 】
L2正则是基于L2范数,即在目标函数后面加上参数的L2范数和项,即参数的平方和与参数的积项,即:
其中C0 代表原始的代价函数,n是样本的个数,与L1正则化项前面的参数不同的是,L2项的参数乘了1/2,是为了便于计算以及公式的美感性,因为平方项求导有个2,λ就是正则项系数,权衡正则项与C0 项的比重。后面那一项即为L2正则项。
【Dropout】
正则是通过在代价函数后面加上正则项来防止模型过拟合的。而在神经网络中,有一种方法是通过修改神经网络本身结构来实现的,其名为Dropout。该方法是在对网络进行训练时用一种技巧(trick),对于如下所示的三层人工神经网络:
对于上图所示的网络,在训练开始时,随机得删除一些(可以设定为一半,也可以为1/3,1/4等)隐藏层神经元,即认为这些神经元不存在,同时保持输入层与输出层神经元的个数不变,这样便得到如下的ANN:
然后按照BP学习算法对ANN中的参数进行学习更新(虚线连接的单元不更新,因为认为这些神经元被临时删除了)。这样一次迭代更新便完成了。下一次迭代中,同样随机删除一些神经元,与上次不一样,做随机选择。这样一直进行瑕疵,直至训练结束。
Dropout方法是通过修改ANN中隐藏层的神经元个数来防止ANN的过拟合。