本文已参与【新人创作礼】活动,一起开启掘金创作之路
论文研读-显式自编码器的进化多任务优化方法
Evolutionary Multitasking via Explicit Autoencoding
EMT-A/EMEA
觉得有用的话,欢迎一起讨论相互学习~
- 此篇文章为
L. Feng, L. Zhou, J. Zhong, A. Gupta, Y. Ong, K. Tan, A.K. Qin, Evolutionary Multitasking via Explicit Autoencoding, IEEE Transactions on Cybernetics. 49 (2019) 3457–3470. https://doi.org/10.1109/TCYB.2018.2845361.的论文学习笔记,只供学习使用,不作商业用途,侵权删除。并且本人学术功底有限如果有思路不正确的地方欢迎批评指正!
编者解读
Innovation
- EMT-A中使用独立的解决方案表示而不使用统一决策空间
- 每个任务可以有不同偏差的独立进化求解器进行求解
- 使用去噪自动编码器进行显式信息迁移
- 单目标和多目标有区别,单目标中任务单向迁移只有一个mapping,而多目标中,根据source 和 target task 的目标函数数量具有多个不同的mapping ,如果source 是双目标问题,而target是三目标问题,则mapping的数量是2*3=6个
- 和论文研读-异构问题学习的自动编码进化搜索不同的是,异构问题DA学习的是历史任务和当前任务之间的mapping,再通过当前任务中优秀的解使用mapping 进行投影后插入到当前任务。而EMT-A中使用的两个任务之间均匀采样的点作为构建mapping使用的材料,而通过源任务中使用fitness排序后最优秀的解进行迁移
关于Denoising Autoencoder DA
- 关于自编码器如何进行迁移优化,也许你需要看一看 论文研读-异构问题学习的自动编码进化搜索
- 其中重要的是一个公式:即自编码器中mapping matrix的闭式解,这里将P矩阵作为输入input而Q矩阵作为输出output
3. 提出的通过显式迁移的进化多任务
3.2 提出的EMT范式
- 为了建立任务间的连接,将从op1和op2的搜索空间中均匀独立采样的两组问题解作为去噪自动编码器的输入和输出,得到相应的任务映射M。任何求解器在其搜索过程中找到的好解都可以通过学习任务maping M的乘法运算简单地转移并注入到另一个求解器的种群中。
3.2.1 学习任务Mapping
- 对于两个任务OP1和OP2,需要构建两个mapping, 分别从OP1到OP2和从OP2到OP1. 为了构建mapping 矩阵,首先从两个任务中均匀取点,构建P和Q,其中P和Q中的个体按照目标值函数大小升序或者降序排列。
- 对于单目标你只需要一对映射,但是对于多目标,你需要按照目标值的数量在任务间进行一一对应的mapping.
3.2.2 跨任务显式信息迁移
- 对于单目标每隔G=10代挑选适应度值最好的一定数量的解进行迁移
- 对于MOO,知识转移间隔的配置与SOO相同,即G1=G2=10。其次,为了在MOO问题中进行遗传转移,由于存在多个目标函数,我们提出将一个解的最佳解随机转移到另一个解。此外,由于使用不同的目标函数进行排序,需要学习多个任务映射M。任务映射对应于用于选择最佳解决方案的目标函数,然后将用于跨任务的解决方案传递。例如,给定两个MOO问题op1和op2,每个都有两个目标函数,根据SectionIII-B1,我们将有8个任务映射,即4个来自op1toop2的映射,4个来自op2toop1的映射。在这两个任务中相应的显性遗传转移将被执行,如算法2所述。
代码解析
- EMT-A的源代码如下所示:
% 这段代码可以分为两个部分
% 1. 使用curr_pop即target task 和 his_pop 即source task 构建矩阵迁移矩阵M
% 2. 使用his_bestSolution 即source task 中的较好的解来进行迁移
% 3. 如果两者的维度不同,则将其先补0为相同的维度,然后进行截断处理
function [inj_solution] = mDA(curr_pop, his_pop, his_bestSolution)
% curr_pop and his_pop denote the current population and
%population from another domain. Both in the form of n*d matrix. %n is the number of individual, and d is the variable dimension.
%They do not have to be with the same d. We assume they have the %%same n (same population size)
% his_bestSolution is the best solutions from one domain.
%output is the transformed solution.
curr_len = size(curr_pop, 2); % 列数,表示target问题的维度数
tmp_len = size(his_pop, 2); % 列数,表示source问题的维度数
% 将两者使用0补成列相同的维度数大小
if curr_len < tmp_len
curr_pop(:,curr_len+1:tmp_len) = 0;
elseif curr_len > tmp_len
his_pop(:,tmp_len+1:curr_len) = 0;
end
% '表示转置
% curr_pop原来是一个shape=[NP,ND]的矩阵,其中NP表示种群大小,ND表示问题维度。现在xx是其转置,是一个[ND,NP]的矩阵。
xx = curr_pop';
noise = his_pop';
% d表示目标问题的问题维度,n表示目标问题的种群数量
[d, n] = size(xx);
xxb = [xx; ones(1, n)];% 加了bias的目标矩阵
noise_xb = [noise; ones(1, n)];% 加了bias的源矩阵
Q = noise_xb*noise_xb';
P = xxb*noise_xb';
% lambda是一个非常小的数
lambda = 1e-5;
% eye 是一个(d+1)维度的方阵
reg = lambda*eye(d+1);
% reg是一个对角线元素为一个很小值的方阵
reg(end,end) = 0;
% 这里reg添加这个单位矩阵,是为了防止除数为0
% 这里W的计算和异构迁移中M的计算一模一样
W = P/(Q+reg);
% 截断处理
tmmn = size(W,1);
W(tmmn,:) = [];
W(:,tmmn) = [];
% current_len 表示目标任务的决策空间维度数
% tmp_len 表源任务的决策空间维度数
% 然后进行截断处理
if curr_len <= tmp_len
tmp_solution = (W*his_bestSolution')';
inj_solution = tmp_solution(:,1:curr_len);
elseif curr_len > tmp_len
his_bestSolution(:,tmp_len+1:curr_len) = 0;
inj_solution = (W*his_bestSolution')';
end