多目标优化问题
定义如下多目标优化问题:
min f ( x ) = [ f 1 ( x ) , f 2 ( x ) , ⋯ , f n ( x ) ] ( 1 ) \min\quad f(x)=[f_1(x),f_2(x),\cdots,f_n(x)]\quad(1) minf(x)=[f1(x),f2(x),⋯,fn(x)](1)
其中,
f i ( x ) , ∀ i = 1 , ⋯ , n f_i(x),\forall i=1,\cdots,n fi(x),∀i=1,⋯,n
表示多个目标函数。
通过非负加权求和把上面多目标优化转化为单目标问题,
min J ( x ) = w 1 f 1 ( x ) + w 2 f 2 ( x ) + ⋯ + w n f ( x ) ( 2 ) \begin{array}{ccc}\min&J\left(x\right)=w_{1}f_{1}\left(x\right)+w_{2}f_{2}\left(x\right)+\cdots+w_{n}f\left(x\right)&(2)\end{array} minJ(x)=w1f1(x)+w2f2(x)+⋯+wnf(x)(2)
优化问题(1)就是多目标优化问题,优化问题(2)就是单目标优化。对比多目标优化问题和单目标优化,最大的区别在于多目标优化问题是一个向量优化的问题,需要比较向量之间的大小,向量之间仅仅存在偏序关系,这就导致该优化问题的性质非常不好。
首先说一下我们平常遇到的优化问题严格来说都属于多目标优化问题,但是目前来说大多数的做法是把多个目标直接做非负加权求和转化为一个单目标的优化问题。所以这里要指出的就是直接处理多目标优化问题和通过加权求和的方式转化为单目标相比优势是什么?
1 单目标权值难以确定*
多个目标之间必然存在矛盾,如何权衡这些目标,如果是用单目标加权的话,我们只能是调节权值大小,这样权值的确定其实是很难的,除了一顿实验没有什么太好的方法去确定,而多目标优化因为是直接求解多目标问题,就不存在确定权值的问题了。
2 各个目标之间量纲的不统一,可能会造成单目标优化问题鲁棒性差
各个目标之间量纲往往不统一,所以为了平衡各个目标之间的量纲,往往需要较大的权值 来平衡量纲。例如目标函数 的量纲相对其它目标函数就很小,所以为了平衡各个目标,就需要将 置的很大,而如果 包含一点Noise的话,很大的权值 就会对整个目标函数产生巨大的影响。
3 单目标加权求和只能逼近凸的帕累托面
加权求和的方式只能逼近帕累托前沿面为凸集的情况,如果多目标优化问题的帕累托面为非凸,则加权求和的方式就不能和原多目标优化问题等价,此时只有直接处理原多目标优化问题才能解决。
4 多目标优化问题的帕累托解集包含更多有效信息
多目标优化问题的求解是会得到一个帕累托解集的,这个解集里边包含着很多的信息,例如可以产生一些对模型的可解释,可以分析多个目标之间的相关性等等。去年的机器学习顶级会议NIPS2018有一篇文章就是巧妙的将多目标优化的概念引入到多任务学习中,就是利用了多目标优化问题的这个性质。具体可以参考如下链接:https://www.zhihu.com/question/293485475/answer/544416786
多目标优化的局限性
说完了优势,那现在多目标优化的局限性是什么?为啥我们之前都是用单目标的比较多呢?原因如下所示:
- 单目标相比多目标来说容易求解得多。
- **搞成多目标之后计算量要大大增加,这对于目前非常吃计算量的优化领域来说也很致命的弱点。**看看多目标领域的顶级期刊的文章,搞个几千或者上万维的决策变量就是large-scale的了,可是在实际应用中经常会遇到百万,千万级别的优化问题。
- 多目标优化目前在处理2-5个目标还不错,如果目标数太多,其实目前也没啥太的好方法啦。
- 在业界的实际应用问题中,业务部门往往需要你给一个明确的解,而不是给一个帕累托解集。那么这个时候怎么从 帕累托解集 中挑出那一个合适的解 又是一个新的问题。
经典多目标优化方法
四. 梯度下降算法
前面列举的线性加权法、主要目标法和逼近目标优化法,都是采取先验的知识来将多目标优化问题简化为单目标优化问题,在一些严格的条件下,能够得到有效解(弱有效解)。能否有直接优化的方法来求解多目标优化问题呢?梯度下降就是这样一种算法。