当前位置: 首页 > article >正文

【深度学习优化算法】02:凸性

在这里插入图片描述

【作者主页】Francek Chen
【专栏介绍】 ⌈ ⌈ PyTorch深度学习 ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重要的技术特征是具有自动提取特征的能力。神经网络算法、算力和数据是开展深度学习的三要素。深度学习在计算机视觉、自然语言处理、多模态数据分析、科学探索等领域都取得了很多成果。本专栏介绍基于PyTorch的深度学习算法实现。
【GitCode】专栏资源保存在我的GitCode仓库:https://gitcode.com/Morse_Chen/PyTorch_deep_learning。

文章目录

    • 一、定义
      • (一)凸集
      • (二)凸函数
      • (三)詹森不等式
    • 二、性质
      • (一)局部极小值是全局极小值
      • (二)凸函数的下水平集是凸的
      • (三)凸性和二阶导数
    • 三、约束
      • (一)拉格朗日函数
      • (二)惩罚
      • (三)投影
    • 小结


  凸性(convexity)在优化算法的设计中起到至关重要的作用,这主要是由于在这种情况下对算法进行分析和测试要容易。换言之,如果算法在凸性条件设定下的效果很差,那通常我们很难在其他条件下看到好的结果。此外,即使深度学习中的优化问题通常是非凸的,它们也经常在局部极小值附近表现出一些凸性。这可能会产生一些比较有意思的新优化变体。

%matplotlib inline
import numpy as np
import torch
from mpl_toolkits import mplot3d
from d2l import torch as d2l

一、定义

  在进行凸分析之前,我们需要定义凸集(convex sets)和凸函数(convex functions)。

(一)凸集

  凸集(convex set)是凸性的基础。简单地说,如果对于任何 a , b ∈ X a, b \in \mathcal{X} a,bX,连接 a a a b b b的线段也位于 X \mathcal{X} X中,则向量空间中的一个集合 X \mathcal{X} X(convex)的。在数学术语上,这意味着对于所有 λ ∈ [ 0 , 1 ] \lambda \in [0, 1] λ[0,1],我们得到
λ a + ( 1 − λ ) b ∈ X 当  a , b ∈ X (1) \lambda a + (1-\lambda) b \in \mathcal{X} \text{ 当 } a, b \in \mathcal{X} \tag{1} λa+(1λ)bX  a,bX(1)

  这听起来有点抽象,那我们来看一下图1里的例子。第一组存在不包含在集合内部的线段,所以该集合是非凸的,而另外两组则没有这样的问题。

在这里插入图片描述

图1 第一组是非凸的,第二、第三组是凸的

  接下来来看一下图2所示的交集。假设 X \mathcal{X} X Y \mathcal{Y} Y是凸集,那么 X ∩ Y \mathcal {X} \cap \mathcal{Y} XY也是凸集的。现在考虑任意 a , b ∈ X ∩ Y a, b \in \mathcal{X} \cap \mathcal{Y} a,bXY,因为 X \mathcal{X} X Y \mathcal{Y} Y是凸集,所以连接 a a a b b b的线段包含在 X \mathcal{X} X Y \mathcal{Y} Y中。鉴于此,它们也需要包含在 X ∩ Y \mathcal {X} \cap \mathcal{Y} XY中,从而证明我们的定理。

在这里插入图片描述

图2 两个凸集的交集是凸的

  我们可以毫不费力地进一步得到这样的结果:给定凸集 X i \mathcal{X}_i Xi,它们的交集 ∩ i X i \cap_{i} \mathcal{X}_i iXi是凸的,但是反向是不正确的。

  考虑两个不相交的集合 X ∩ Y = ∅ \mathcal{X} \cap \mathcal{Y} = \emptyset XY=,取 a ∈ X a \in \mathcal{X} aX b ∈ Y b \in \mathcal{Y} bY。因为我们假设 X ∩ Y = ∅ \mathcal{X} \cap \mathcal{Y} = \emptyset XY=,在图3中连接 a a a b b b的线段需要包含一部分既不在 X \mathcal{X} X也不在 Y \mathcal{Y} Y中。因此线段也不在 X ∪ Y \mathcal{X} \cup \mathcal{Y} XY中,因此证明了凸集的并集不一定是凸的,即非凸(nonconvex)的。

在这里插入图片描述

图3 两个凸集的并集不一定是凸的

  通常,深度学习中的问题是在凸集上定义的。例如, R d \mathbb{R}^d Rd,即实数的 d d d-维向量的集合是凸集(毕竟 R d \mathbb{R}^d Rd中任意两点之间的线存在 R d \mathbb{R}^d Rd)中。在某些情况下,我们使用有界长度的变量,例如球的半径定义为 { x ∣ x ∈ R d 且  ∥ x ∥ ≤ r } \{\mathbf{x} | \mathbf{x} \in \mathbb{R}^d \text{ 且 } \| \mathbf{x} \| \leq r\} {xxRd  xr}

(二)凸函数

  现在我们有了凸集,我们可以引入凸函数(convex function) f f f。给定一个凸集 X \mathcal{X} X,如果对于所有 x , x ′ ∈ X x, x' \in \mathcal{X} x,xX和所有 λ ∈ [ 0 , 1 ] \lambda \in [0, 1] λ[0,1],函数 f : X → R f: \mathcal{X} \to \mathbb{R} f:XR是凸的,我们可以得到
