君子兰

共轭函数

发布时间:8个月前热度: 25 ℃评论数:

共轭函数在最近火的不行的Gan生成对抗神经网络进阶版本的数学推理中有着神奇的作用,因此在这边记录下。

共轭函数的定义为:
f(t)=maxxdom(f){xtf(x)}f ^ { * } ( t ) = \max _ { x \in \operatorname { dom } ( f ) } \{ x t - f ( x ) \}
当然如果去百度它不是这么写的,但这么写和一般的写法等价。

这个公式的xdom(f)x \in \operatorname { dom } ( f )表示xx要在ff的定义域内取值,这个蛮好理解的,不在定义域内就算不了。

那它具体在干一件什么事情呢?

可以看到式子的自变量是tt,而当tt定住后,式子希望在定义域内找到一个xx使得右边大括号内的式子取得最大值。

它的物理意义是什么呢?

可以看到当tt定住的时候,式子其实变成了y=xtf(x)y=xt-f(x),如果高兴也可以再把左右拆开,这样就会发现左边其实是以tt为斜率的一根直线,而右边则是xx的函数,那么maxmax这货就是要找到原函数f(x)f(x)和以tt为斜率的直线的最大距离点对应的xx ^ { * }

说实在的,上面的解释我一看就懂,但完全不知所谓,心中十万只草泥马。最核心的问题在于,这个物理意义一点都不直观,而且这个公式怎么来的也不大清楚,感觉就是数学家随便写出来,然后脑袋一拍发现这东西有奇效!后面百度发现错怪了数学家,是物理学家搞出来的。。。我相信肯定有原因让他们把式子列成这样,但没查到,如果有知道的老哥请告诉我,万分感谢!

那么来看看它有什么性质好了。有两个比较重要的:

1.无论f(t)f ( t )是不是凸函数,f(t)f ^ { * } ( t )是凸函数。

2.凸函数的共轭函数的共轭函数是它自己。

第一点其实蛮不明显的,尤其是看着f(t)f ^ { * } ( t )的表达式一晚上我也没想到怎么证明,但看到百度百科直接写"很明显能看出它是凸函数”然后半句解释都没有,而有些博客文章直接把这句话就抄了。。。给跪了。

那为什么呢?
在这里插入图片描述
上面是李宏毅大神的视频给出的图,因为在式子中tt是自变量,因此{xtf(x)}\{ x t - f ( x ) \}其实是一堆的直线。而我们取定一个tt要使得式子最大,其实就是做tt轴的垂线,看看和垂线相交的最上面的点是哪个那就是最大值。
在这里插入图片描述

这样当我们跑完整个tt之后,就可以得到f(t)f ^ { * } ( t )的表达式。

在这里插入图片描述
这个时候通过观察可以直接看出,f(t)f ^ { * } ( t )的斜率一定是不断增大的!那么它就是凸函数。当然从图上看可能会觉得虽然斜率是一直在增大,但在有些地方是不变的,这里无法直接从图上看出它是严格的凸函数,因此在这里存疑。但凸函数这点是一定的。

再来看第二点。假设现在tt固定,而我们要求xtf(x)x t - f ( x )的最大值其实就是要求式子对xx求导后为0的位置。很容易可以算出最大值在f(x)=tf ^{'}( x )=t时取得。而因为f(x)f( x )是凸函数,因此只有唯一的一个xx使得f(x)=tf ^{'}( x )=t,也就是说从原函数到其共轭函数xxtt是一对一一对应关系。又从性质一我们知道反过来也是成立的。结合两个函数都是凸函数且变量互相一一对应,可以得出凸函数的共轭函数的共轭函数一定是它自己,如下图:
在这里插入图片描述
假设x?̸=x1x_?\not=x_1则虚线部分将存在无映射的情况,与已知相背。当然这解释有点抽象,但实在是水平有限,不知道怎么从公式本身来证明这件事情。

共轭函数

手机扫码访问