- 牛背上的架子称为轭,一个轭由两头牛同步行走牵引就叫做 “共轭”,引申意为按一定的规律相配的一对,这个术语在数学、物理、化学、地理等学科中都有出现
- 本文介绍共轭函数,共轭函数和原函数是紧密相关的,而且对任意函数做两次共轭就能把它转换为一个和原函数的相似的凸函数,这个性质很好,因而在优化领域中经常用到
- 参考:
文章目录
1. 勒让德变换 Legendre transformation
1.1 公式推导
-
勒让德变换是一个在数学和物理中常见的技巧,设函数 f ( x , y ) : R m + n → R f(\pmb{x},\pmb{y}):\mathbb{R}^{m+n}\to\mathbb{R} f(x,y):Rm+n→R 勒让德变换将其变为 G ( u , y ) R m + n → R G(\pmb{u},\pmb{y}) \mathbb{R}^{m+n}\to\mathbb{R} G(u,y)Rm+n→R
f ( x , y ) ⟶ G ( u , y ) f(\pmb{x},\pmb{y}) \longrightarrow G(\pmb{u},\pmb{y}) f(x,y)⟶G(u,y) 其中 x , u ∈ R n , y ∈ R m \pmb{x},\pmb{u}\in \mathbb{R}^n, \pmb{y}\in \mathbb{R}^m x,u∈Rn,y∈Rm,也就是说勒让德变换得到的新函数与原函数的前 n n n 维参数不同,同时保持后 m m m 维参数不变。通常的情况是对每一个维度都进行变换(即 m = 0 m=0 m=0),此时勒让德变换也可表示为
f ( x ) ⟶ G ( u ) f(\pmb{x}) \longrightarrow G(\pmb{u}) f(x)⟶G(u) -
下面考察如何从 f ( x , y ) f(\pmb{x},\pmb{y}) f(x,y) 构造出 G ( u , y ) G(\pmb{u},\pmb{y}) G(u,y)
- 对
f
f
f 求全微分,令
u
i
=
∂
f
∂
x
i
u_i = \frac{\partial f}{\partial x_i}
ui=∂xi∂f
d f = ∑ i = 1 n ∂ f ∂ x i d x i + ∑ j = 1 m ∂ f ∂ y j d y j = ∑ i = 1 n u i d x i + ∑ j = 1 m ∂ f ∂ y j d y j ( 令 u i = ∂ f ∂ x i ) = ( ∑ i = 1 n d u i x i − ∑ i = 1 n x i d u i ) + ∑ j = 1 m ∂ f ∂ y j d y j ( d ( u x ) = u d x + x d u ) ⟹ d ( ∑ i = 1 n u i x i − f ) = ∑ i = 1 n x i d u i − ∑ j = 1 m ∂ f ∂ y j d y j (1) \begin{aligned} df &= \sum_{i=1}^n \frac{\partial f}{\partial x_i}dx_i + \sum_{j=1}^m\frac{\partial f}{\partial y_j}dy_j\\ &= \sum_{i=1}^n u_idx_i + \sum_{j=1}^m\frac{\partial f}{\partial y_j}dy_j && (令 u_i = \frac{\partial f}{\partial x_i}) \\ &= (\sum_{i=1}^n du_ix_i-\sum_{i=1}^nx_idu_i) + \sum_{j=1}^m\frac{\partial f}{\partial y_j}dy_j &&(d(ux)=udx+xdu) \\ \Longrightarrow \space\space d(\sum_{i=1}^nu_ix_i - f) &= \sum_{i=1}^nx_idu_i - \sum_{j=1}^m\frac{\partial f}{\partial y_j}dy_j \end{aligned} \tag{1} df⟹ d(i=1∑nuixi−f)=i=1∑n∂xi∂fdxi+j=1∑m∂yj∂fdyj=i=1∑nuidxi+j=1∑m∂yj∂fdyj=(i=1∑nduixi−i=1∑nxidui)+j=1∑m∂yj∂fdyj=i=1∑nxidui−j=1∑m∂yj∂fdyj(令ui=∂xi∂f)(d(ux)=udx+xdu)(1) - 令
G
(
u
,
y
)
=
∑
i
=
1
n
u
i
x
i
−
f
(
x
,
y
)
=
u
⊤
x
−
f
(
x
,
y
)
G(\pmb{u},\pmb{y}) = \sum_{i=1}^nu_ix_i -f(\pmb{x},\pmb{y}) = \pmb{u}^\top\pmb{x}-f(\pmb{x},\pmb{y})
G(u,y)=∑i=1nuixi−f(x,y)=u⊤x−f(x,y)
d G ( u , y ) = ∑ i = 1 n ∂ G ∂ u i d u i + ∑ j = 1 m ∂ G ∂ y j d y j = ∑ i = 1 n x i d u i − ∑ j = 1 m ∂ f ∂ y j d y j ( 由 ( 1 ) 式 ) \begin{aligned} dG(\pmb{u},\pmb{y}) &= \sum_{i=1}^n \frac{\partial G}{\partial u_i}du_i + \sum_{j=1}^m\frac{\partial G}{\partial y_j}dy_j\\ &= \sum_{i=1}^nx_idu_i - \sum_{j=1}^m\frac{\partial f}{\partial y_j}dy_j &(由(1)式) \end{aligned} dG(u,y)=i=1∑n∂ui∂Gdui+j=1∑m∂yj∂Gdyj=i=1∑nxidui−j=1∑m∂yj∂fdyj(由(1)式) - 对应位置相等,再联立第一步对
u
i
u_i
ui 的定义,得到以下三个结果
{ ∂ f ∂ x i = u i ( 新变量 = 旧函数对旧变量求偏导 ) ∂ G ∂ u i = x i ( 旧变量 = 新函数对新变量求偏导 ) ∂ G ∂ y i = − ∂ f ∂ y i ( 新函数对不变量求偏导 = 负的旧函数对不变量求偏导 ) (2) \left\{ \begin{aligned} \frac{\partial f}{\partial x_i}&= u_i &&(新变量=旧函数对旧变量求偏导) \\ \frac{\partial G}{\partial u_i} &= x_i &&(旧变量=新函数对新变量求偏导) \\ \frac{\partial G}{\partial y_i} &= -\frac{\partial f}{\partial y_i} &&(新函数对不变量求偏导 = 负的旧函数对不变量求偏导 ) \end{aligned} \right. \tag{2} ⎩ ⎨ ⎧∂xi∂f∂ui∂G∂yi∂G=ui=xi=−∂yi∂f(新变量=旧函数对旧变量求偏导)(旧变量=新函数对新变量求偏导)(新函数对不变量求偏导=负的旧函数对不变量求偏导)(2)
综上所述,勒让德变换就是对原函数 f ( x , y ) f(\pmb{x},\pmb{y}) f(x,y) 做如下变换
G ( u , y ) = u ⊤ x − f ( x , y ) G(\pmb{u},\pmb{y}) = \pmb{u}^\top\pmb{x}-f(\pmb{x},\pmb{y}) G(u,y)=u⊤x−f(x,y) 不存在不变量时,勒让德变换也可表示为
G ( u ) = u ⊤ x − f ( x ) G(\pmb{u}) = \pmb{u}^\top\pmb{x}-f(\pmb{x}) G(u)=u⊤x−f(x) - 对
f
f
f 求全微分,令
u
i
=
∂
f
∂
x
i
u_i = \frac{\partial f}{\partial x_i}
ui=∂xi∂f
1.2 几何解释
-
注意新变量 ∂ f ∂ x i = u i \frac{\partial f}{\partial x_i}= u_i ∂xi∂f=ui 是 “旧函数对旧变量求偏导”,且 G ( u ) G(\pmb{u}) G(u) 的表达式是线性组合的形式,从几何上看,勒让德变换将函数与其切线联系到一起,见下图
这里蓝色线是原函数 f ( x ) f(x) f(x),在 x x x 位置斜率为 ∂ f ∂ x = u \frac{\partial f}{\partial x}=u ∂x∂f=u,黑色线为 x x x 处变换得到的 G ( u = ∂ f ∂ x ) G(u=\frac{\partial f}{\partial x}) G(u=∂x∂f),图中 F , G , x , s x F,G,x,sx F,G,x,sx 等表示对应边长度。为了方便观测,将 G ( u = ∂ f ∂ x ) G(u=\frac{\partial f}{\partial x}) G(u=∂x∂f) 向下平移到与 f ( x ) f(x) f(x) 相切处得到红色线,注意红色线作为斜边的这个直角三角形,其底长 x x x,高 s x = ∂ f ∂ x x = u x = F + G = f ( x ) + G ⇒ u x − f ( x ) = G = G ( u = ∂ f ∂ x ) \begin{aligned}&sx=\frac{\partial f}{\partial x}x=ux=F+G=f(x)+G\\ \Rightarrow \space\space &ux -f(x)=G=G(u=\frac{\partial f}{\partial x})\end{aligned} ⇒ sx=∂x∂fx=ux=F+G=f(x)+Gux−f(x)=G=G(u=∂x∂f) 这里 G G G 是原函数 f ( x ) f(x) f(x) 在 x x x 点处切线的负截距,也就是说 x x x 处变换得到的 G ( u = ∂ f ∂ x ) G(u=\frac{\partial f}{\partial x}) G(u=∂x∂f) 值正是 f ( x ) f(x) f(x) 在 x x x 处切线的负截距值。从几何上这代表靠上的浅绿色线长度也是 G G G,这是显然的,因为红黑两条线之间构成了平行四边形
-
一句话总结一下:勒让德变换得到 “原函数负截距按斜率作为输入的新函数”
-
举个具体的例子,原函数为 f ( x ) = x 2 2 f(x)=\frac{x^2}{2} f(x)=2x2,则 u = d f d x = x , G ( u ) = u x − f ( x ) = u 2 2 u=\frac{df}{dx}=x, \space G(u)=ux-f(x)=\frac{u^2}{2} u=dxdf=x, G(u)=ux−f(x)=2u2,随着 x x x 的变化,下面左图显示了原函数负截距的变化情况,右图显示勒让德变换在不同 x x x 处得到的函数值的变化情况,可见二者始终相等
2. 共轭函数 Conjugate function
- 共轭函数是对勒让德变换的推广
2.1 勒让德变换的局限性
-
勒让德变换有两个局限性
- 要求 f , G f,G f,G 都必须可导,否则上述推导过程(也是变换过程)没法做
- 要求
f
f
f 必须是凸函数,否则可能有多个
x
i
x_i
xi 取值使
∂
f
∂
x
\frac{\partial f}{\partial x}
∂x∂f 相等,这样对于同一个斜率会得到多个截距,勒让德变换得到的就不是函数了,如下所示
Fenchel 推广了 Legendre 变换,回避这两个限制从而提出了共轭函数的概念
2.2 共轭函数
-
设函数 f ( x ) : R n → R f(\pmb{x}):\mathbb{R}^{n}\to\mathbb{R} f(x):Rn→R,定义函数 f ∗ ( y ) : R n → R f^*(\pmb{y}): \mathbb{R}^{n}\to\mathbb{R} f∗(y):Rn→R 为
f ∗ ( y ) = sup x ∈ dom f ( y ⊤ x − f ( x ) ) f^*(\pmb{y}) = \sup_{x\in\text{dom} \space f}( \pmb{y}^\top\pmb{x}-f(\pmb{x})) f∗(y)=x∈dom fsup(y⊤x−f(x)) 此函数称为函数 f ( x ) f(\pmb{x}) f(x) 的共轭函数。使上述上确界 sup \sup sup 有限(即差值 y ⊤ x − f ( x ) \pmb{y}^\top\pmb{x}-f(\pmb{x}) y⊤x−f(x) 在 dom f \text{dom}\space f dom f 有上界)的所有 y ∈ R n \pmb{y}\in\mathbb{R}^n y∈Rn构成了共轭函数 f ∗ ( y ) f^*(\pmb{y}) f∗(y) 的定义域注:共轭函数和勒让德变换的唯一区别就是加了一个上确界,这里符号按习惯来和前面有点区别,其实没有本质不同
-
加上这个上确界的限制后,从几何上观察一下哪里出现了变化
这里原函数 f ( x ) f(\pmb{x}) f(x) 是非凸的,观察左图,显然 “1” 位置是没法做勒让德变换的,因为此处 f ( x ) f(\pmb{x}) f(x) 的斜率和 “2” 位置相等,变换后的截距不唯一。这时引入上确界可以限制我们只能唯一地选择令 y ⊤ x \pmb{y}^\top\pmb{x} y⊤x(即图中 k x kx kx)超过 f ( x f(\pmb{x} f(x 最多的位置,也就是在 “1” 位置进行变换,得到的共轭函数值就是此处切线的负截距事实上,引入上确界后得到的共轭函数一定是凸函数,因为 y ⊤ x − f ( x ) \pmb{y}^\top\pmb{x}-f(\pmb{x}) y⊤x−f(x) 对于 y \pmb{y} y 而言是仿射函数,而一族仿射函数的逐点上确界是凸函数(参考此处),因此引入 sup \sup sup 解除了 f f f 必须是凸函数的限制
2.3 共轭函数的性质
-
Fenchel 不等式: f ∗ ( y ) ≥ y ⊤ x − f ( x ) f^*(\pmb{y})\geq \pmb{y}^\top\pmb{x}-f(\pmb{x}) f∗(y)≥y⊤x−f(x)。这个从定义直接能得到
-
若 f f f 是凸函数且可微,则其勒让德变换和共轭函数相同。这个也很好证明,如果 f ( x ) f(\pmb{x}) f(x) 是凸的,那它取负再加一个仿射函数后得到的 y ⊤ x − f ( x ) \pmb{y}^\top\pmb{x}-f(\pmb{x}) y⊤x−f(x) 一定是凹的,凹函数一定在梯度等于 0 处取最大值,令梯度为 0 得到 y = f ′ ( x ) \pmb{y} = f'(\pmb{x}) y=f′(x),代入可见这时共轭函数和勒让德变换相同
-
如果 f f f 是凸函数且其上镜集是闭集,则 f ( x ) = f ∗ ∗ ( x ) f(\pmb{x})=f^{**}(\pmb{x}) f(x)=f∗∗(x) (自己共轭的共轭是自己,注意回到用 x \pmb{x} x 为自变量了)
上镜集(epigraph)是值大于函数值的点构成的区域,如
上镜集是闭集合意味着 f ( x ) f(\pmb{x}) f(x) 是连续的,否则在 f ( x ) f(\pmb{x}) f(x) 间断处其上镜集是开的当 f ( x ) f(\pmb{x}) f(x) 是凸函数时,其共轭函数 f ∗ ( y ) f^*(\pmb{y}) f∗(y) 可以近似看做 f ( x ) f(\pmb{x}) f(x) 各点处切线围成的图,这二者是很像的
注意不要真的把共轭函数看做各点处切线的拼接,因为共轭函数的取值是原函数负截距,自变量是原函数各处梯度,完全不一样,只是二者形似
简单证明一下 f ( x ) = f ∗ ∗ ( x ) f(\pmb{x})=f^{**}(\pmb{x}) f(x)=f∗∗(x)
f ∗ ( y ) = sup x ( y ⊤ x − f ( x ) ) = f ′ ( x 0 ) ⊤ x 0 − f ( x 0 ) f ∗ ∗ ( x ) = sup x ( x ⊤ y − f ∗ ( y ) ) = sup x ( x ⊤ y − ( f ′ ( x 0 ) ⊤ x 0 − f ( x 0 ) ) ) = sup x ( f ′ ( x 0 ) ⊤ ( x − x 0 ) + f ( x 0 ) ) = f ( x ) \begin{aligned} f^*(\pmb{y} ) &= \sup_{\pmb{x}}(\pmb{y}^\top\pmb{x}-f(\pmb{x})) \\ &= f'(\pmb{x}_0)^\top\pmb{x}_0 - f(\pmb{x}_0) \\ f^{**}(\pmb{x} ) &= \sup_{\pmb{x}}(\pmb{x}^\top\pmb{y}-f^*(\pmb{y})) \\ &= \sup_{\pmb{x}}(\pmb{x}^\top\pmb{y}- ( f'(\pmb{x}_0)^\top\pmb{x}_0 - f(\pmb{x}_0))) \\ &= \sup_{\pmb{x}}( f'(\pmb{x}_0)^\top(\pmb{x}-\pmb{x}_0)+ f(\pmb{x}_0)) \\ &= f(x) \end{aligned} f∗(y)f∗∗(x)=xsup(y⊤x−f(x))=f′(x0)⊤x0−f(x0)=xsup(x⊤y−f∗(y))=xsup(x⊤y−(f′(x0)⊤x0−f(x0)))=xsup(f′(x0)⊤(x−x0)+f(x0))=f(x) 其中最后一步是因为:当 f f f 为凸函数时,它在任意一点大于等于其泰勒展开 -
当原函数 f ( x ) f(\pmb{x}) f(x) 非凸时,其共轭的共轭 f ∗ ∗ ( x ) f^{**}(\pmb{x}) f∗∗(x) 也很有用
f ∗ ∗ ( x ) f^{**}(\pmb{x}) f∗∗(x) 一定是凸的,而且任意的 y ⊤ x \pmb{y}^\top\pmb{x} y⊤x 会在相同的 x \pmb{x} x 处距离 f ( x ) f(\pmb{x}) f(x) 和 f ∗ ∗ ( x ) f^{**}(\pmb{x}) f∗∗(x) 最远,一个函数共轭的共轭就好像把原函数装在塑料袋一样形成一个凸包注:我认为这个图里把 f ∗ ∗ ( x ) f^{**}({\pmb{x}}) f∗∗(x) 画得太像 f ( x ) f(\pmb{x}) f(x) 切线拼成的了,实际二者应该只是形状类似,但取值不不一定几乎重合
-
仿射变换的共轭: g ( x ) = a f ( x ) + b g(\pmb{x}) = af(\pmb{x})+b g(x)=af(x)+b,则 g ∗ ( y ) = a f ∗ ( y / a ) − b g^*(\pmb{y}) = af^*(\pmb{y}/a)-b g∗(y)=af∗(y/a)−b,证明略
-
复合仿射变换的共轭: g ( x ) = f ( A x + b ) g(\pmb{x}) = f(A\pmb{x}+b) g(x)=f(Ax+b),则 g ∗ ( y ) = f ∗ ( A ⊤ y ) − y ⊤ A − 1 b g^*(\pmb{y}) = f^*(A^\top\pmb{y})-\pmb{y}^\top A^{-1}b g∗(y)=f∗(A⊤y)−y⊤A−1b,证明略
-
独立函数的和的共轭: f ( u , v ) = f 1 ( u ) + f 2 ( v ) f(\pmb{u,v})=f_1(\pmb{u})+f_2(\pmb{v}) f(u,v)=f1(u)+f2(v),则 f ∗ ( w , z ) = f 1 ∗ ( w ) + f 2 ∗ ( z ) f^*(\pmb{w,z}) = f_1^*(\pmb{w})+f_2^*(\pmb{z}) f∗(w,z)=f1∗(w)+f2∗(z),证明略 (独立函数指每个函数的变量不相同)