λ f ( x ) + ( 1 − λ ) f ( x ′ ) ≥ f ( λ x + ( 1 − λ ) x ′ ) (2) \lambda f(x) + (1-\lambda) f(x') \geq f(\lambda x + (1-\lambda) x') \tag{2} λf(x)+(1λ)f(x)f(λx+(1λ)x)(2)

  为了说明这一点,让我们绘制一些函数并检查哪些函数满足要求。下面我们定义一些函数,包括凸函数和非凸函数。

f = lambda x: 0.5 * x**2  # 凸函数
g = lambda x: torch.cos(np.pi * x)  # 非凸函数
h = lambda x: torch.exp(0.5 * x)  # 凸函数x, segment = torch.arange(-2, 2, 0.01), torch.tensor([-1.5, 1])
d2l.use_svg_display()
_, axes = d2l.plt.subplots(1, 3, figsize=(9, 3))
for ax, func in zip(axes, [f, g, h]):d2l.plot([x, segment], [func(x), func(segment)], axes=ax)

在这里插入图片描述

  不出所料,余弦函数为非凸的,而抛物线函数和指数函数为凸的。请注意,为使该条件有意义, X \mathcal{X} X是凸集的要求是必要的。否则可能无法很好地界定 f ( λ x + ( 1 − λ ) x ′ ) f(\lambda x + (1-\lambda) x') f(λx+(1λ)x)的结果。

(三)詹森不等式

  给定一个凸函数 f f f,最有用的数学工具之一就是詹森不等式(Jensen’s inequality)。它是凸性定义的一种推广:
∑ i α i f ( x i ) ≥ f ( ∑ i α i x i ) 且  E X [ f ( X ) ] ≥ f ( E X [ X ] ) (3) \sum_i \alpha_i f(x_i) \geq f\left(\sum_i \alpha_i x_i\right) \text{ 且 } E_X[f(X)] \geq f\left(E_X[X]\right) \tag{3} iαif(xi)f(iαixi)  EX[f(X)]f(EX[X])(3) 其中, α i \alpha_i αi是满足 ∑ i α i = 1 \sum_i \alpha_i = 1 iαi=1的非负实数, X X X是随机变量。换句话说,凸函数的期望不小于期望的凸函数,其中后者通常是一个更简单的表达式。为了证明第一个不等式,我们多次将凸性的定义应用于一次求和中的一项。

  詹森不等式的一个常见应用:用一个较简单的表达式约束一个较复杂的表达式。例如,它可以应用于部分观察到的随机变量的对数似然。具体地说,由于 ∫ P ( Y ) P ( X ∣ Y ) d Y = P ( X ) \int P(Y) P(X \mid Y) dY = P(X) P(Y)P(XY)dY=P(X),所以
E Y ∼ P ( Y ) [ − log ⁡ P ( X ∣ Y ) ] ≥ − log ⁡ P ( X ) (4) E_{Y \sim P(Y)}[-\log P(X \mid Y)] \geq -\log P(X) \tag{4} EYP(Y)[logP(XY)]logP(X)(4) 其中, Y Y Y是典型的未观察到的随机变量, P ( Y ) P(Y) P(Y)是它可能如何分布的最佳猜测, P ( X ) P(X) P(X)是将 Y Y Y积分后的分布。例如,在聚类中 Y Y Y可能是簇标签,而在应用簇标签时, P ( X ∣ Y ) P(X \mid Y) P(XY)是生成模型。

二、性质

  下面我们来看一下凸函数一些有趣的性质。

(一)局部极小值是全局极小值

  首先凸函数的局部极小值也是全局极小值。下面我们用反证法给出证明。

  假设 x ∗ ∈ X x^{\ast} \in \mathcal{X} xX是一个局部最小值,则存在一个很小的正值 p p p,使得当 x ∈ X x \in \mathcal{X} xX满足 0 < ∣ x − x ∗ ∣ ≤ p 0 < |x - x^{\ast}| \leq p 0<xxp时,有 f ( x ∗ ) < f ( x ) f(x^{\ast}) < f(x) f(x)<f(x)

  现在假设局部极小值 x ∗ x^{\ast} x不是 f f f的全局极小值:存在 x ′ ∈ X x' \in \mathcal{X} xX使得 f ( x ′ ) < f ( x ∗ ) f(x') < f(x^{\ast}) f(x)<f(x)。则存在 λ ∈ [ 0 , 1 ) \lambda \in [0, 1) λ[0,1),比如 λ = 1 − p / ( x ∗ − x ′ ) \lambda = 1 - p/(x^{\ast} - x') λ=1p/(xx),使得 0 < ∣ λ x ∗ + ( 1 − λ ) x ′ − x ∗ ∣ ≤ p 0 < |\lambda x^{\ast} + (1-\lambda) x' - x^{\ast}| \leq p 0<λx+(1λ)xxp

  然而,根据凸性的性质,有
f ( λ x ∗ + ( 1 − λ ) x ′ ) ≤ λ f ( x ∗ ) + ( 1 − λ ) f ( x ′ ) < λ f ( x ∗ ) + ( 1 − λ ) f ( x ∗ ) = f ( x ∗ ) , (5) \begin{aligned} f(\lambda x^{\ast} + (1-\lambda) x') &\leq \lambda f(x^{\ast}) + (1-\lambda) f(x') \\ &< \lambda f(x^{\ast}) + (1-\lambda) f(x^{\ast}) \\ &= f(x^{\ast}), \\ \end{aligned} \tag{5} f(λx+(1λ)x)λf(x)+(1λ)f(x)<λf(x)+(1λ)f(x)=f(x),(5) 这与 x ∗ x^{\ast} x是局部最小值相矛盾。因此,不存在 x ′ ∈ X x' \in \mathcal{X} xX满足 f ( x ′ ) < f ( x ∗ ) f(x') < f(x^{\ast}) f(x)<f(x)

  综上所述,局部最小值 x ∗ x^{\ast} x也是全局最小值。

  例如,对于凸函数 f ( x ) = ( x − 1 ) 2 f(x) = (x-1)^2 f(x)=(x1)2,有一个局部最小值 x = 1 x=1 x=1,它也是全局最小值。

