机器学习中的 Error(误差)、Bias(偏差)、Variance(方差)的区别和联系?

机器学习中的 Error(误差)、Bias(偏差)、Variance(方差)的区别和联系?

链接:https://www.zhihu.com/question/27068705/answer/82132134

首先明确一点,BiasVariance是针对Generalization(一般化,泛化)来说的。

在机器学习中,我们用训练数据集去训练(学习)一个model(模型),通常的做法是定义一个Loss function(误差函数),通过将这个Loss(或者叫error)的最小化过程,来提高模型的性能(performance)。然而我们学习一个模型的目的是为了解决实际的问题(或者说是训练数据集这个领域(field)中的一般化问题),单纯地将训练数据集的loss最小化,并不能保证在解决更一般的问题时模型仍然是最优,甚至不能保证模型是可用的。这个训练数据集的loss与一般化的数据集的loss之间的差异就叫做generalization error。

generalization error又可以细分为Bias和Variance两个部分。
首先如果我们能够获得所有可能的数据集合,并在这个数据集合上将loss最小化,这样学习到的模型就可以称之为“真实模型”,当然,我们是无论如何都不能获得并训练所有可能的数据的,所以“真实模型”肯定存在,但无法获得,我们的最终目标就是去学习一个模型使其更加接近这个真实模型。

biasvariance分别从两个方面来描述了我们学习到的模型与真实模型之间的差距。

Bias是 “用所有可能的训练数据集训练出的所有模型的输出的平均值” 与 “真实模型”的输出值之间的差异;Variance则是“不同的训练数据集训练出的模型”的输出值之间的差异。

这里需要注意的是我们能够用来学习的训练数据集只是全部数据中的一个子集。想象一下我们现在收集几组不同的数据,因为每一组数据的不同,我们学习到模型的最小loss值也会有所不同,当然,它们与“真实模型”的最小loss也是不一样的。

假设我们现在有一组训练数据,需要训练一个模型(基于梯度的学习,不包括最近邻等方法)。在训练过程的最初,bias很大,因为我们的模型还没有来得及开始学习,也就是与“真实模型”差距很大。然而此时variance却很小,因为训练数据集(training data)还没有来得及对模型产生影响,所以此时将模型应用于“不同的”训练数据集也不会有太大差异。

而随着训练过程的进行,bias变小了,因为我们的模型变得“聪明”了,懂得了更多关于“真实模型”的信息,输出值与真实值之间更加接近了。但是如果我们训练得时间太久了,variance就会变得很大,因为我们除了学习到关于真实模型的信息,还学到了许多具体的,只针对我们使用的训练集(真实数据的子集)的信息。而不同的可能训练数据集(真实数据的子集)之间的某些特征和噪声是不一致的,这就导致了我们的模型在很多其他的数据集上就无法获得很好的效果,也就是所谓的overfitting(过学习)

因此,在实际的训练过程中会用到validation set,会用到诸如early stopping以及regularization等方法来避免过学习的发生,然而没有一种固定的策略方法适用于所有的task和data,所以bias和variance之间的tradeoff应该是机器学习永恒的主题吧。

最后说一点,从bias和variance的讨论中也可以看到data对于模型训练的重要性,假如我们拥有全部可能的数据,就不需要所谓的tradeoff了。但是既然这是不现实的,那么尽量获取和使用合适的数据就很重要了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Bias Variance Dilemma,即偏差方差困境,是机器学习的一个重要概念。在训练模型时,我们希望模型能够很好地拟合训练数据,同时也要具有很好的泛化能力,即能够对未见过的数据进行准确的预测。但是,在实际应用,模型可能会出现两种问题,即偏差方差偏差指的是模型对训练数据的拟合程度不够好,无法很好地捕捉数据的关系。而方差则指的是模型过度拟合了训练数据,导致对未见过的数据的预测准确度下降。 为了更好地理解偏差方差,我们可以将测试误差分解为偏差方差之和的形式: $Error(x) = Bias^2(x) + Variance(x) + \epsilon$ 其,$Error(x)$ 表示在输入为 $x$ 时的测试误差,$Bias(x)$ 表示模型预测结果与真实结果之间的偏差,$Variance(x)$ 表示模型预测结果的方差,$\epsilon$ 表示噪声的影响。 推导过程如下: 首先,我们有一个真实的数据分布 $y=f(x)+\epsilon$,其 $f(x)$ 表示真实的关系,$\epsilon$ 表示噪声。 假设我们使用一个模型 $h(x)$ 来拟合真实的数据分布,那么预测结果为 $\hat{y}=h(x)$。 预测结果与真实结果之间的误差为: $Err(x) = \hat{y} - y = h(x) - f(x) - \epsilon$ 对上式进行求平方,并对误差取期望,得到: $E[(Err(x))^2] = E[(h(x)-f(x)-\epsilon)^2]$ 将上式展开,得到: $E[(Err(x))^2] = E[h(x)^2] + E[f(x)^2] + E[\epsilon^2] - 2E[h(x)f(x)] - 2E[h(x)\epsilon] + 2E[f(x)\epsilon]$ 根据方差和协方差的定义,可以将上式进一步拆分为: $E[(Err(x))^2] = [E[h(x)] - f(x)]^2 + E[h(x)^2] - [E[h(x)] - f(x)]^2 + E[\epsilon^2]$ $+ 2[E[h(x)f(x)] - E[h(x)]f(x)] - 2[E[h(x)\epsilon] - E[h(x)]E[\epsilon]] + 2[E[f(x)\epsilon] - f(x)E[\epsilon]]$ 整理后,得到: $E[(Err(x))^2] = Bias^2[x] + Variance[x] + \epsilon$ 其,$Bias[x] = E[h(x)] - f(x)$ 表示偏差,$Variance[x] = E[h(x)^2] - E[h(x)]^2$ 表示方差,$\epsilon$ 表示噪声。 从上式可以看出,测试误差可以分解为偏差方差和噪声三部分。偏差方差之间存在一种权衡关系,即减小偏差会增加方差,减小方差会增加偏差。因此,我们需要在偏差方差之间寻求一个平衡,以获得更好的泛化能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值