偏差(bias):偏差衡量了模型的预测值与实际值之间的偏离关系。通常在深度学习中,我们每一次训练迭代出来的新模型,都会拿训练数据进行预测,偏差就反应在预测值与实际值匹配度上。
方差(variance):方差描述的是训练数据在不同迭代阶段的训练模型中,预测值的变化波动情况(或称之为离散情况)。从数学角度看,可以理解为每个预测值与预测均值差的平方和的再求平均数。通常在深度学习训练中,初始阶段模型复杂度不高,为低方差;随着训练量加大,模型逐步拟合训练数据,复杂度开始变高,此时方差会逐渐变高。
这是一张常见的靶心图。可以想象红色靶心表示为实际值,蓝色点集为预测值。在模型不断地训练迭代过程中,我们能碰到四种情况:
低偏差,低方差:这是训练的理想模型,此时蓝色点集基本落在靶心范围内,且数据离散程度小,基本在靶心范围内;
低偏差,高方差:这是深度学习面临的最大问题,过拟合了。也就是模型太贴合训练数据了,导致其泛化(或通用)能力差,若遇到测试集,则准确度下降的厉害;
高偏差,低方差:这往往是训练的初始阶段;
高偏差,高方差:这是训练最糟糕的情况,准确度差,数据的离散程度也差。
一般来说,随着模型复杂度的增加,方差会逐渐增大,偏差会逐渐减小。随着模型的不断训练,准确度不断上升,自然偏差逐渐降低。但方差的变化趋势却不易理解,训练初始阶段是低方差,训练后期易是高方差。方差的计算公式为每个样本的预测值与总体样本的预测均值差的平方和再求平均数,可以表现为一种波动变化,低方差意味低变化,高方差意味高变化。
模型(蓝线)对训练数据(红点)拟合度很差,是高偏差,但蓝线近似线性组合,其波动变化小,套用数学公式也可知数值较小,故为低方差,这个阶段也称之为欠拟合(underfitting),需要加大训练迭代数。
模型的拟合度很好,是低偏差,但蓝线的波动性非常大,为高方差,这个阶段称之为过拟合(overfitting),问题很明显,蓝线模型很适合这套训练数据,但如果用测试数据来检验模型,就会发现泛化能力差,准确度下降。
这是一个恰好的状态,既能跟训练数据拟合,又离完美拟合保持一定距离,模型更具通用性,用测试数据验证会发现准确度也不错。
下面来看看训练集误差值和验证集误差值与训练集样本大小 的关系。
随着训练样本集大小的增加,训练误差增大验证误差减小,二者缓慢变化但不收敛,验证误差始终略大于训练误差,可以预见的是随着样本规模继续增大,验证误差将进一步减小。
这是高偏差欠拟合的状态,两条曲线的变化趋势基本相同,但是它们会快速收敛到相近的值,并且基本上不会发生变化,随着训练集规模增大也不变。
与之前的曲线变化趋势类似,但两条曲线之间会存在一个非常明显的差距,验证集上的误差明显大于训练集,但是随着训练样本规模进一步增大,这个差距可能会缩小,说明过拟合现象可能会被数据样本规模的扩大而缓解。
发生欠拟合现象时,缩小正则化表达式中的系数λ,或者直接设为0.
发生过拟合现象时,增大正则化表达式中的系数λ。