f = lambda x: (x - 1) ** 2
d2l.set_figsize()
d2l.plot([x, segment], [f(x), f(segment)], 'x', 'f(x)')

在这里插入图片描述

  凸函数的局部极小值同时也是全局极小值这一性质是很方便的。这意味着如果我们最小化函数,我们就不会“卡住”。但是请注意,这并不意味着不能有多个全局最小值,或者可能不存在一个全局最小值。例如,函数 f ( x ) = m a x ( ∣ x ∣ − 1 , 0 ) f(x) = \mathrm{max}(|x|-1, 0) f(x)=max(x1,0) [ − 1 , 1 ] [-1,1] [1,1]区间上都是最小值。相反,函数 f ( x ) = exp ⁡ ( x ) f(x) = \exp(x) f(x)=exp(x) R \mathbb{R} R上没有取得最小值。对于 x → − ∞ x \to -\infty x,它趋近于 0 0 0,但是没有 f ( x ) = 0 f(x) = 0 f(x)=0 x x x

(二)凸函数的下水平集是凸的

  我们可以方便地通过凸函数的下水平集(below sets)定义凸集。具体来说,给定一个定义在凸集 X \mathcal{X} X上的凸函数 f f f,其任意一个下水平集
S b : = { x ∣ x ∈ X and  f ( x ) ≤ b } (6) \mathcal{S}_b := \{x | x \in \mathcal{X} \text{ and } f(x) \leq b\} \tag{6} Sb:={xxX and f(x)b}(6) 是凸的。

  让我们快速证明一下。对于任何 x , x ′ ∈ S b x, x' \in \mathcal{S}_b x,xSb,我们需要证明:当 λ ∈ [ 0 , 1 ] \lambda \in [0, 1] λ[0,1]时, λ x + ( 1 − λ ) x ′ ∈ S b \lambda x + (1-\lambda) x' \in \mathcal{S}_b λx+(1λ)xSb。因为 f ( x ) ≤ b f(x) \leq b f(x)b f ( x ′ ) ≤ b f(x') \leq b f(x)b,所以
f ( λ x + ( 1 − λ ) x ′ ) ≤ λ f ( x ) + ( 1 − λ ) f ( x ′ ) ≤ b (7) f(\lambda x + (1-\lambda) x') \leq \lambda f(x) + (1-\lambda) f(x') \leq b \tag{7} f(λx+(1λ)x)λf(x)+(1λ)f(x)b(7)

(三)凸性和二阶导数

  当一个函数的二阶导数 f : R n → R f: \mathbb{R}^n \rightarrow \mathbb{R} f:RnR存在时,我们很容易检查这个函数的凸性。我们需要做的就是检查 ∇ 2 f ≥ 0 \nabla^2f \geq 0 2f0,即对于所有 x ∈ R n \mathbf{x} \in \mathbb{R}^n xRn x ⊤ H x ≥ 0 \mathbf{x}^\top \mathbf{H} \mathbf{x} \geq 0 xHx0。例如,函数 f ( x ) = 1 2 ∥ x ∥ 2 f(\mathbf{x}) = \frac{1}{2} \|\mathbf{x}\|^2 f(x)=21x2是凸的,因为 ∇ 2 f ≥ 1 \nabla^2 f \geq \mathbf{1} 2f1,即其导数是单位矩阵。

  更正式地讲, f f f为凸函数,当且仅当任意二次可微一维函数 f : R n → R f: \mathbb{R}^n \rightarrow \mathbb{R} f:RnR是凸的。对于任意二次可微多维函数 f : R n → R f: \mathbb{R}^{n} \rightarrow \mathbb{R} f:RnR,它是凸的当且仅当它的黑塞矩阵 ∇ 2 f ≥ 0 \nabla^2f \geq 0 2f0

  首先,我们来证明一下一维情况。为了证明凸函数的 f ′ ′ ( x ) ≥ 0 f''(x) \geq 0 f′′(x)0,我们使用:
1 2 f ( x + ϵ ) + 1 2 f ( x − ϵ ) ≥ f ( x + ϵ 2 + x − ϵ 2 ) = f ( x ) (8) \frac{1}{2} f(x + \epsilon) + \frac{1}{2} f(x - \epsilon) \geq f\left(\frac{x + \epsilon}{2} + \frac{x - \epsilon}{2}\right) = f(x) \tag{8} 21f(x+ϵ)+21f(xϵ)f(2x+ϵ+2xϵ)=f(x)(8) 因为二阶导数是由有限差分的极限给出的,所以遵循
f ′ ′ ( x ) = lim ⁡ ϵ → 0 f ( x + ϵ ) + f ( x − ϵ ) − 2 f ( x ) ϵ 2 ≥ 0 (9) f''(x) = \lim_{\epsilon \to 0} \frac{f(x+\epsilon) + f(x - \epsilon) - 2f(x)}{\epsilon^2} \geq 0 \tag{9} f′′(x)=ϵ0limϵ2f(x+ϵ)+f(xϵ)2f(x)0(9) 为了证明 f ′ ′ ≥ 0 f'' \geq 0 f′′0可以推导 f f f是凸的,我们使用这样一个事实: f ′ ′ ≥ 0 f'' \geq 0 f′′0意味着 f ′ f' f是一个单调的非递减函数。假设 a < x < b a < x < b a<x<b R \mathbb{R} R中的三个点,其中, x = ( 1 − λ ) a + λ b x = (1-\lambda)a + \lambda b x=(1λ)a+λb λ ∈ ( 0 , 1 ) \lambda \in (0, 1) λ(0,1).根据中值定理,存在 α ∈ [ a , x ] \alpha \in [a, x] α[a,x] β ∈ [ x , b ] \beta \in [x, b] β[x,b],使得
f ′ ( α ) = f ( x ) − f ( a ) x − a 且  f ′ ( β ) = f ( b ) − f ( x ) b − x (10) f'(\alpha) = \frac{f(x) - f(a)}{x-a} \text{ 且 } f'(\beta) = \frac{f(b) - f(x)}{b-x} \tag{10} f(α)=xaf(x)f(a)  f(β)=bxf(b)f(x)(10) 由于单调性 f ′ ( β ) ≥ f ′ ( α ) f'(\beta) \geq f'(\alpha) f(β)f(α),因此
x − a b − a f ( b ) + b − x b − a f ( a ) ≥ f ( x ) (11) \frac{x-a}{b-a}f(b) + \frac{b-x}{b-a}f(a) \geq f(x) \tag{11} baxaf(b)+babxf(a)f(x)(11) 由于 x = ( 1 − λ ) a + λ b x = (1-\lambda)a + \lambda b x=(1λ)a+λb,所以
λ f ( b ) + ( 1 − λ ) f ( a ) ≥ f ( ( 1 − λ ) a + λ b ) (12) \lambda f(b) + (1-\lambda)f(a) \geq f((1-\lambda)a + \lambda b) \tag{12} λf(b)+(1λ)f(a)f((1λ)a+λb)(12) 从而证明了凸性。

  其次,我们需要一个引理证明多维情况: f : R n → R f: \mathbb{R}^n \rightarrow \mathbb{R} f:RnR是凸的当且仅当对于所有 x , y ∈ R n \mathbf{x}, \mathbf{y} \in \mathbb{R}^n x,yRn
g ( z ) = d e f f ( z x + ( 1 − z ) y ) ,其中 z ∈ [ 0 , 1 ] (13) g(z) \stackrel{\mathrm{def}}{=} f(z \mathbf{x} + (1-z) \mathbf{y}) ,其中 z \in [0,1] \tag{13} g(z)=deff(zx+(1z)y),其中z[0,1](13) 是凸的。

  为了证明 f f f的凸性意味着 g g g是凸的,我们可以证明,对于所有的 a , b , λ ∈ [ 0 , 1 ] a,b,\lambda \in[0,1] abλ[01](这样有 0 ≤ λ a + ( 1 − λ ) b ≤ 1 0 \leq \lambda a + (1-\lambda) b \leq 1 0λa+(1λ)b1),
g ( λ a + ( 1 − λ ) b ) = f ( ( λ a + ( 1 − λ ) b ) x + ( 1 − λ a − ( 1 − λ ) b ) y ) = f ( λ ( a x + ( 1 − a ) y ) + ( 1 − λ ) ( b x + ( 1 − b ) y ) ) ≤ λ f ( a x + ( 1 − a ) y ) + ( 1 − λ ) f ( b x + ( 1 − b ) y ) = λ g ( a ) + ( 1 − λ ) g ( b ) (14) \begin{aligned} &g(\lambda a + (1-\lambda) b)\\ =&f\left(\left(\lambda a + (1-\lambda) b\right)\mathbf{x} + \left(1-\lambda a - (1-\lambda) b\right)\mathbf{y} \right)\\ =&f\left(\lambda \left(a \mathbf{x} + (1-a) \mathbf{y}\right) + (1-\lambda) \left(b \mathbf{x} + (1-b) \mathbf{y}\right) \right)\\ \leq& \lambda f\left(a \mathbf{x} + (1-a) \mathbf{y}\right) + (1-\lambda) f\left(b \mathbf{x} + (1-b) \mathbf{y}\right) \\ =& \lambda g(a) + (1-\lambda) g(b) \end{aligned} \tag{14} ===g(λa+(1λ)b)f((λa+(1λ)b)x+(1λa(1λ)b)y)f(λ(ax+(1a)y)+(1λ)(bx+(1b)y))λf(ax+(1a)y)+(1λ)f(bx+(1b)y)λg(a)+(1λ)g(b)(14) 为了证明这一点,我们可以证明对 [ 0 , 1 ] [0,1] [01]中所有的 λ \lambda λ,
f ( λ x + ( 1 − λ ) y ) = g ( λ ⋅ 1 + ( 1 − λ ) ⋅ 0 ) ≤ λ g ( 1 ) + ( 1 − λ ) g ( 0 ) = λ f ( x ) + ( 1 − λ ) f ( y ) (15) \begin{aligned} &f(\lambda \mathbf{x} + (1-\lambda) \mathbf{y})\\ =&g(\lambda \cdot 1 + (1-\lambda) \cdot 0)\\ \leq& \lambda g(1) + (1-\lambda) g(0) \\ =& \lambda f(\mathbf{x}) + (1-\lambda) f(\mathbf{y}) \end{aligned} \tag{15} ==f(λx+(1λ)y)g(λ1+(1λ)0)λg(1)+(1λ)g(0)λf(x)+(1λ)f(y)(15)

  最后,利用上面的引理和一维情况的结果,我们可以证明多维情况:多维函数 f : R n → R f:\mathbb{R}^n\rightarrow\mathbb{R} f:RnR是凸函数,当且仅当 g ( z ) = d e f f ( z x + ( 1 − z ) y ) g(z) \stackrel{\mathrm{def}}{=} f(z \mathbf{x} + (1-z) \mathbf{y}) g(z)=deff(zx+(1z)y)是凸的,这里 z ∈ [ 0 , 1 ] z \in [0,1] z[0,1] x , y ∈ R n \mathbf{x}, \mathbf{y} \in \mathbb{R}^n x,yRn。根据一维情况,此条成立的条件为,当且仅当对于所有 x , y ∈ R n \mathbf{x}, \mathbf{y} \in \mathbb{R}^n x,yRn g ′ ′ = ( x − y ) ⊤ H ( x − y ) ≥ 0 g'' = (\mathbf{x} - \mathbf{y})^\top \mathbf{H}(\mathbf{x} - \mathbf{y}) \geq 0 g′′=(xy)H(xy)0 H = d e f ∇ 2 f \mathbf{H} \stackrel{\mathrm{def}}{=} \nabla^2f H=def2f)。这相当于根据半正定矩阵的定义, H ≥ 0 \mathbf{H} \geq 0 H0

