文章目录
在进入到正题前,首先来了解下什么是 K-Lipschitz 以及它在 DL 中能起到什么作用
Lipschitz continuity
利普希茨连续。满足如下性质的任意连续函数 f f f 称为 K-Lipschitz:
∥ f ( x 1 ) − f ( x 2 ) ∥ ≤ K ∥ x 1 − x 2 ∥ , ∀ x 1 , x 2 ∈ dom f \| f(x_1) - f(x_2) \| \leq K \| x_1 - x_2 \|,\ \forall x_1,x_2 \in \text{dom}f ∥f(x1)−f(x2)∥≤K∥x1−x2∥, ∀x1,x2∈domf
这里的 ∥ ⋅ ∥ \|\cdot\| ∥⋅∥ 常用2-范。直观上看,Lipschitz 条件限制了函数变化的剧烈程度。在DL中,由于 Lipschitz continous 的函数的梯度上界被限制,因此函数会更平滑。因此利用梯度下降进行参数更新时,参数的变化不会太大/剧烈从而降低梯度爆炸的发生概率,使模型的更新更稳定。 K K K 称为 Lipschitz constant。
那么在 DL 中,有哪些方法可用于将 f f f 限制在 K-Lipschitz 空间中?这里介绍三种:weight clipping、gradient penality、spectral normalization,一般而言,第三种的效果最佳
Weight clipping
由 Wasserstein GAN 提出。
在利用 gradient descent 进行参数更新后,在对所有参数进行如下操作:
w = { c , if w > c − c , if w < − c w , otherwise w=\begin{cases} c, & \text{if } w > c \\ -c, & \text{if } w < -c \\ w, & \text{otherwise} \end{cases} w=⎩⎪⎨⎪⎧c,−c,w,if w>cif w<−cotherwise
其中 c c c 是人为设定的阈值。注意,Weight cplipping 并无法保证 f f f 位于 1-Lipschitz,而只能保证其是 K-Lipschitz的(K具体无法确定)
Gradient penalty
由 Improved Training of Wasserstein GANs 提出。
理论支持:一个可微函数 f f f 是 1-Lipschitz 当且仅当它对所有的输入 x x x 均满足 ∥ ∇ x f ( x ) ∥ ≤ 1 \| \nabla_x f(x) \| \leq 1 ∥∇xf(x)∥≤1,即,
f ∈ 1-Lipschitz    ⟺    ∥ ∇ x f ( x ) ∥ ≤ 1 , ∀ x ∈ dom f f \in \text{1-Lipschitz} \iff \| \nabla_x f(x) \| \leq 1, \forall x \in \text{dom}f f∈1-Lipschitz⟺∥∇xf(x)∥≤1,∀x∈domf
在具体实现时,即在 Objective function 中添加如下正则项:
min θ { L ( x , θ ) + λ max ( 0 , ∥ ∇ x f ( x ) − 1 ) ∥ } \min_{\theta} \{ \mathcal{L}(x, \theta) + \lambda \color{#F00}{\max(0, \| \nabla_x f(x) - 1) \| } \} θmin{
L(x,θ)+λmax(0,∥∇xf(x)−1)∥}
公式中的 L \mathcal L L 即为 Loss/Objective function,而 f f f 为 Score function。注意,优化该目标函数后,所解出的 f f f 并无法保证一定满足 ∥ ∇ x f ( x ) ∥ ≤ 1 \| \nabla_x f(x) \| \leq 1 ∥∇xf(x)∥≤1,但 f f f 会偏向具有该属性
Spectral Normalization
谱归一化,由SN-GAN提出,是目前三种方法中效果最优的方法。
下面简要介绍其非严格的理论推导,主要来自知乎,再添加上自己的一些理解
理论推导
对于复合函数,存在如下定理:
∥ f ∘ g ∥ L i p ≤ ∥ f ∥ L i p ⋅ ∥ g ∥ L i p \|f \circ g\|_{Lip} \leq \| f \|_{Lip} \cdot \| g \|_{Lip} ∥f∘g∥Lip≤∥f∥Lip⋅∥g∥Lip
neutral network 正是由多个复合函数嵌套而成,最常见的嵌套方式如下: f ( g ( f ( g ( ⋯   ) ) ) ) f(g(f(g(\cdots)))) f(g(f(g(⋯)))),其中 f 表示激活函数, g g g 表示卷积操作(以CNN为例)。而 f f f 常选取 LeakyRelu,Relu,Sigmoid,Tanh,而它们均为 1-Lipschitz。因此 ∥ f ∘ g ∥ L i p ≤ ∥ f ∥ L i p ⋅ ∥ g ∥ L i p = ∥ g ∥ L i p \|f \circ g\|_{Lip} \leq \| f \|_{Lip} \cdot \| g \|_{Lip}=\| g \|_{Lip} ∥f∘g∥Lip≤∥f∥Lip⋅∥g∥Lip=∥g∥Lip,故要使得复合函数 f ∘ g f \circ g f∘g 为 1-Lipschitz,即需保证卷积操作 g g g 是 1-Lipschitz,就可以保证整个网络都是 1-Lipschitz continous 的。
在图像上每个位置的卷积操作,正好就是做如下“局部区域“的变换:
∥ unfold r a w ( M ) ⋅ unfold c o l ( x ) ∥ = y \| \text{unfold}_{raw}(M) \cdot \text{unfold}_{col}(x) \| = y ∥unfoldraw(M)⋅unfoldcol(x)∥=y
其中 x ∈ R f × f x \in R^{f×f} x∈Rf×f 为 local receptive field, M ∈ R f × f M \in R^{f×f} M∈Rf×f 为卷积核, y y y 为对应位置的卷积输出, unfold r a w ( ⋅ ) \text{unfold}_{raw}(\cdot) unfoldraw(⋅) 将 ⋅ \cdot ⋅ 按行展开成行向量, unfold c o l ( ⋅ ) \text{unfold}_{col}(\cdot) unfoldcol(⋅) 将 ⋅ \cdot ⋅ 按列展开成列向量。因此,只需保证 unfold r a w ( M ) \text{unfold}_{raw}(M) unfoldraw(M) 是 1-Lipschitz,就可以使得整个 network 是 1-Lipschitz。
对任意矩阵 A A A ( unfold r a w ( M ) \text{unfold}_{raw}(M) unfoldraw(M) 是 A A A 的一个具例),存在如下定理:
(1) A ∈ K-Lipschitz , ∀ A : R n → R m / ∀ A ∈ R m × n    ⟺    ∥ A x → ∥ ≤ K ∥ x → ∥ , ∀ x → ∈ R n    ⟺    ⟨ A x → , A x → ⟩ ≤ K 2 ⟨ x → , x → ⟩    ⟺    x → T ( A T A − K 2 I ) x → ≤ 0    ⟺    ⟨ ( A T A − K 2 I ) x → , x → ⟩ ≤ 0 \begin{array}{ll} & A \in \text{K-Lipschitz}, \forall A: R^n \to R^m / \forall A \in R^{m×n} \\[.4em] \iff& \| A \overrightarrow{x} \| \leq K \| \overrightarrow{x} \|, \forall \overrightarrow{x} \in R^n \\[.4em] \iff& \langle A \overrightarrow{x}, A \overrightarrow{x} \rangle \leq K^2 \langle \overrightarrow{x}, \overrightarrow{x} \rangle \\[.4em] \iff& \overrightarrow{x}^T (A^TA - K^2I)\overrightarrow{x} \leq 0 \\[.4em] \iff& \langle (A^TA - K^2I) \overrightarrow{x}, \overrightarrow{x} \rangle \leq 0 \end{array} \tag{1} ⟺⟺⟺⟺A∈K-Lipschitz,∀A:Rn→Rm/∀A∈Rm×n∥Ax∥≤K∥x∥,∀x∈Rn⟨Ax,Ax⟩≤K2⟨x,x⟩xT(ATA−K2I)x≤0⟨(ATA−K2I)x,x⟩≤0(1)
因