【深度学习】S2 数学基础 P2 线性代数(下)

目录

本节博文是线性代数第二部分,主要内容为 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 λ 是正则化系数;

  • L d a t a ( w ) = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 L_{data}(w)=\frac 1 n \sum ^n _{i=1} (y_i-\hat y_i)^2 Ldata(w)=n1∑i=1n(yi−y^i)2

其中, y i y_i yi 是第 i i i 个真实标签, y ^ i \hat y_i y^i 是模型预测的第 i i i 个标签, n n n 是样本数量。

  • R ( w ) = ∑ j ∣ w j ∣ R(w)=\sum _j |w_j| R(w)=∑j∣wj∣

其中, w j w_j wj 是模型参数, ∣ w j ∣ |w_j| ∣wj∣ 是 w j w_j wj 的绝对值。

可以发现,优化算法在训练过程中会同时最小化两部分损失。由于正则化项通常与模型的复杂度成正比,因此在优化算法寻找最小化损失函数的参数时,会倾向于选择那些能够同时减小数据损失和正则化损失的参数。这样,模型的参数值就会更加分散,模型变得更加简单,从而提高了在未见数据上的泛化能力。

如此,便是范数之于深度学习的意义。


L1 范数与 L2 范数

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 范数,我们将 "绝对值函数" 和 "按元素求和" 组合起来;

python 复制代码
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() 函数;

python 复制代码
u = torch.tensor([3.0, -4.0])
torch.norm(u)

小结

L1 范数和 L2 范数的选择取决于具体问题的需求。

在某些情况下,使用 L1 范数可以得到更稀疏的解,这在文本处理和某些类型的图像处理中是有益的。而在其他情况下,L2 范数可能更为合适,因为它能更好地控制模型的光滑度。

在实际应用中,根据不同的场景和问题特性,选择合适的范数非常重要,这关系到算法的性能和效果。


如上;

如有任何疑问,请留言~

2024.2.14

相关推荐
空中湖1 小时前
tensorflow武林志第二卷第九章:玄功九转
人工智能·python·tensorflow
lishaoan771 小时前
使用tensorflow的线性回归的例子(七)
人工智能·tensorflow·线性回归
山登绝顶我为峰 3(^v^)32 小时前
如何录制带备注的演示文稿(LaTex Beamer + Pympress)
c++·线性代数·算法·计算机·密码学·音视频·latex
千宇宙航4 小时前
闲庭信步使用SV搭建图像测试平台:第三十一课——基于神经网络的手写数字识别
图像处理·人工智能·深度学习·神经网络·计算机视觉·fpga开发
onceco4 小时前
领域LLM九讲——第5讲 为什么选择OpenManus而不是QwenAgent(附LLM免费api邀请码)
人工智能·python·深度学习·语言模型·自然语言处理·自动化
天水幼麟5 小时前
动手学深度学习-学习笔记(总)
笔记·深度学习·学习
jndingxin7 小时前
OpenCV CUDA模块设备层-----高效地计算两个 uint 类型值的带权重平均值
人工智能·opencv·计算机视觉
天水幼麟7 小时前
动手学深度学习-学习笔记【二】(基础知识)
笔记·深度学习·学习
Sweet锦7 小时前
零基础保姆级本地化部署文心大模型4.5开源系列
人工智能·语言模型·文心一言
hie988948 小时前
MATLAB锂离子电池伪二维(P2D)模型实现
人工智能·算法·matlab