范数

目录

一,范数

1,广义范数

2,狭义范数

3,范数不等式

4,扩展范数

二,常见范数

三,范数幂


一,范数

1,广义范数

广义范数是满足下列性质的任意函数:

2,狭义范数

狭义范数用来衡量向量的大小。

||x||_p = \left ( \sum_i |x_i|^p \right )^\frac{1}{p}

狭义范数都是凸函数,但都是不可微分的函数。

3,范数不等式

m>p>0, 则

\left ( \sum_i |x_i|^p \right )^\frac{1}{p} \geq \left ( \sum_i |x_i|^m \right )^\frac{1}{m}

当且仅当xi中至多有1个不为0时,不等式取等号。

也就是说,范数是递减的。p趋于0时范数趋于正无穷,p趋于正无穷时范数趋于常数max{x},即各个|xi|中最大的那一个。

4,扩展范数

有一些范数不属于广义范数,姑且称之为扩展范数。

如:

L0范数,表示非0分量的个数

TV范数(Total Variation),表示使图像分片光滑。定义如下: 对图像做两个方向上的差分,然后计算平方和,再取根号,最后全部加起来。

二,常见范数

(0)L0范数。

(1)p=1时,L1范数是向量中各个元素绝对值之和,即曼哈顿距离。

(2)p=2时,L2范数被称为欧几里得范数,即欧几里得距离,常简化表示为 ∥x∥,略去了下标 2。

(3)L∞范数,表示向量中具有最大幅值的元素的绝对值。

(4)F范数,即矩阵的Frobenius 范数,本质上和向量的L2范数是一样的。

三,范数幂

为了简化运算,有时只用范数的幂。

如:

平方L2范数,即L2范数的平方,优势在于既凸又可微分,且对 x 中每个元素的导数只取决于对应的元素。

### 梯度范数的概念及其计算方法 #### 1. 梯度范数的定义 梯度范数是指梯度向量的范数,用来衡量梯度的整体大小。在机器学习和深度学习中,梯度是一个向量,表示目标函数关于参数的变化方向和变化速率。通过计算梯度范数,可以评估当前模型的状态,例如判断优化是否接近收敛或是否存在异常情况(如梯度爆炸)。梯度范数的具体定义依赖于所使用的范数类型[^4]。 常用的范数包括L1范数、L2范数以及无穷范数: - **L1范数**: \[ ||g||_1 = \sum_{i=1}^{n}|g_i| \] 表示梯度向量各分量绝对值的总和。 - **L2范数**: \[ ||g||_2 = \sqrt{\sum_{i=1}^{n} g_i^2} \] 表示梯度向量各分量平方和的开方,常用于衡量梯度的整体规模。 - **无穷范数**: \[ ||g||_\infty = \max(|g_1|, |g_2|, ..., |g_n|) \] 表示梯度向量中最大分量的绝对值[^5]。 #### 2. 梯度范数的作用 梯度范数在深度学习中有以下个重要作用: - 判断优化过程是否稳定:当梯度范数过大时,可能表明存在梯度爆炸;而过小时则可能是梯度消失现象[^2]。 - 控制模型复杂度:通过对梯度范数施加约束,可以间接影响模型的泛化能力[^3]。 - 提供调试工具:观察梯度范数随训练进程的变化趋势可以帮助诊断模型行为。 #### 3. 梯度范数的计算方法 假设有一个神经网络模型 \( f(x;\theta) \),其损失函数为 \( J(\theta) \),那么梯度向量可以通过反向传播算法得到: \[ \nabla_\theta J(\theta) \] 随后,可以选择合适的范数类型来计算梯度范数。以下是基于Python和PyTorch框架的一个简单例子: ```python import torch # 假设我们已经定义了一个简单的神经网络 model 和输入数据 x, y model = ... # 定义模型 criterion = torch.nn.MSELoss() # 使用均方误差作为损失函数 optimizer = torch.optim.SGD(model.parameters(), lr=0.01) # 正向传播 outputs = model(x) loss = criterion(outputs, y) # 反向传播 loss.backward() # 获取所有参数的梯度并计算 L2 范数 grad_norm_l2 = 0 for param in model.parameters(): grad_norm_l2 += param.grad.data.norm(2).item() ** 2 grad_norm_l2 = grad_norm_l2 ** 0.5 print(f"L2 Gradient Norm: {grad_norm_l2}") ``` 此代码片段展示了如何利用 PyTorch 中的 `.grad` 属性获取每层参数的梯度,并进一步计算整个模型的梯度 L2 范数[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值