大扯闲话之--优化算法Difference of Convex Algorithm (DCA)
发布时间:2024-04-22 14:25:49
非凸优化一直是最常见,最蛋疼的一个问题。
今天介绍的这种算法,Difference of Convex Algorithm,也就是DCA,以便咱们解决非凸优化问题。
但这种问题仅仅针对某些特定情况。
首先,咱们对这串英文进行解读,Difference理解为差,convex是凸,即凸函数,algorithm嘛,你们自己查词典,哈哈哈。所以呢,DCA就是两个凸函数的差的算法。
你们肯定懵逼了,啥凸函数的差?Emmm,
设有个函数为 ,假设这个函数 ,其中 和 都是凸函数,那么就可以说 是个DC function。很明显, 我们无法判定 的凸性。因为, , ,所以, 的正负性咱不知道,所以,它是不是凸的呢?咱不知道。
这就诡异了,既然不知道它的凸性,求个鬼头啊???
没法了,只能派上大将DCA(不小心点题了)。
在了解DCA之前,先介绍个之后有用的东西。啥?Fenchel Conjugate Function,这又是啥?参见下式:
,
其中, 这玩意儿代表的是内积,不知道内积是啥的,拖出去暴打半小时。
好啦,不好意思就等啦。下面说说DCA这个算法。假设有个函数 是DC function,而咱们又要优化它,咋写呢?
其中 和 均为凸函数。那么DCA算法过程如下:
- 输入 位于定义域内, 为自然数,表示为迭代次数。
- 进行迭代,用“for k=1:N”,循环体内的内容为 , 。注意的是N的值越大,收敛性越强。
- 输出 。
举个栗子, ,令 , ,显然 和 均为凸函数。所以, , 。
所以 。
Emmm,严肃的话题说完了,我其实扯了这些,就是直接说了DCA这个算法,至于细节与证明啥的,建议大家看看原文叭。
[1][2]