underfitting & overfitting

写在前面

对过拟合和欠拟合的一些理解

loss function adjustment

梯度下降目的就是把loss function最小化,但是我们怎么知道给定好的loss function,平方和为什么是一个恰当的衡量标准?假设我们有一个衡量拟合结果有多好的fit function,那么其实最大化fit function能达到和最小化loss function一样的效果。不这么做的原因是,fit funcion并不会因为输入的微笑改变而改变,或者说不是平滑的。因此不好微分。。从而没法梯度下降。但是平方和很多时候也并不能很好的衡量loss的真实情况,因为可能让loss fuction值小的条件是让拟合出来的结果变得很陡峭。我们现实生活中,连续的、平滑的情况还是占绝大多数。因此对loss function做一些调整很有必要,可能就平方和函数而言loss值更大,但是函数更加平滑,那这种结果更加可取。因此在loss funcion后加上一个调整项:$loss =\sum_{n} \left ( y^{n} - f^{n}(x) \right )^{2}+ \sum_{n} \omega^{2}$. 这个方法可以用在很多场景,被称为regularization

regularization

variance and bias

方差和偏差的理解其实没什么太大问题,主要是应用在讨论训练模型和理想模型的偏离的时候,需要结合在一起考虑需要理解清楚。对于一个实际的问题,在选定model和给定数据的情况下,我们可以训练出来的最佳fucntion设为$f1$.实际问题的真实function设为$f2$.想象一下,如果我们可以重复拿到数据选定同一个model训练10000次,那么每一次都可以训练出来一个$f1$.可以假设第n次训练出来的叫做$f_{1n}$.那么这n次训练出来的f的期望可以写成${*}_f$.可以想象,如果数据量很大,那么10000次下来,平均期望已经是选定model中针对实际问题最好的function了,但是这个function必然也会和实际的$f2$有一定的差距。这个差距我们就称为bias。这10000个sample的variance的大小取决于模型的复杂度和数据量。如果模型很简单,自然variance也会比较小。每次的数据量比较大,variance也会比较大。回到最初的问题,我选取好一个model,然后给定了数据,这时的和理想中最佳function相比的error来自于哪里呢?很简单,一个是来自于bias,一个是来自于variance。如果把理想的function看做射击时候的靶心,那么bias代表的就是瞄准的点和靶心的距离。如果variance大,那么瞄的准也不一定打得准。如果variance小,瞄准哪里基本上就打在哪里。因此给定一个复杂的model,想要让variance小,就让数据量大。这时候需要祭出李宏毅老师的图
variance and bias

fitting

summary

之所以写这个是因为之前在西瓜书上看到overfitting的本质是学习过度了,意思是把训练集的特征学的过多,以至于真实情况中没有满足训练集的特征但是仍然属于result中的结果给排除在外了。举个例子是说:学习器认为有叶子,绿色的才是树。这是因为训练集中没有光秃秃的树,导致看到了光秃秃的树,学习器就判断失误了。underfitting是说,学习器认为绿色的就是树,这是学习不足导致的,连有没有叶子这个特征都没有学会识别,可以加强训练。真实情况中呢,更容易遇到的是overfitting,因为大部分网络的学习能力都是很强的(只要model选的问题不太大)。这里的结论却是:与理想function相比,bias带来的error大,则是underfitting,variance带来的error大则是overfitting。怎么理解这句话呢:

  • bias太大证明模型太简单了,学习能力不足,学习不足的原因是model选的就有问题,数据量再怎么大也没法解决bias大带来的error。因此需要improve自己的model
  • variance太大证明数据量太小了,即使model选的很好,学习能力也很强,但是学到的训练集的特征不能代表整体的特征,也就是overfitting,需要enlarge dataset.

Reference

  1. where does the error come from
  2. [周志华] [机器学习]
文章目录
  1. 1. 写在前面
  2. 2. loss function adjustment
  3. 3. variance and bias
  4. 4. summary
  5. 5. Reference
|