不可不知的灵活算法:正则化

偏差 - 差异权衡

不可不知的灵活算法:正则化

泛化(测试)误差是机器/深度学习中最重要的指标。它给出了模型在未知数据上的性能估计。测试误差分解为三部分(见图1):方差、平方偏差、和不可约误差。

不可不知的灵活算法:正则化

图1:作为模型复杂性(灵活性)的函数的偏差和方差

具有高偏差的模型对于数据来说不够复杂(太简单)并且往往不适合。最简单的模型是取目标变量的平均值(模式),并将其分配给所有的预测。相反,具有高方差的模型通过紧跟跟随(MIMIK)训练数据来拟合训练数据,其中学习算法将跟随信号和噪声。注意,随着模型的复杂性(灵活性)增加,模型将变得不易判断,如神经网络。

以下是偏差方差分解:

不可不知的灵活算法:正则化

哪里:

var(ε):由每个示例的遗漏特征和不可测量变异导致的不可约误差。

Bias(ŷ):通过一个简单模型用近似真实的问题引入的误差。

var(ŷ):如果我们使用不同的数据集进行估计,ŷ会发生变化的数量。

因此,我们只能控制方差和偏差,而不能减少误差。但是,我们的工作是尝试估计正确的复杂度以实现最低的测试误差。

正则化

正则化使学习算法对训练数据和过程不那么敏感,从而增加了学习算法的稳定性。由于我们不知道也无法获得真正的函数,我们可以用它来比较我们的估计函数,所以最好的策略是建立一个非常复杂的模型,它非常适合训练数据(过度拟合)并将其调整,所以它会有一个很好的泛化(测试)错误。当使用正则化时,我们试图减少泛化错误,这可能会导致过程中的训练错误增加,这是可以的,因为我们关心的是模型的泛化程度如何。通过正则化,我们试图通过增加偏差和减少方差来将过度拟合的非常复杂的模型恢复到一个良好的模型。这是建立在复杂模型具有大参数和简单模型具有小参数的假设基础上的。

以下是用于正则化的一些方法:

1.L2参数正则化:也称为权重衰减。这种方法将L2范数惩罚添加到目标函数中,以将权重推向原点。即使这种方法将所有权重以相同的比例收缩到零,但是它永远不会有权重是完全为零。

2. L1参数正则化(LASSO):它可以被看作是一种特征选择方法,因为与L2正则化相反,一些权重实际上是零。它通过将L1范数罚加到目标函数来缩小所有的权重。

3. Dropout:Dropout可以看作是装袋技术的近似。在每次迭代中,我们随机关闭每一层上的一些神经元,并且不使用前向传播和反向传播中的这些神经元。这将迫使神经网络传播而不是专注于特定的神经元,因为它永远不知道在每个迭代中会出现哪些神经元。因此,它可以被看作是在每次迭代中训练不同的模型。此外,由于我们在每次迭代中会放弃一些神经元,这将变为更小的网络,这反过来也意味着有更简单的网络。

4. 增强:通过使用训练实例添加假数据,并在图像识别的情况下增加失真,例如在图像识别的情况下重新缩放和旋转图像。此处的想法是,在更多数据上训练模型以获得更好的性能总是更好的。增加的示例不像独立示例那样添加太多信息到模型中,但在收集更多数据不可行时仍然是有效的替代方案。

5. 早期停止:此方法试图优化成本函数并对其进行调整,以使其泛化误差更低。它的工作原理是在每次迭代中记录我们的验证错误。如果验证错误得到改善,我们将存储参数,并继续,直到优化算法终止。如果计算时间和资源对我们来说是一个问题,那么这是一个好方法。

在这篇文章中,我们将介绍L2参数正则化。

L2参数正则化

我们通常不会调整偏倚和规则化权重。我们可以使用Hessian矩阵和它的特征值和特征向量来查看权重对权重衰减的敏感性。权重wi将使用(λi/λiα)来重新调整,其中λi(特征值)测量该方向上的Hessian矩阵(特征向量)的灵敏度,并且α是正则化的超参数。因此,

如果λi ≫ α,那么成本函数在该方向上非常敏感,并且相应的权重显著降低成本⟹不会衰减(收缩)很多。

