L1 范数定义为一个向量所有元素的绝对值之和。对于向量 w 来说,L1 范数表示为:
在机器学习中,
𝐿1正则化的目的是通过最小化这个范数来引导模型选择一个稀疏解,即一个尽可能多的元素为零的解。这在特征选择和防止过拟合中非常有用。
可以将 𝐿1正则化想象成一种机制,它迫使模型尽量少地使用特征。通过限制权重的绝对值和,模型倾向于只保留对结果影响最大的少数特征,而将其他特征的权重压缩为零。这就类似于我们在整理东西时,尽量只保留最重要的东西,把不重要的尽量丢掉。
通过正则化实现泛化——边界最大化
SVM 的目标是找到一个能够最大化边界的超平面,以此来提高模型的泛化能力。
左侧图示描述了一个二元分类问题的最优分离超平面,该超平面将两个特征x1 和 x2 所组成的样本集进行分类。超平面方程为^T x + b =0,并且在分类时,我们希望最大化这个超平面的边界。即,通过找到一个可以最大化两类数据点间距的超平面,使得数据点能够被尽可能地分开。
边界大小(Margin Size)表明边界大小与权重向量 w 的范数成反比。即,当 w 越小,边界就越大,这意味着数据点之间的间距更大,从而提高模型的泛化能力
硬边界 SVM:目标是找到一个能够完全分离训练数据的超平面,并且边界大小最大化。这里的正则化项 1/2∥w∥用于防止模型过于复杂。
在实际应用中,数据通常无法被完美分离,因此引入了软边界 SVM。在这里,损失函数 ℓ 用于度量数据点 xi 被错误分类的程度,C 是权衡正则化项和损失项之间的参数。这个方法允许一些数据点出现在分离平面的错误一侧,从而提高模型的鲁棒性。
正则化的作用:正则化通过约束模型的复杂度来防止过拟合,从而提高模型的泛化能力。对于 SVM 来说,这表现为对权重向量 w的范数进行惩罚,促使模型选择更加简单的解。
通过正则化实现泛化——隐式正则化Implicit Regularization
深度神经网络展现了“算法偏差假设”,这一假设认为训练过程中的动态(特别是梯度下降)隐含地引入了一种正则化效果。即算法本身偏向于选择低复杂度的解,因此无需显式添加正则化项。
扩展解释:隐式正则化是一种重要的机制,它表明训练算法可能自然地偏向于选择简单且具有良好泛化能力的模型,而无需额外的正则化操作。
考虑一个由单个带有非线性激活函数 ψ 的神经元组成的网络。这个模型可以表示为:
u=ψ(〈w,x〉)
其中:
- w 是权重向量,
- x 是输入向量,
- 〈w,x〉表示 w 和 x 的内积,
- ψ是一个非线性激活函数。
使用平方误差损失函数,并通过梯度下降来训练这个模型
这里,∥y−ψ(Xw)∥表示模型预测值与真实值之间的差异,平方误差用于度量这种差异的大小。
定理指出:
假设激活函数 ψ:R→R是单调函数。如果在梯度下降的训练过程中,损失函数 L(w)) 收敛到零,那么最终的权重 w∗会自动满足上图的条件:
这意味着,在不显式添加正则化项的情况下,梯度下降过程自然会引导模型选择一个 L2 正则化解(即选择一个权重最小的解)。
简言之:梯度下降提供了一种隐式的偏差,使得最终解倾向于 L2 正则化的解。
线性模型的隐式正则化:
对于线性模型,对于一个线性模型,输出 u 可以表示为:
u=∑vj uj xj
- vj 是模型的权重,
- uj 是与输入特征 xjx_jxj 相关联的参数,
- xj 是输入数据的特征。
训练数据的预测
对于一些训练数据 X,模型的预测可以表示为:
y=X⋅(u∘v)
∘ 表示Hadamard乘积(即元素逐位相乘)。
如果我们将 u 初始化为 α1(即所有元素均为 α),并且 α 足够小,那么对应于梯度流的算法偏差将对应于 L1 正则化。具体来说,定理指出:
令 w∗ 为最小化 L1 范数的非负插值器,即满足条件 y=Xw的解,那么 w∗ 是:
w∗=argminw∥w∥1,subject to y=Xw,w≥0 (我们希望找到一个权重向量 w∗,它最小化 w 的 L1范数,同时满足 y=Xw以及 w 的所有元素非负)
- 这个结果表明,通过适当的初始化和梯度下降,模型会倾向于选择一个 L1正则化的解,进一步增强模型的泛化能力。
-
通俗说就是:梯度下降会使得一些参数变得很小甚至为零,导致我们得到的模型只保留了少数几个重要的特征,所以达到了类似使用正则的效果。证明就是简单的单调线性激活函数会出现这个特性,即某些参数会很小因为用不到,二即使我们加入了非线性。但是因为单调性还在,还是可以用之前的理论来延续
梯度流:对于对角线线性网络(这是指一种特殊结构的神经网络,其中权重矩阵是对角线形式的。这意味着每个输出只依赖于对应的输入,而不会受其他输入的影响。这种简单的结构可以用来分析网络的行为。),
如果梯度流收敛到估计值 wˉ,那么当α→0 时, w=wˉ 将收敛到 w∗。
通过VC维度研究泛化
VC维度:
Vapnik-Chervonenkis维度(VC维度)是用来衡量模型复杂度的一个指标。VC维度越高,模型能够学习到的映射关系就越复杂。
扩展解释:VC维度帮助我们理解模型的表达能力与泛化能力之间的权衡。尽管高VC维度意味着模型有更强的表达能力,但这也可能导致过拟合,从而影响泛化能力。
Shattering(分割能力 可破碎性):
在机器学习中,"Shattering"指的是一个假设类F 能够表示多少种不同的函数形式。具体来说,假设我们有一个包含 n 个数据点的样本 C⊂X,如果假设类 F 可以正确分类这 n个数据点的所有可能标签组合(即使是最复杂的组合),我们就说 F 可以“shatter”这个样本。
扩展解释:分割能力是理解VC维度的核心概念之一。一个假设类的分割能力越强,意味着它能够适应的样本复杂度越高,但同时也增加了过拟合的风险。
二元分类的例子:
考虑一个二元分类问题,在这个问题中,我们有输入数据集 X,而我们关注的是其中的一个子集 C,这个子集包含 n 个数据点。因为 n 是有限的,所以我们可以对这些数据点有有限的标签组合。
可能的标签组合:
对于二元分类问题,每个数据点有两种可能的标签(0 或 1)。所以,如果我们有 n 个数据点,那么可能的标签组合数量就是 2^n 种。
假设类 F 的能力:
假设类F 能够“shatter”样本 C 意味着无论我们选择哪一种标签组合,假设类F 总能找到一个假设(即一个分类器),使得它可以完美分类所有这些数据点,也就是说对于所有的 2^n种组合, F 都能实现零分类误差。
简单函数的VC维度:
VC维度是指一个假设类F 所能“shatter”的最大样本集的大小。F 能够无误分类的最大样本数量。
以常数分类器和阈值分类器为例,展示了不同假设类的VC维度。
对于常数分类器,VC维度为1。
对于阈值分类器,VC维度为2。
C=2.即有两个数据点可以是0或者1
想象一条数轴,阈值 t 就是数轴上的一个点。小于 t 的所有数据点被分到一侧(例如左边,标记为 0 类),大于或等于 t的数据点被分到另一侧(右边,标记为 1 类)
所以阈值分类器只能实现 000、001、011、111 和它们的镜像组合(即 100、110、011、111),但无法实现 101 或 010 这样的分离组合