421 字
2 分钟
Fenchel-dual
2026-05-15
无标签

核心出装:共轭函数(Fenchel Conjugate)#

给定一个函数 f:Rn→Rf: \mathbb{R}^n \to \mathbb{R},其共轭函数 f∗f^* 定义为:

f∗(y)=sup⁡x∈dom f(yTx−f(x))f^*(y) = \sup_{x \in \text{dom } f} (y^T x - f(x))
  • yTxy^T x :向量 yy 和 xx 的内积,线性函数

  • f(x)f(x) :原函数的值

  • sup :取上确界(supremum),即在 xx 的定义域内找到使 yTx−f(x)y^T x - f(x) 最大的值

ps:对于二维情况,x,y 都是实数。y就是斜率。

计算共轭函数#

  1. 按照定义写出 f∗(y)f^*(y) 的表达式

  2. 对 xx 求导,找到使 yTx−f(x)y^T x - f(x) 最大的 xx(即求解 ∇x(yTx−f(x))=0\nabla_x (y^T x - f(x)) = 0)

  3. 将求得的 xx 代入 yTx−f(x)y^T x - f(x) 中,得到 f∗(y)f^*(y) 的表达式

举个例子:f(x)=xlog⁡xf(x) = x\log x,求其共轭函数。

f∗(y)=sup⁡x>0(yx−xlog⁡x)∇x(yx−xlog⁡x)=y−log⁡x−1=0⇒x=ey−1f∗(y)=yey−1−ey−1log⁡ey−1=ey−1f^*(y) = \sup_{x > 0} (yx - x\log x)\\[1ex] \nabla_x (yx - x\log x) = y - \log x - 1 = 0 \Rightarrow x = e^{y-1} \\[1ex] f^*(y) = y e^{y-1} - e^{y-1} \log e^{y-1} = e^{y-1}

Fenchel对偶#

Fenchel对偶是一个更一般的框架,可以处理更广泛的优化问题,包括非凸问题。拉格朗日对偶可以看作是Fenchel对偶在特定约束条件下的一个特例。

原问题形式一般长这样:

min⁡xf(x)+g(Ax)\min_{x} f(x) + g(Ax)

Fenchel对偶问题的形式是:

max⁡y−f∗(−ATy)−g∗(y)\max_{y} -f^*(-A^T y) - g^*(y)

这里 f∗f^* 是 ff 的共轭函数,f∗(−ATy)=sup⁡x(−yTAx−f(x))f^*(-A^T y)=\sup_{x} (-y^T A x - f(x));g∗g^* 是 gg 的共轭函数,g∗(y)=sup⁡z(yTz−g(z))g^*(y)=\sup_{z} (y^T z - g(z))。

g(Ax)g(Ax) 是什么?代表了约束条件,是约束条件的指示函数(indicator function),当 AxAx 满足约束条件时 g(Ax)=0g(Ax)=0,否则 g(Ax)=+∞g(Ax)=+\infty。因此,原问题中的约束条件被隐含在 g(Ax)g(Ax) 中。

例如线性规划标准形式中的约束条件 Ax=bAx = b 可以通过定义 g(z)=0g(z) = 0 if z=bz = b else +∞+\infty 来表示。

Fenchel-dual
https://biscuit0613.github.io/posts/optimization/fenchel-dual/
作者
Biscuit
发布于
2026-05-15
许可协议
CC BY-NC-SA 4.0
收敛与终止条件
次梯度优化