深度学习框架
一、设定训练集与测试集
训练集(Training set):
{
(
x
1
,
y
^
1
)
,
(
x
2
,
y
^
2
)
,
…
(
x
N
,
y
^
N
)
}
\left \{ \left(x^{1},\hat{y}^{1}\right), \left(x^{2},\hat{y}^{2}\right),\dots \left(x^{N},\hat{y}^{N}\right)\right \}
{(x1,y^1),(x2,y^2),…(xN,y^N)}
测试(Testing set):
{
x
N
+
1
,
x
N
+
2
,
…
x
N
+
M
}
\left \{ x^{N+1},x^{N+2},\dots x^{N+M}\right \}
{xN+1,xN+2,…xN+M}
和训练数据相比,测试数据没有对应的y。
二、模型训练基本问题
1. 模型偏差(Model bias):
指大海捞针但没有针的情况。
原因: 模型过于简单缺乏弹性,无论怎样优化都无法更好贴合真实值。
解决方法: 重新设计模型,让模型更具弹性。
1. 增加输入的特征
2. 设置更多神经节点、学习层数
2. 优化问题(optimization issue)
指大海捞针但找不到针的情况。
原因: 在梯度下降过程中没有找到全局最优解。
优化问题可以分成很多详细情况,需要具体分析才能具有针对性地解决。
当损失不够低的时候如何判断是模型偏差还是优化问题? 增加神经网络的学习层数,看看损失的变化。如果加深层数之后损失变大,那么属于优化问题。
3. 过拟合(Overfitting)
指训练过程中损失小,实际过程中损失大的情况。不要给模型太多限制,如果限制太多,就会产生模型偏差影响拟合。过拟合可以通过收集更多资料来克服。
3.1 过拟合的解决办法:
1. 减少参数或者共享参数(Less parameter or share parameter)
2. 减少提供的特征数量(Less feature)
3. 早停(Early stopping)
4. 正则化(Regularisation)
5. 丢弃法(Dropout)
4.不匹配(Missmatch)
指训练集和测试集的分布不同,不管如何提升训练次数,模型都不会有更好表现的情况。
解决方法:需要对训练集以及测试集的数据来源有一定理解,才能更好地选择对应的训练集。
三、模型训练基本流程
四、模型训练评估方法
1.交叉验证法(Cross-validation)
复杂模型:包含的特征以及参数多
随着模型复杂程度增加,测试数据时的损失会呈现U型曲线,一开始会降低,到达最低点后反而增长,所以我们需要筛选出一个最优的复杂程度来让模型更好拟合真实数据。
从训练集中拿出10%的数据做验证集,用训练数据训练完模型之后拿这10%的数据对模型的MSE进行验证。这样得到的分数比较能真实反映当前模型在私人测试集上的测试结果。
2. N折交叉检验法(N-fold cross validation)
当划分的验证集数据可能出现特殊情况下时,可以使用这个方法。
1. 把数据等分成N份
2. 每一份数据轮流当作验证集,其余当成训练集
3. 针对不同模型,分别用这N种数据集组合跑过得到不同MSE
4. 把每个模型获得的所有MSE都平均起来,各模型之间进行比较,选择Avg. MSE最小的模型
5. 选出的模型用于所有训练集训练之后,最终用于测试集