Lipschitz Continuous (1):定义、性质与用途
文章目录
- 1. 定义
- 2. 基本性质
- 可导与连续
- 代数运算
- Lipschitz 常数与梯度
- 3. Lipschitz条件在深度学习中的作用和用途
- 保证模型梯度的稳定性
- 提升模型的鲁棒性1-Lipschitz
- 泛化误差界
- 4. 如何在网络中实施 Lipschitz 约束
- 线性与卷积层
- 非线性
- 对抗训练与正则
1. 定义
函数f:Rn→Rmf: \mathbb{R}^n\rightarrow\mathbb{R}^mf:Rn→Rm,如果存在一个常数L≥0L\ge 0L≥0(称为Lipschitz常数),使得对所有在定义域内的点x1x_1x1和x2x_2x2,都有:
∥f(x1)−f(x2)∥≤L∥x1−x2∥\|f(x_1)-f(x_2)\|\le L\|x_1-x_2\| ∥f(x1)−f(x2)∥≤L∥x1−x2∥
其中,最小的 Lipschitz 常数为
L=Lip(f):=supx≠y∥f(x)−f(y)∥∥x−y∥L=\operatorname{Lip}(f) := \sup_{x \ne y} \frac{\| f(x) - f(y) \|}{\| x - y \|} L=Lip(f):=x=ysup∥x−y∥∥f(x)−f(y)∥
则称函数fff是LLL-Lipschitz连续的。
- ∥⋅∥\|\cdot\|∥⋅∥:指范数,如欧几里得范数。也可以推广到任意度量空间中。
- LLL: Lipschitz常数,量化函数变化的最大“速率”,即函数fff输出值的变化幅度不会超过输入值变化幅度的某个常数倍。
- LLL越大,则函数fff输出变化越剧烈;
- LLL越小,则函数fff输出变化越平缓;
2. 基本性质
可导与连续
-
充分条件(成立):如果函数fff在区间上可导,且其导数的绝对值或者范数∥f′(x)∥\|f'(x)\|∥f′(x)∥有界(即∥f′(x)≤L\|f'(x)\le L∥f′(x)≤L多所有xxx成立),则函数fff是Lipschitz Continuous,其中LLL是它的Lipschitz常数。
- 证明:有拉格朗日中值定理可得∣f(x1)−f(x2)∣=∣f′(ξ)∣⋅∣x1−x2∣≤L∣x1−x2∣|f(x_1)-f(x_2)|=|f'(\xi)|\cdot|x_1-x_2|\le L|x_1-x_2|∣f(x1)−f(x2)∣=∣f′(ξ)∣⋅∣x1−x2∣≤L∣x1−x2∣。
-
必要条件(不成立):如果函数fff是Lipschitz连续,无法推导出fff处处可导。
- 例如:f(x)=∣x∣f(x)=|x|f(x)=∣x∣是Lipschitz连续,但是在x=0x=0x=0处不可导。
代数运算
-
复合:Lip(f∘g)≤Lip(f)Lip(g)\operatorname{Lip}(f\circ g)\le\operatorname{Lip}(f)\operatorname{Lip}(g)Lip(f∘g)≤Lip(f)Lip(g)
-
线性缩放:Lip(af)=∣a∣Lip(f)\operatorname{Lip}(af)=|a|\operatorname{Lip}(f)Lip(af)=∣a∣Lip(f)
-
求和:Lip(f+g)≤Lip(f)+Lip(g)\operatorname{Lip}(f+g)\le\operatorname{Lip}(f)+\operatorname{Lip}(g)Lip(f+g)≤Lip(f)+Lip(g)
-
标量值函数的的max/min:Lip(max{f,g})=max{Lip(f),Lip(g)}\operatorname{Lip}(\text{max}\{f, g\})=\text{max}\{\operatorname{Lip}(f),\operatorname{Lip}(g)\}Lip(max{f,g})=max{Lip(f),Lip(g)}
该性质长用于深度神经网络的证明,因为神经网络就是一系列层的复合。
Lipschitz 常数与梯度
对于可微函数,其(最优)Lipschitz 常数LLL等于其梯度范数的上确界:
L=supx∥∇f(x)∥L=\text{sup}_x\|\nabla {f(x)}\| L=supx∥∇f(x)∥
3. Lipschitz条件在深度学习中的作用和用途
保证模型梯度的稳定性
网络为层的复合f=ϕL∘WL∘⋯ϕ1W1f=\phi_L \circ W_L\circ\cdots\phi_1W_1f=ϕL∘WL∘⋯ϕ1W1,则整体 Lipschitz 常数可由各层雅可比的算子范数乘积上界:Lip(f)≤∏ℓ=1LLip∥Wℓ∥\operatorname{Lip}(f)\le \prod_{\ell=1}^{L}\operatorname{Lip}\|W_{\ell}\|Lip(f)≤∏ℓ=1LLip∥Wℓ∥。
如果每一层的 Lipschitz 常数L>1L>1L>1,在反向传播时,梯度可能会随着层数指数级增长,导致数值不稳定、模型无法收敛。如果每一层的 Lipschitz 常数 L<1L<1L<1,梯度可能会指数级衰减到零,使得深层网络的权重无法更新。
提升模型的鲁棒性1-Lipschitz
一个分类模型,如果是 Lipschitz 连续的,意味着对于输入的微小扰动 δ,其输出的变化是有限的:
∥f(x+δ)−f(x)∥≤L∥δ∥\|f(x+\delta)-f(x)\|\le L\|\delta\| ∥f(x+δ)−f(x)∥≤L∥δ∥
如果 Lipschitz 常数 LLL 很小,那么即使攻击者给输入添加一个小的扰动 δ,输出的变化也不会太大,从而很难改变模型的预测结果。这使得模型对对抗性攻击更鲁棒。
泛化误差界
模型在训练集上的错误率与在未知测试集上的错误率之差。泛化误差小,说明模型过拟合程度低,真正学到了规律。理论上,我们很难精确计算一个复杂模型(如深度神经网络)的泛化误差。但我们可以在概率上证明,泛化误差不会超过某个值,这个值就是“上界”。
小的Lipschitz常数意味着模型复杂度低,则理论预测的泛化误差最大值(上界)更小。
4. 如何在网络中实施 Lipschitz 约束
线性与卷积层
- 谱归一化(SN):对全连接/卷积层按最大奇异值归一化,直接控制算子范数。
- 权重裁剪:强制让模型梯度在一定范围。
非线性
- ReLU、LeakyReLU、Tanh、Softplus都是1-Lipschitz。
- Sigmoid为1/4-Lipschitz。
对抗训练与正则
- 梯度惩罚(WGAN-GP/DRAGAN 等):惩罚∥∇xf∥2\|\nabla_x f\|_2∥∇xf∥2偏离1,间接约束 Lipschitz 性。
- WGAN(critic 1-Lipschitz):SN、GP、权重裁剪均可用以逼近 1-Lipschitz 约束。
