凸优化——详解原函数的对偶函数、对偶问题和共轭函数之间的关系(我尽力了)
一、 原函数的对偶函数和共轭函数
-
对偶函数
原函数 ==> 拉格朗日函数 ==> 对偶函数(拉格朗日对偶函数)
f 0 f_0 f0 ==>L(x, λ \lambda λ,v) ==>D( λ \lambda λ,v)
这里就不具体写形式了,一定要搞清楚各个函数的变量是哪些 -
共轭函数/函数的共轭
我一下午花了很多很多时间看勒让德变换,终于搞懂共轭函数是啥了!
B站此小姐姐的数学实在太好了
维基-勒让德变换
f ∗ ( y ) = s u p ( y T x − f ( x ) ) f^*(y)=sup(y^Tx-f(x)) f∗(y)=sup(yTx−f(x))
(公式我省略了sub下面的定义域,不知道怎么打出来)
相信很多人看了公式跟我一样是很懵逼的,跟我们以前学的复数共轭完全不一样,有减法而且还有个sub
重点来了(到二之前都是在解释共轭函数):有时候我们不喜欢一个函数里的某些或所有自变量表示,我们就想改变这些自变量而不改变另外一些;这就发生了换元。
而这里——函数共轭,我们不喜欢原函数用某点的横纵坐标(x,y)表示,我们想用函数上某点斜率还有切线的截距表示!前面这句话实在太重要了,看不懂的多看几遍。其实就是换元,但比一般换元难太多了。
所以f(x)会被换成
f
∗
(
p
)
f^*(p)
f∗(p)
x是此点横坐标,f(x)是纵坐标
p是此点斜率,
f
∗
(
p
)
f^*(p)
f∗(p)是截距(只为正的)
截距=斜率*横坐标-f(x) -----------------这边需要好好考虑一下正负问题,因为截距在y轴正还是负半轴得到的结果是不一样的,所以我们加了一个sub取最大,这就不怕结果为负了。因为随着x移动截距是上还是下是变化的,所以我们不能固定的用“斜率*x-f(x)”或反过来**来表示为正的那个
所以这个时候就有了sub,来取最大,这样就不会有失误了。(在这里我有个为什么不能用绝对值的问题,有懂的大牛告诉我一下)
最后
原函数的对偶函数和共轭函数之间存在着联系,但原函数不同,对应的关系也不同。对偶函数和共轭函数之间的转化很重要的“转换点”是sub和inf的转换,
inf(
f
(
x
)
f(x)
f(x))=-sup(-
f
(
x
)
f(x)
f(x))
\
二、关于共轭的共轭,对偶的对偶
(这里的对偶是对偶问题而不是对偶函数)
这里要着重说一下:对偶函数和对偶问题的区别
它们是非常非常不一样的概念,问题是为了求最值,而函数就是个f
a. 对偶函数很容易理解,就是从拉格朗日函数转换过来的,只跟
λ
\lambda
λ,v相关的函数,不是一个问题(不需要得到最值什么的)
b. 对偶问题是通过性质“ 对偶函数一定小于原问题的最优解
P
∗
P^*
P∗ ”,然后我们自然而然想要得到“对偶函数的最大值——
D
∗
D^*
D∗ ”,因为这就解决了原问题最小/最好下界的问题!如此一来这不就是个“要求最大值的问题”了吗!
对偶问题是一个凹函数(对偶函数)求最大,定义域还是凸的(
λ
\lambda
λ>=0),那它不就是个秃问题了吗?!(最大化凹=最小化凸)
最后:对偶函数一定是凹函数,但对偶问题是秃问题!
性质:
- 函数的共轭一定是凸函数
- 函数的对偶问题也一定是凸问题
所以共轭的共轭不一定是原函数,对偶问题的对偶问题也未必是原问题,因为原函数or问题未必是凸
/
/
那如果原函数是凸函数or问题,什么情况下原函数的共轭的共轭是原函数、原问题的对偶的对偶等于原问题?通过以前的课我可以给出其中一个结论,凸函数且闭合它共轭的共轭还等于它自身,而至于后面的问题,
我们下次再说