三、约束

  凸优化的一个很好的特性是能够让我们有效地处理约束(constraints)。即它使我们能够解决以下形式的约束优化(constrained optimization)问题:
m i n i m i z e x f ( x ) 使得所有  i ∈ { 1 , … , N } , 满足  c i ( x ) ≤ 0 (16) \begin{aligned} &\mathop{\mathrm{minimize~}}\limits_{\mathbf{x}} f(\mathbf{x}) \\ &\text{ 使得所有 } i \in \{1, \ldots, N\} , \text{ 满足 } c_i(\mathbf{x}) \leq 0 \end{aligned} \tag{16} xminimize f(x) 使得所有 i{1,,N}, 满足 ci(x)0(16)

这里 f f f是目标函数, c i c_i ci是约束函数。例如第一个约束 c 1 ( x ) = ∥ x ∥ 2 − 1 c_1(\mathbf{x}) = \|\mathbf{x}\|_2 - 1 c1(x)=x21,则参数 x \mathbf{x} x被限制为单位球。如果第二个约束 c 2 ( x ) = v ⊤ x + b c_2(\mathbf{x}) = \mathbf{v}^\top \mathbf{x} + b c2(x)=vx+b,那么这对应于半空间上所有的 x \mathbf{x} x。同时满足这两个约束等于选择一个球的切片作为约束集。

