更新流程↓
Task01:赛题理解
Task02:数据读取与数据扩增
Task03:字符识别模型
Task04:模型训练与验证
Task05:模型集成
你是真的狗?
婧妹
正 盗 的 光
比赛链接
文章目录
0. 简介
一个成熟合格的深度学习训练流程至少具备以下功能:
- 在训练集上进行训练,并在验证集上进行验证。
- 模型可以保存最优的权重,并读取权重。
- 记录下训练集和验证集的精度,便于调参。
本章将从构建验证集、模型训练和验证、模型保存与加载和模型调参四个部分进行介绍讲解。
1. 构建验证集
在机器学习模型(特别是深度学习模型)的训练过程中,模型是非常容易过拟合的。深度学习模型在不断的训练过程中训练误差会逐渐降低,但测试误差的走势则不一定。
在模型的训练过程中,模型只能利用训练数据来进行训练,模型并不能接触到测试集上的样本。因此模型如果将训练集学的过好,模型就会记住训练样本的细节,导致模型在测试集的泛化效果较差,这种现象称为过拟合(Overfitting)。与过拟合相对应的是欠拟合(Underfitting),即模型在训练集上的拟合效果较差。
1.1. 过拟合与欠拟合
- 拟合(Fitting):就是说这个曲线能不能很好的描述某些样本,并且有比较好的泛化能力。
- 过拟合(Overfitting):模型把数据学习的太彻底,以至于把噪声数据的特征也学习到了,这样就会导致在后期测试的时候不能够很好地识别数据,即不能正确的分类,模型泛化能力太差。
- 欠拟合(UnderFitting):模型没有很好地捕捉到数据特征,不能够很好地拟合数据,或者是模型过于简单无法拟合或区分样本。
1.1.1. 防止过拟合方法介绍
防止过拟合方法主要有:
-
正则化方法。正则化方法包括L0正则、L1正则和L2正则,而正则一般是在目标函数之后加上对于的范数。但是在机器学习中一般使用L2正则。
-
数据增强(Data augmentation),增大数据的训练量,还有一个原因就是我们用于训练的数据量太小导致的,训练数据占总数据的比例过小。
-
重新清洗数据,导致过拟合的一个原因也有可能是数据不纯导致的,如果出现了过拟合就需要我们重新清洗数据。
-
提前终止法(Early stopping),对模型进行训练的过程即是对模型的参数进行学习更新的过程,这个参数学习的过程往往会用到一些迭代方法,如梯度下降(Gradient descent)学习算法。提前终止法便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。
-
丢弃法(Dropout)。这个方法在神经网络里面很常用。丢弃法是ImageNet中提出的一种方法,通俗一点讲就是丢弃法在训练的时候让神经元以一定的概率不工作。具体看下图:
1.1.1.1. L1正则化
可以参考L1和L2正则化(岭回归和LASSO)进行了解。
在原始的代价函数后面加上一个L1正则化项,即全部权重w的绝对值的和,再乘以 λ n \frac{\lambda }{n} nλ (这里不像L2正则化项那样,须要再乘以1/2)。
C = C 0 + λ n ∑ w ∣ w ∣ C=C_{0}+\frac{\lambda }{n} \sum_{w}^{}|w| C=C0+nλw∑∣w∣
先计算导数:
∂ C ∂ w = ∂ C 0 ∂ w + λ n s g n ( w ) \frac{\partial C}{\partial w}=\frac{\partial C_{0}}{\partial w} +\frac{\lambda }{n}sgn(w) ∂w∂C=∂w∂C0+nλsgn(w)
上式中 s g n ( w ) sgn(w) sgn(w)表示 w w w的符号,那么权重 w w w的更新规则为:
w → w ′ = w − η λ n s g n ( w ) − η ∂ C 0 ∂ w w\rightarrow {w}'=w-\frac{\eta \lambda }{n}sgn(w)-\eta\frac{\partial C_{0}}{\partial w} w→w′=w−nηλsgn(w)−η∂w∂C0
比原始的更新规则多出了 η ∂ C 0 ∂ w \eta\frac{\partial C_{0}}{\partial w}