2007年4月23日 星期一

1/5 rule self-adaptive under (u+k)-ES

( 寫於2005/12/06 )

前言: 這篇是針對了解ES的人寫的

原本的(1+1)-ES如下

Gs: succesful mutation (offspring is better than parent)
G : sample generations
p = Gs / G
a = (0,1) (recommendation a = 0.8)

sigma = {
sigma / a, if p > 0.2
sigma * a, if p < 0.2
sigma , if p = 0.2
}

經測試結果, 1/5 rule非常有威力, 大大加速了收斂和找到好結果

但在(u+k)-ES時要怎麼套呢? (k > 1)

way1:

count all mutations, if it’s successful, Gs++
p = Gs / (G*k)

way2:

count all successful replacement,
Gs = number of offsprings which is replaced into populations
p = Gs / (G*u)

測試結果, way1比way2好 (還滿合理的),
但都比N step-sized的self-adaptive差

今天終於想到一個解法

way3:

for each generation, count successful mutation, say n,
Gs++ if n/k >= 0.5
p = Gs / G

結果比way1好很多, 而且比N step-sized self-adaptive好

我的解讀:

每一generation的mutation成功與否, 應該是各自判斷, 而非累計,
way1有個盲點, 假設sample 5 generation,
結果1st generation幾乎都成功, 但2~5 generation幾乎都失敗,
但加起來的機率仍 > 0.2怎麼辦? 這個反應已和1st generation的情況差很遠了

所以我認為way3最合理, 而且1/5 rule應該比N step-sized好 (一般來說)

個人認為fitness愈能合理且即時反應在meta-parameters上,
self-adaptive才會有效果, 但要怎麼個合理法, 怎樣才夠即時, 是另一大問題

沒有留言:

張貼留言