偏差-方差平衡(bias-variance tradeoff)
以下来自西瓜书的经典论述:假设我们有很多个数据集
D
D
D
,数据集之间相互独立, 都可以作为模型
F
F
F
的输入, 每个数据集都有对应的标记
y
D
y_D
y
D
, 标记可能包含着噪声
ϵ
\epsilon
ϵ
, 也即
y
D
y_D
y
D
与真实值
y
y
y
之间的差异。据此, 偏差
v
a
r
var
v
a
r
被定义为模型
F
F
F
预测输出的期望
E
(
F
D
)
E(F_D)
E
(
F
D
)
(可以理解为模型在所有数据集上预测值的均值)
与真实标记之间的差异
,
方差被定义为模型
F
F
F
在各个数据集上的预测输出与期望
E
(
F
D
)
E(F_D)
E
(
F
D
)
之间的差异的期望。
进一步讲, 如果独立数据集的数量是无限的,那么
期望
E
(
F
D
)
E(F_D)
E
(
F
D
)
就近似描绘了算法模型的预测期望或者表达能力
,我们说
一个算法趋向于具有高偏差,意味着这个算法表示能力较弱,拟合能力较差,但是这一算法往往在各个数据集上的表现都相差不大,具有较低的方差
。另一方面,如果模型在一些数据集上工作的很好(例如训练集), 但在另一些数据集(例如测试集)表现不佳, 这就会导致高方差,能够表现好这说明算法表达能力很强,或者说灵活性较强, 而表现不稳定就说明泛化能力较差。
总结起来,依据偏差-方差分解(不用知道是什么)可知,泛化误差是噪声加方差再加上偏差。随着训练程度的增长,模型的表达能力逐渐提高,那么偏差就会逐渐减小,同时模型的不稳定性逐渐提高,那么方差就会逐渐增大,此时泛化误差曲线可能呈
碗状曲线
,也即从开始很高逐渐降低直到最低点接着又开始上升。
因此在模型表达能力足够强时,我们需要在合适的时机停止训练(dropout),使其在具备较好的表达能力的同时泛化能力也不差
。