大扯闲话之--优化算法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]