大数据大数据,机器学习,人工智能互联网科技

Pytorch_第八篇_深度学习 (DeepLearning)

2020-08-25  本文已影响0人  沁泽呀

深度学习 (DeepLearning) 基础 [4]---欠拟合、过拟合与正则化


Introduce

在上一篇“深度学习 (DeepLearning) 基础 [3]---梯度下降法”中我们介绍了梯度下降的主要思想以及优化算法。本文将继续学习深度学习的基础知识,主要涉及:

以下均为个人学习笔记,若有错误望指出。


欠拟合和过拟合

要理解欠拟合和过拟合,我们需要先清楚一对概念,即偏差和方差。
偏差和方差是深度学习中非常有用的一对概念,尤其是可以帮助我们理解模型的欠拟合和过拟合

理解了偏差和方差的概念之后,那模型欠拟合和过拟合又是什么呢?

欠拟合 正常拟合曲线

在理解了模型欠拟合和过拟合的概念之后,如果我们在训练模型的过程中遇到了这两类问题,我们怎么解决呢?

对于以上策略一般的思考顺序,不论是欠拟合还是过拟合,当我们遇到了,都是优先考虑能不能使用上述中讲到的 (1) 和 (2) 来解决。如果不行的话再考虑 (3),因为重构一个神经网络的话相对于其他解决方法开销比较大。


正则化

直观理解:正则化是用来防止模型过拟合的一种方法,其做法是通过在模型损失函数中加入一项正则项,使得其在训练数据拟合损失和模型复杂度中达到一种权衡。

通常加入正则化的损失函数为如下形式:

loss = E_{loss} + {1\over \lambda}\sum_j|w_j|^q
其中第一项为模型原本的损失函数,第二项
为正则化项,w为权值参数矩阵。若q=1,则为我们常用的L1正则化;若q=2,则为我们常用的L2正则化。

理解了正则化概念以及加入正则化的损失函数的形式之后,回归到一个更重要的问题,即为什么正则化能够防止模型过拟合呢?以下分别从三个角度来理解正则化在模型训练中的作用。

(1) 从模型拟合曲线的函数形式来看

为了回答上述问题,我们需要先理解过拟合情况下学习出来的拟合函数是什么样子的。可以看到上述过拟合部分的拟合曲线图(emm,就是扭来扭去的那张),图中的数据点实际上只需要一个二次函数就能够很好拟合了但是从图中来看,过拟合情况下学习到的函数,肯定是大于二次的高次函数了。 假设该过拟合得到的函数为p次函数,如下所示:
f = w_0 + w_1x + w_2x^2 + w_3x^3 + ... +w_px^p
实际上正确的拟合函数为二次函数,如下所示:
f = w_0 + w_1x + w_2x^2
我们可以发现,要是我们能够更新权值参数w,使得w中的w0、w1和w2非0,而其余的权值均为0的话,我们是可以得到一个能够比较好地拟合上述曲线的模型的。而正则化就是起到上述这个作用(让一些不必要的权值参数为0),从而来防止模型过拟合的。

(2) 从神经网络模型的复杂度来看

现在回过头来看上述对于正则化的直观理解,里面有讲到模型复杂度,那模型复杂度是什么呀?我们可以将其通俗理解成权值参数的个数,因为网络的权值参数越多代表着神经网络更庞大(拥有更多的层和更多的节点以及更多的边),自然而然模型就更复杂了(如果网络中某条边的权重w为0的话,那这条边不就没了嘛,那模型不就更简单一些了嘛,这就是正则化要做的事吧,以上为个人理解)。

(3) 从加了正则化项的损失函数来看

现在再来看上述加入正则化的损失函数的一般形式,第一项为原本的损失函数,第二项为正则化项。以下分为两点来进行分析

需要说明的是:虽然L1正则化和L2正则化都可以防止模型过拟合,但是L1正则化相比于L2正则化会更容易产生稀疏权值矩阵(也就是说,权值矩阵中更多的权值为0)。至于原因,由于个人能力问题,可能解释不太清楚,可以参考知乎问题--L1 相比于 L2 为什么容易获得稀疏解?


本文参考-1

本文参考-2

本文参考-3

上一篇 下一篇

猜你喜欢

热点阅读