(一)拉格朗日函数

  通常,求解一个有约束的优化问题是困难的,解决这个问题的一种方法来自物理中相当简单的直觉。想象一个球在一个盒子里,球会滚到最低的地方,重力将与盒子两侧对球施加的力平衡。简而言之,目标函数(即重力)的梯度将被约束函数的梯度所抵消(由于墙壁的“推回”作用,需要保持在盒子内)。请注意,任何不起作用的约束(即球不接触壁)都将无法对球施加任何力。

  这里我们简略拉格朗日函数 L L L的推导,上述推理可以通过以下鞍点优化问题来表示:
L ( x , α 1 , … , α n ) = f ( x ) + ∑ i = 1 n α i c i ( x ) , 其中  α i ≥ 0 (17) L(\mathbf{x}, \alpha_1, \ldots, \alpha_n) = f(\mathbf{x}) + \sum_{i=1}^n \alpha_i c_i(\mathbf{x}) ,\text{ 其中 } \alpha_i \geq 0 \tag{17} L(x,α1,,αn)=f(x)+i=1nαici(x) 其中 αi0(17)

  这里的变量 α i \alpha_i αi i = 1 , … , n i=1,\ldots,n i=1,,n)是所谓的拉格朗日乘数(Lagrange multipliers),它确保约束被正确地执行。选择它们的大小足以确保所有 i i i c i ( x ) ≤ 0 c_i(\mathbf{x}) \leq 0 ci(x)0。例如,对于 c i ( x ) < 0 c_i(\mathbf{x}) < 0 ci(x)<0中任意 x \mathbf{x} x,我们最终会选择 α i = 0 \alpha_i = 0 αi=0。此外,这是一个鞍点(saddlepoint)优化问题。在这个问题中,我们想要使 L L L相对于 α i \alpha_i αi最大化(maximize),同时使它相对于 x \mathbf{x} x最小化(minimize)。有大量的文献解释如何得出函数 L ( x , α 1 , … , α n ) L(\mathbf{x}, \alpha_1, \ldots, \alpha_n) L(x,α1,,αn)。我们这里只需要知道 L L L的鞍点是原始约束优化问题的最优解就足够了。

