最近几年在进化计算这个圈子里多任务优化Multitasking很火,其中包含多因子Multifactorial Evolutionary, 多任务 Multitasking Evolutionary, 和多模式进化 Multiform Evolutionary。
今天就来讲讲他们之间的区别。
多因子优化
在“Enhancing Evolutionary Multifactorial Optimization based on Particle Swarm Optimization”这篇文章中讲到,传统的单目标优化问题,如果要求解每个测试问题必须得串行的执行算法,Gupta说这样太慢了。所以就提出了多个问题之间并行求解,每个求解问题即为一个任务task。那么不同的求解问题可能具有不同的维度,适应值函数。所以需要在不同的问题之间设置迁移的指标,即为因子消耗(factorical cost)。
1)因子消耗 ϕ i j = λ ∗ δ i j + f i j \phi_i^j=\lambda*\delta_i^j+f_i^j ϕij=λ∗δij+fij,其中定义为 λ \lambda λ为惩罚权重, δ i j \delta_i^j δij表示当前任务T中的个体 p i p_i pi在目标任务 T j T_j Tj中的目标函数的约束违反度,而 f i j f_i^j fij表示当前任务T中的个体 p i p_i pi在目标任务 T j T_j Tj中的目标函数。
2)因子排序 r i j r_i^j rij,表示当前任务T中的个体 p i p_i pi,想要迁移到目标任务 T j T_j Tj中的因子消耗,在任务 T i T_i Ti中的升序排序的索引。
- 技能因子 τ i = a r g m i n { r i j } , j = { 1 , . . . , K } \tau_i=argmin\{r_i^j\},j=\{1,...,K\} τi=argmin{rij},j={1,...,K},表示当前任务T中的个体 p i p_i pi,在所有可迁移的任务中,获得过的最高排名。
在不同任务的迁移中,选择技能因子更高的个体进行交叉,生成子代,达到一种隐式的知识迁移的目的。加速不同任务的优化。
测试集是不同的优化任务
结果需要对比,多因子的算法在不同的任务重是否是被加速收敛了。
多因子优化最大的特点在于是一个种群来解决不同的任务。
rmp表示用来控制知识迁移概率的因子。
多任务进化
多任务优化与多因子优化最大的区别是用多个种群优化多个任务,即每个种群优化一个任务。关键在于如何实现多个种群之间的知识迁移机制。
既有显示的迁移方法,即直接用原任务的技能因子高的解去替换目标任务相似的解,达到加速目标任务收敛的目的。
也有隐式的迁移方法,比如神经网络的域的变化,生成对抗网络学习分布的变换,降噪编码器学习分布之间的转换。
多模式进化
多任务进化的思想被广泛讨论后,也有学者提出了多模式进化,即借用多任务优化的思想,在一个优化问题中,设置不同的优化模式,目前仅被部分学者定义为,不同的适应值函数评价方法,代表不同的模式。
最关键的是,如果定义不同种群之间的区别,同时设计知识迁移的方式,使得不同种群可以学到其他辅助种群中自身没有的知识,加速自身的收敛,最后达到良好的收敛效果。
那么多模式优化与多任务优化的区别在于,多任务求解的是不同的优化问题,多模式优化是采用不同的标准求解一个优化问题。参考“A Multiform Optimization Framework for
Constrained Multiobjective Optimization”文章中提出的,约束松弛种群作为源任务,辅助约束MOEA种群的收敛。
其实本质上也是一种协同进化,但与协同进化有明显区别的是,协同进化在交叉变异的进化过程中有相互借鉴的交互,但在这类多任务思想或多模式思想求解约束多目标优化问题的过程中,重点在于辅助任务的设计,和辅助任务与目标任务之间的知识迁移的机制。在后者中,在交叉变异中是没有相互交互的。
更重要的是,根据将问题的简化,将CMOP简化为MOP和约束松弛的CMOP,设定更好求解更简单的辅助问题,来帮助困难的CMOP跳出不可行区域。
其实本质上,只要构造不同的辅助问题,即可定义为辅助任务,可以是不同的决策空间的范围,不同的函数表达式,不同的子问题等等。