赞
踩
本节博文是线性代数第二部分,主要内容为 L 1 L1 L1 范数与 L 2 L2 L2 范数;有关线性代数基础知识,请访问:【深度学习】S2 数学基础 P1 线性代数(上)
在数学的框架内,范数是一个基本的概念,它为向量空间提供了一个度量方法,使得可以比较向量的大小,并研究向量之间的运算。
而在深度学习中,范数作为正则化项添加到损失函数中,以帮助改善模型的泛化能力。
具体的说,在深度学习中,损失函数由两部分组成:数据损失和正则化损失。数据损失反映了模型预测与真实标签之间的差异(例如,交叉熵损失或均方误差),而正则化损失则旨在惩罚模型的复杂度,抑制模型参数的过度增长,从而提高模型的泛化能力,防止过拟合。
e
.
g
.
e.g.
e.g. 一个包含均方误差损失函数和 L1 正则化项的损失函数表示为:
L
(
w
)
=
L
d
a
t
a
(
w
)
+
λ
R
(
w
)
L(w)=L_{data}(w)+\lambda R(w)
L(w)=Ldata(w)+λR(w)
其中 L d a t a ( w ) L_{data}(w) Ldata(w) 为均方误差损失函数; R ( w ) R(w) R(w) 为 L1 正则化损失函数; λ \lambda λ 是正则化系数;
其中, y i y_i yi 是第 i i i 个真实标签, y ^ i \hat y_i y^i 是模型预测的第 i i i 个标签, n n n 是样本数量。
其中, w j w_j wj 是模型参数, ∣ w j ∣ |w_j| ∣wj∣ 是 w j w_j wj 的绝对值。
可以发现,优化算法在训练过程中会同时最小化两部分损失。由于正则化项通常与模型的复杂度成正比,因此在优化算法寻找最小化损失函数的参数时,会倾向于选择那些能够同时减小数据损失和正则化损失的参数。这样,模型的参数值就会更加分散,模型变得更加简单,从而提高了在未见数据上的泛化能力。
如此,便是范数之于深度学习的意义。
L1 范数,也称 L1 正则化、 “曼哈顿范数”(Manhattan norm),是向量各元素的绝对值之和。通过在损失函数中增加一个 L1 范数的惩罚项,使某些参数变为零,从而鼓励模型拥有更稀疏的权重,防止模型过拟合。
对于向量
x
=
[
x
1
,
x
2
,
.
.
.
,
x
n
]
\mathbf{x} = [x_1, x_2, ..., x_n]
x=[x1,x2,...,xn],其 L1 范数表示为:
∣
∣
x
∣
∣
1
=
∑
i
=
1
n
∣
x
i
∣
||x||_1 = \sum_{i=1}^{n} |x_i|
∣∣x∣∣1=i=1∑n∣xi∣
在深度学习 PyTorch 框架中计算 L1 范数,我们将 “绝对值函数” 和 “按元素求和” 组合起来;
torch.abs(u).sum()
L2 范数,也称 L2 正则化、“欧几里得范数”(Euclidean norm)、“平方范数”,是向量的各元素平方和的平方根。同于 L1 正则化,鼓励模型拥有更稀疏的权重;不同于 L1 正则化,L2 正则化不会导致权重(参数)为零,而是减小权重的绝对值。
对于向量
x
=
[
x
1
,
x
2
,
.
.
.
,
x
n
]
\mathbf{x} = [x_1, x_2, ..., x_n]
x=[x1,x2,...,xn],其 L2 范数表示为:
∣
∣
x
∣
∣
2
=
∑
i
=
1
n
x
i
2
||x||_2 = \sqrt{\sum_{i=1}^{n} x_i^2}
∣∣x∣∣2=i=1∑nxi2
在深度学习 PyTorch 框架中计算 L2 范数,使用 norm()
函数;
u = torch.tensor([3.0, -4.0])
torch.norm(u)
L1 范数和 L2 范数的选择取决于具体问题的需求。
在某些情况下,使用 L1 范数可以得到更稀疏的解,这在文本处理和某些类型的图像处理中是有益的。而在其他情况下,L2 范数可能更为合适,因为它能更好地控制模型的光滑度。
在实际应用中,根据不同的场景和问题特性,选择合适的范数非常重要,这关系到算法的性能和效果。
如上;
如有任何疑问,请留言~
2024.2.14
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。