(二)惩罚

  一种至少近似地满足约束优化问题的方法是采用拉格朗日函数 L L L。除了满足 c i ( x ) ≤ 0 c_i(\mathbf{x}) \leq 0 ci(x)0之外,我们只需将 α i c i ( x ) \alpha_i c_i(\mathbf{x}) αici(x)添加到目标函数 f ( x ) f(x) f(x)。这样可以确保不会严重违反约束。

  事实上,我们一直在使用这个技巧。比如权重衰减,在目标函数中加入 λ 2 ∣ w ∣ 2 \frac{\lambda}{2} |\mathbf{w}|^2 2λw2,以确保 w \mathbf{w} w不会增长太大。使用约束优化的观点,我们可以看到,对于若干半径 r r r,这将确保 ∣ w ∣ 2 − r 2 ≤ 0 |\mathbf{w}|^2 - r^2 \leq 0 w2r20。通过调整 λ \lambda λ的值,我们可以改变 w \mathbf{w} w的大小。

  通常,添加惩罚是确保近似满足约束的一种好方法。在实践中,这被证明比精确的满意度更可靠。此外,对于非凸问题,许多使精确方法在凸情况下的性质(例如,可求最优解)不再成立。

(三)投影

  满足约束条件的另一种策略是投影(projections)。同样,我们之前也遇到过,例如在循环神经网络的从零开始实现中处理梯度截断时,我们通过
g ← g ⋅ m i n ( 1 , θ / ∥ g ∥ ) (18) \mathbf{g} \leftarrow \mathbf{g} \cdot \mathrm{min}(1, \theta/\|\mathbf{g}\|) \tag{18} ggmin(1,θ/∥g)(18) 确保梯度的长度以 θ \theta θ为界限。

  这就是 g \mathbf{g} g在半径为 θ \theta θ的球上的投影(projection)。更泛化地说,在凸集 X \mathcal{X} X上的投影被定义为