如果λi≪ α,则成本函数在该方向上不敏感,并且相应的权重不会显著降低成本⟹衰减(收缩)向零。

目标函数(二叉交叉熵)将从以下变化:

不可不知的灵活算法:正则化

到:

不可不知的灵活算法:正则化

此外,新的梯度和更新方程将是:

不可不知的灵活算法:正则化

请注意,这里α是学习率,λ是正则化的超参数。随着λ的增加,偏差增大(模型变得更不灵活),但有以下极端情况(见图2):

λ= 0,没有正则化。

λ→∞时,在所有权重基本为零的情况下,模型变得非常简单。在回归的情况下,我们只得到与目标变量的平均值相等的截距。

不可不知的灵活算法:正则化

图2:作为正则化参数λ的函数的模型复杂性(欠拟合/过拟合)

L2参数正则化是如何利用正规方程进行的,有时是有帮助的。正常情况是:

不可不知的灵活算法:正则化

这意味着:

将λ添加到方差会减少重量

不可不知的灵活算法:正则化

即使x^ tx不可逆,对每个特征加上λ也可以使满秩矩阵可逆。

为了说明正则化如何帮助我们减少泛化错误,我们将使用cats_vs_dogs数据集。数据集包含猫和狗的图像。我们将尝试构建一个神经网络来分类图像是否有猫或狗。每个图像在RGB尺度上是64 x 64像素。

我们将使用我们在“编码神经网络 - 前向传播和反向传播”文章中编写的函数来初始化参数,计算前向传播,交叉熵成本,梯度等。

让我们导入数据,看看形状以及训练集中猫图像的样本。

不可不知的灵活算法:正则化

不可不知的灵活算法:正则化

图3:示例图像

该训练集有209个示例,测试集有50个示例。我们首先编写可以帮助我们编写多层神经网络的辅助函数。

不可不知的灵活算法:正则化

不可不知的灵活算法:正则化

不可不知的灵活算法:正则化

现在我们已经准备好训练神经网络了。我们首先建立一个没有正则化的神经网络,然后建立一个正则化的神经网络来看哪一个神经网络的泛化误差较低。注意应该调整λ以获得最好的结果,我们在这里选择一个任意值来说明这个概念。两个神经网络都有2个隐藏层,每个隐藏层有5个单元。

不可不知的灵活算法:正则化

不可不知的灵活算法:正则化

图4:无正则化的成本曲线

训练精度为82.30%,但测试精度为78%。训练和测试精度之间的差异并不大,也就是说,我们没有太多过度拟合。因此,一点正则化可能有助于如λ= 0.02。从业人员推荐的λ值是:0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24。

不可不知的灵活算法:正则化

不可不知的灵活算法:正则化

图5:正则化的成本曲线

正如以上结果所示,我们通过将测试精度从78%提高到80%来改善泛化误差。另一方面,训练准确率从82.30%降至65.55%。

结论

正则化是一种解决过度拟合的有效技术。由于我们不知道数据的真实分布,基于经验分布的经验风险容易出现过度拟合。因此,最好的策略是很好的拟合训练数据,然后使用正则化技术,使得该模型能够很好地推广。L2参数正则化与Dropout是机器学习中使用最广泛的正则化技术中的两种。

正则化技术如L2和L1参数正则化的隐含假设之一是参数的值应为零,并尝试将所有参数缩小到零。这是为了避免很好地跟踪训练数据,在没有帮助时,这使得学习算法选择某些噪音应用于看不见的数据。

为了得到最佳的泛化误差,应该调整λ的值。我们通常在将模型与λs的值进行比较时使用验证集,并选择验证误差最低的那个。

只有在模型遭受过度拟合时才使用正则化,即训练错误小于等于验证错误。

如果在使用正则化之后验证错误仍然很高,那么我们在欠拟合区域。换句话说,我们的模型仍然过于简单并且已经有很高的偏差。因此,要增加模型的复杂度,然后使用正则化。

由于我们试图解决的大多数任务没有足够的数据(或收集更多数据的代价),所以过度拟合比传统而复杂的神经网络在深度学习中更为普遍。

相关推荐