L1 范数
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 范数,也称 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)