P r o j X ( x ) = a r g m i n x ′ ∈ X ∥ x − x ′ ∥ (19) \mathrm{Proj}_\mathcal{X}(\mathbf{x}) = \mathop{\mathrm{argmin}}\limits_{\mathbf{x}' \in \mathcal{X}} \|\mathbf{x} - \mathbf{x}'\| \tag{19} ProjX(x)=xXargminxx(19) 它是 X \mathcal{X} X中离 X \mathbf{X} X最近的点。

在这里插入图片描述

图4 凸投影

  投影的数学定义听起来可能有点抽象,为了解释得更清楚一些,请看图4。图中有两个凸集,一个圆和一个菱形。两个集合内的点(黄色)在投影期间保持不变。两个集合(黑色)之外的点投影到集合中接近原始点(黑色)的点(红色)。虽然对 L 2 L_2 L2的球面来说,方向保持不变,但一般情况下不需要这样。

  凸投影的一个用途是计算稀疏权重向量。在本例中,我们将权重向量投影到一个 L 1 L_1 L1的球上,这是图4中菱形例子的一个广义版本。

小结

在深度学习的背景下,凸函数的主要目的是帮助我们详细了解优化算法。我们由此得出梯度下降法和随机梯度下降法是如何相应推导出来的。

  • 凸集的交点是凸的,并集不是。
  • 根据詹森不等式,“一个多变量凸函数的总期望值”大于或等于“用每个变量的期望值计算这个函数的总值“。
  • 一个二次可微函数是凸函数,当且仅当其Hessian(二阶导数矩阵)是半正定的。
  • 凸约束可以通过拉格朗日函数来添加。在实践中,只需在目标函数中加上一个惩罚就可以了。
  • 投影映射到凸集中最接近原始点的点。

相关文章:

【深度学习优化算法】02:凸性

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

JAVA国际版一对一视频交友视频聊天系统源码支持H5+APP

全球畅连无界社交&#xff1a;JAVA国际版一对一视频交友系统源码&#xff08;H5APP双端覆盖&#xff09; 在全球化社交需求激增的今天&#xff0c;构建一个支持多语言、适配国际支付且功能丰富的视频交友平台&#xff0c;成为出海创业者和企业的核心诉求。JAVA国际版一对一视频…...

策略公开了:年化494%,夏普比率5.86,最大回撤7% | 大模型查询akshare,附代码

原创内容第907篇&#xff0c;专注智能量化投资、个人成长与财富自由。 这位兄弟的策略公开了&#xff0c;年化494%&#xff0c;夏普比率5.86&#xff0c;最大回撤7%&#xff0c;欢迎大家前往围观&#xff1a; http://www.ailabx.com/strategy/683ed10bdabe146c4c0b2293 系统代…...

【C++】string类的模拟实现(详解)

文章目录 上文链接一、整体框架二、构造函数1. default2. copy3. range 三、析构函数四、拷贝构造(1) 传统写法(2) 现代写法 五、赋值重载(1) 传统写法(2) 现代写法 六、获取元素1. operator[ ] 七、迭代器1. begin2. end 八、容量相关1. size2. reserve3. clear 九、修改操作1…...

业界宽松内存模型的不统一而导致的软件问题, gcc, linux kernel, JVM

当不同CPU厂商未能就统一的宽松内存模型&#xff08;Relaxed Memory Model&#xff09;达成一致&#xff0c;很多软件的可移植性会收到限制或损害&#xff0c;主要体现在以下几个方面&#xff1a; 1. 可能的理论限制 1.1. 并发程序的行为不一致 现象上&#xff0c;同一段多线程…...

多模态大语言模型arxiv论文略读(101)

ML-Mamba: Efficient Multi-Modal Large Language Model Utilizing Mamba-2 ➡️ 论文标题&#xff1a;ML-Mamba: Efficient Multi-Modal Large Language Model Utilizing Mamba-2 ➡️ 论文作者&#xff1a;Wenjun Huang, Jiakai Pan, Jiahao Tang, Yanyu Ding, Yifei Xing, …...

量化Quantization初步之--带量化(QAT)的XOR异或pyTorch版250501

量化(Quantization)这词儿听着玄&#xff0c;经常和量化交易Quantitative Trading (量化交易)混淆。 其实机器学习(深度学习)领域的量化Quantization是和节约内存、提高运算效率相关的概念&#xff08;因大模型的普及&#xff0c;这个量化问题尤为迫切&#xff09;。 揭秘机器…...

Linux Maven Install

在 CentOS&#xff08;例如 CentOS 7 或 CentOS 8&#xff09;中安装 Maven&#xff08;Apache Maven&#xff09;的方法主要有两种&#xff1a;使用包管理器&#xff08;简单但可能版本较旧&#xff09;&#xff0c;或者手动安装&#xff08;推荐&#xff0c;可获得最新版&…...

#Java篇:学习node后端之sql常用操作

学习路线 1、javascript基础&#xff1b; 2、nodejs核心模块 fs: 文件系统操作 path: 路径处理 http / https: 创建服务器或发起请求 events: 事件机制&#xff08;EventEmitter&#xff09; stream: 流式数据处理 buffer: 处理二进制数据 os: 获取操作系统信息 util: 工具方…...

电网“逆流”怎么办?如何实现分布式光伏发电全部自发自用?

2024年10月9日&#xff0c;国家能源局综合司发布了《分布式光伏发电开发建设管理办法&#xff08;征求意见稿&#xff09;》&#xff0c;意见稿规定了户用分布式光伏、一般工商业分布式光伏以及大型工商业分布式光伏的发电上网模式&#xff0c;当选择全部自发自用模式时&#x…...

如何查看电脑电池性能

检查电脑电池性能的方法如下&#xff1a; 按下winR键&#xff0c;输入cmd回车&#xff0c;进入命令行窗口 在命令行窗口输入powercfg /batteryreport 桌面双击此电脑&#xff0c;把刚刚复制的路径粘贴到文件路径栏&#xff0c;然后回车 回车后会自动用浏览器打开该报告 红…...

kubernetes》》k8s》》kubectl proxy 命令后面加一个

命令后面加一个& 在Linux终端中&#xff0c;如果在命令的末尾加上一个&符号&#xff0c;这表示将这个任务放到后台去执行 kubectl proxy 官网资料 是 Kubernetes 提供的一个命令行工具&#xff0c;用于在本地和 Kubernetes API Server 之间创建一个安全的代理通道。…...

深入理解Linux系统进程切换

目录 引言 一、什么是进程切换&#xff1f; 二、进程切换的触发条件 三、进程切换的详细步骤 1、保存当前进程上下文&#xff1a; 2、更新进程控制块(PCB)&#xff1a; 3、选择下一个进程&#xff1a; 4、恢复新进程上下文&#xff1a; 5、切换地址空间&#xff1a; 6…...

网络安全运维实训室建设方案

一、网络安全运维人才需求与实训困境 在数字化时代&#xff0c;网络安全已成为国家安全、社会稳定和经济发展的重要基石。随着信息技术的飞速发展&#xff0c;网络安全威胁日益复杂多样&#xff0c;从个人隐私泄露到企业商业机密被盗&#xff0c;从关键基础设施遭受攻击到社会…...

DBeaver 连接mysql报错:CLIENT_PLUGIN_AUTH is required

DBeaver 连接mysql报错&#xff1a;CLIENT_PLUGIN_AUTH is required 一、必须要看这个 >> &#xff1a;参考文献 二、补充 2.1 说明 MySQL5、6这些版本比较老&#xff0c;而DBeaver默认下载的是MySQL8的连接库&#xff0c;所以连接旧版本mysql报错&#xff1a;CLIEN…...

联通专线赋能,亿林网络裸金属服务器:中小企业 IT 架构升级优选方案

在当今数字化飞速发展的时代&#xff0c;中小企业面临着日益增长的业务需求与复杂多变的市场竞争环境。如何构建高效、稳定且具性价比的 IT 架构&#xff0c;成为众多企业突破发展瓶颈的关键所在。而亿林网络推出的 24 核 32G 裸金属服务器&#xff0c;搭配联通专线的千兆共享带…...

Web3时代的数据保护挑战与应对策略

随着互联网技术的飞速发展&#xff0c;我们正步入Web3时代&#xff0c;这是一个以去中心化、用户主权和数据隐私为核心的新时代。然而&#xff0c;Web3时代也带来了前所未有的数据保护挑战。本文将探讨这些挑战&#xff0c;并提出相应的应对策略。 数据隐私挑战 在Web3时代&a…...

Qwen3与MCP协议:重塑大气科学的智能研究范式

在气象研究领域&#xff0c;从海量数据的解析到复杂气候模型的构建&#xff0c;科研人员长期面临效率低、门槛高、易出错的挑战。而阿里云推出的Qwen3大模型与MCP协议的结合&#xff0c;正通过混合推理模式与标准化协同机制&#xff0c;为大气科学注入全新活力。本文将深入解析…...

CppCon 2015 学习:Benchmarking C++ Code

关于性能问题与调试传统 bug&#xff08;如段错误&#xff09;之间差异的分析。以下是对这一页内容的详细解释&#xff1a; 主题&#xff1a;传统问题&#xff08;如段错误&#xff09;调试流程清晰 问题类型&#xff1a;段错误&#xff08;Segmentation Fault&#xff09; …...

URL 结构说明+路由(接口)的认识

一、URL 结构说明 以这个为例&#xff1a;http://127.0.0.1:5000/zhouleifeng 1.组成部分: http://&#xff1a;协议 127.0.0.1&#xff1a;主机&#xff08;本地地址&#xff09; :5000&#xff1a;端口号&#xff08;Flask 默认 5000&#xff09; /zhouleifeng&#xff1a…...

省赛中药检测模型调优

目录 一、baseline性能二、baseline DETR head三、baseline RepC3K2四、baseline RepC3K2 SimSPPF五、baseline RepC3K2 SimSPPF LK-C2PSA界面1.引入库2.读入数据 总结 一、baseline性能 Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size120/120 …...

linux 故障处置通用流程-36计+1计

通用标准处置快速索引 编号 通 用 标 准 处 置 索 引 001 Linux操作系统标准关闭 002 Linux操作系统标准重启 003 Linux操作系统强行关闭 004 Linux操作系统强行重启 005 检查Linux操作系统CPU负载 006 查询占用CPU资源最多的进程 007 检查Linux操…...

​BEV和OCC学习-3:mmdet3d 坐标系

目录 坐标系 转向角 (yaw) 的定义 框尺寸的定义 与支持的数据集的原始坐标系的关系 KITTI Waymo NuScenes Lyft ScanNet SUN RGB-D S3DIS 坐标系 坐标系 — MMDetection3D 1.4.0 文档https://mmdetection3d.readthedocs.io/zh-cn/latest/user_guides/coord_sys_tuto…...

[蓝桥杯]图形排版

图形排版 题目描述 小明需要在一篇文档中加入 NN 张图片&#xff0c;其中第 ii 张图片的宽度是 WiWi​&#xff0c;高度是 HiHi​。 假设纸张的宽度是 MM&#xff0c;小明使用的文档编辑工具会用以下方式对图片进行自动排版&#xff1a; 1. 该工具会按照图片顺序&#xff0…...

【Linux仓库】冯诺依曼体系结构与操作系统【进程·壹】

&#x1f31f; 各位看官好&#xff0c;我是&#xff01; &#x1f30d; Linux Linux is not Unix &#xff01; &#x1f680; 今天来学习冯诺依曼体系结构与操作系统。 &#x1f44d; 如果觉得这篇文章有帮助&#xff0c;欢迎您一键三连&#xff0c;分享给更多人哦&#xff0…...

CloudFront 加速详解:AWS CDN 怎么用?

让全球访问更快速稳定&#xff0c;深入解读 AWS 的内容分发网络 在上一篇中&#xff0c;我们介绍了 Amazon S3 对象存储&#xff0c;它非常适合托管静态资源&#xff0c;比如图片、视频、网页等。但你可能遇到过这样的问题&#xff1a; “我把网站静态文件部署到了 S3&#xf…...

《高级架构师》------- 考后感想

笔者来聊一下架构师考后的感想 复习备考 考前过了很多知识点&#xff0c;只是蜻蜓点水&#xff0c;没有起到复习的作用&#xff0c;即使考出来也不会&#xff0c;下次复习注意这个&#xff0c;复习到了&#xff0c;就记住&#xff0c;或者画出来&#xff0c;或者文件总结&…...

【iOS】YYModel源码解析

YYModel源码解析 文章目录 YYModel源码解析前言YYModel性能优势YYModel简介YYClassInfo解析YYClassIvarInfo && objc_ivarYYClassMethodInfo && objc_methodYYClassPropertyInfo && property_tYYClassInfo && objc_class YYClassInfo的初始化细…...

C++算法训练营 Day6 哈希表(1)

1.有效的字母异位词 LeetCode&#xff1a;242.有效的字母异位词 给定两个字符串s和t &#xff0c;编写一个函数来判断t是否是s的字母异位词。 示例 1: 输入: s “anagram”, t “nagaram” 输出: true 示例 2: 输入: s “rat”, t “car” 输出: false 解题思路&#xff…...

【C语言编译与链接】--翻译环境和运行环境,预处理,编译,汇编,链接

目录 一.翻译环境和运行环境 二.翻译环境 2.1--预处理(预编译) 2.2--编译 2.2.1--词法分析 2.2.2--语法分析 2.2.3--语义分析 2.3--汇编 2.4--链接 三.运行环境 &#x1f525;个人主页&#xff1a;草莓熊Lotso的个人主页 &#x1f3ac;作者简介&#xff1a;C研发…...