本页面解释了黑箱成本函数优化的进化策略的实现。
在这种情况下,黑盒意味着不能对代价函数做任何假设,例如,我们不能得到它的导数,我们甚至不知道它是否是连续的。
已经实现的进化策略都是基于**奖励加权平均(又名概率加权平均)**的,正如本文/演示中所解释的:http://icml.cc/discuss/2012/171.html
这里有一个1页的算法描述: http://www.pyoudeyer.com/stulpOudeyerDevelopmentalScience17.pdf#page=30
基本算法如下:
x_mu = ??; x_Sigma = ?? // Initialize multi-variate Gaussian distribution 初始化多变量高斯分布
while (!halt_condition) {
// Explore
for k=1:K {
x[k] ~ N(x_mu,x_Sigma) // Sample from Gaussian 高斯样本
costs[k] = costfunction(x[k]) // Evaluate sample 评估样品
}
// Update distribution 更新分布
weights = costs2weights(costs) // Should assign higher weights to lower costs 是否应该赋予较低成本更高的权重
x_mu_new = weightsT * x; // Compute weighted mean of samples计算样本的加权平均值
x_covar_new = (weights .* x)T * weights // Compute weighted covariance matrix of samples计算样本加权协方差矩阵
x_mu = x_mu_new
x_covar = x_covar_new
}