偏差与方差

问题引入

Q:目标为构建一个误差在 5%以内的猫 狗二分类识别器,目前的训练集错误率为 15%,开发集错误率为 16%,这时候应 该怎么办?
A1:通过添加层/神经元数量来增加神经 网络的大小。
A2:增加训练集的数据量。

概念定义

• 偏差(bias): 度量了学习算法的期望预测与真实结果的偏离程度,即刻画了算法本身的拟合能力,偏差越大,表明越偏离真实值。
• 方差(variance): 度量了同样大小训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影 响,也就可以理解为衡量模型的稳定性(鲁棒性,泛化能力)。
偏差与方差详解
目标为构建一个误差 5%以内的猫狗二分类识别器,目前的训练集错误 率为15%,开发集错误率为16%。
• 偏差(bias):算法在训练集上的错误率,在本例中是 15%。
• 方差(variance):算法在开发集上的表现比训练集上差多少。在本例中,开发集表现比训练集差 1%。
• 误差 = 偏差 + 方差
• 粗略地说,偏差指的是算法在大型训练集上的错误率;方差指的是算法在测试集上的表现低于训练集的程度

偏差方差举例

eg1:
• 训练错误率 = 1%
• 开发错误率 = 11%
方差为 10%(=11%-1%),很高,泛化能力弱,这也被叫做过拟合 (overfitting)。
• 训练错误率 = 15%
• 开发错误率 = 16%
可知偏差为 15%,方差为 1%。该分类器的错误率高,没有很好地拟合训练集,但它在开发集上的误差不比在训练集上的误差高多少。因此,该 分类器具有较高的偏差(high bias),该算法欠拟合(underfitting)。
eg2:
• 训练错误率 = 15%
• 开发错误率 = 30%
• 该分类器同时有高偏差和高方差(high bias and high variance),在训练集上表现得很差,因此有较高的偏差,在开发集上表现更差,方差 同样较高(由于该分类器同时过拟合和欠拟合,过拟合/欠拟合术语很 难准确应用于此)。
• 训练错误率 = 0.5%
• 开发错误率 = 1%
• 算法棒棒的

偏差

• 假设现有一个珍稀动物识别系统,任务难度大,即便由人类来区分, 也存在14%的错误率(最优错误率)。
现在算法达到:
• 训练错误率 = 15%
• 开发错误率 = 30%
可以将训练错误率(偏差)分解如下:
• 最优错误率(“不可避免偏差”):14%,可以将其认为是学习算法的偏差“不可避免”的部分。
• 可避免偏差:1%。即训练错误率和最优误差率之间的差值。
• 偏差 = 最佳误差率(“不可避免偏差”)+ 可避免的偏差
• 如何才能知道最优错误率是多少呢? 对于人类擅长的任务,例如图片识别或音频剪辑转录,测评人为标签相对于训练集标签的精度,这将给出最优错误率的估计。 如果是一项人类也很难解决的问题(例如 股价预测,世界局势预测等),很难估计最优错误率

减少可避免偏差的技术

• 加大模型规模(例如神经元/层的数量)
• 根据误差分析结果修改输入特征
• 减少或者去除正则化(L2 正则化,L1 正则化,dropout)
• 修改模型架构(比如神经网络架构)

减少方差的技术

• 添加更多的训练数据
• 加入正则化(L2 正则化,L1 正则化,dropout)
• 加入提前终止(Early stopping,例如根据开发集误差提前终止梯度下降)
• 通过特征选择减少输入特征的数量和种类
• 减小模型规模(比如神经元/层的数量)

偏差和方差间的权衡

目前,在大部分针对学习算法的改进中,有一些能够减少偏差,但代价是增大方差,反之亦然。于是在偏差和方差之间就产生了“权衡”。
• 能够获取充足的数据
• 并且可以使用非常大的神经网络(深度学习) 有更多的选择可以在不损害方差的情况下减少偏差,反之亦然。
如果你选择了一个非常契合任务的模型架构,那么你也可以同时减 少偏差和方差。只是选择这样的架构可能有点难度

相关文章: