进化策略原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vivian_ll/article/details/84978269

上一篇遗传算法中提到了进化策略。这一篇扩展一下,具体细节详见莫烦老师网站。

进化策略与遗传算法

进化策略 (Evolution Strategy)是另一种使用进化理论的优化模式,与遗传算法略有不同。
用一句话概括ES: 在程序里生宝宝, 杀死不乖的宝宝, 让乖宝宝继续生宝宝.
ES和GA的不同有以下几点:

  • 选好父母进行繁殖 (GA); 先繁殖, 选好的孩子 (ES)
  • 通常用二进制编码 DNA (GA); 通常 DNA 就是实数, 比如 1.221 (ES)
  • 通过随机让 1 变成 0 这样变异 DNA (GA); 通过正态分布(Normal distribution)变异 DNA (ES)

具体实数编码的规则和举例见上一篇博文。

(1+1)-ES

(1+1)-ES 是 ES 进化策略的一种形式, 也是众多形式中比较方便有效的一种. 接下来我们来细说他们的类别. 如果要我用一句话来概括 (1+1)-ES: 一个爸爸和一个孩子的战争。即,

  • 有一个爸爸;
  • 根据爸爸变异出一个宝宝;
  • 在爸爸和宝宝中选好的那个变成下一代爸爸.

在 kill_bad 中, 我们选择更为适合的, 不管是爸爸还是孩子, 只要是适合的就留下, 不适合的杀掉. 但是还有注意的一点是, 在这一步我们还要对 变异强度进行一点改变. 改变的方法遵循了 1/5 successful rule.
这个原则的意思是说: 还没到收敛的时候, 我们增大变异强度, 如果已经快到收敛了, 我们就减小变异强度. 那如何判断是否快到收敛没呢, 就是如果有1/5的变异比原始的 parent 好的话, 就是快收敛了。
(此处类似于梯度下降中的学习率)

自然进化策略

自然进化策略(Natural ES,NES), 应该就是算一种用适应度诱导的梯度下降法, 如果要我用一句话来概括 NES: 生宝宝, 用好宝宝的梯度辅助找到前进(下降)的方向。
在这里插入图片描述
NES 的方法其实和强化学习中 Policy Gradient 的方法非常接近. 简单来概括一下它们的不同: 在行为的策略上, PG 是扰动 Action, 不同的 action 带来不同的 reward, 通过 reward 大小对应上 action 来计算 gradient, 再反向传递 gradient. 但是 ES 是扰动 神经网络中的 Parameters, 不同的 parameters 带来不同的 reward, 通过 reward 大小对应上 parameters 来按比例更新原始的 parameters.
参考网址
遗传算法- 进化算法Evolutionary Algorithm | 莫烦Python

猜你喜欢

转载自blog.csdn.net/vivian_ll/article/details/84978269