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

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

给定一个函数 f:RnRf: \mathbb{R}^n \to \mathbb{R},其共轭函数 ff^* 定义为:

f(y)=supxdom f(yTxf(x))f^*(y) = \sup_{x \in \text{dom } f} (y^T x - f(x))
  • yTxy^T x :向量 yyxx 的内积,线性函数

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

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

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

计算共轭函数#

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

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

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

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

f(y)=supx>0(yxxlogx)x(yxxlogx)=ylogx1=0x=ey1f(y)=yey1ey1logey1=ey1f^*(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对偶在特定约束条件下的一个特例。

原问题形式一般长这样:

minxf(x)+g(Ax)\min_{x} f(x) + g(Ax)

Fenchel对偶问题的形式是:

maxyf(ATy)g(y)\max_{y} -f^*(-A^T y) - g^*(y)

这里 ff^*ff 的共轭函数,f(ATy)=supx(yTAxf(x))f^*(-A^T y)=\sup_{x} (-y^T A x - f(x))gg^*gg 的共轭函数,g(y)=supz(yTzg(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/aimath/fenchel-dual/
作者
Biscuit
发布于
2026-05-15
许可协议
CC BY-NC-SA 4.0