Einige Ergänzungen zur Vorlesung Evolutionsstrategie II Iván Santibáñez Koref FG Bionik & Evolutionstechnik Technische Universität Berlin Was ist eine Evolutionsstrategie ? Biologisch motiviertes Suchverfahren • Mengenorientiert Eine Menge von Suchpunkten wird gleichzeitig benutzt • Stochastisch Die neuen Suchpunkte sind Realisierung einer Verteilung • Rangbasiert Es zählt nur der Rang der Suchpunkte untereinander (nicht die Qualität). 16.05.2016 Einführung 2 Vorteile Evolutionsstrategie • Nur schwache Voraussetzungen für die Qualitätsfunktion (notwendig ist starke Kausalität). • Störsicher, robust gegen Rauschen der Qualitätsfunktion. • Sowohl für die Optimierung in ComputerSimulationen als auch während Experimente nutzbar. • Sehr einfach in der Realisierung. 16.05.2016 Einführung 3 Algorithmus der (μ/μ, λ)-ES • Generiere Folge von Punkten (μ/μ,λ)-ES: mit 16.05.2016 Einführung 4 Mehrdimensionale Normalverteilung • xE – Erwartungswert bzw. Elter • xN – Realisation bzw. Nachkomme • C – Kovarianzmatrix 16.05.2016 Einführung 5 Mehrdimensionale Normalverteilung 16.05.2016 Einführung 6 Mehrdimensionale Normalverteilung 16.05.2016 1 0 C 0 1 1 0 C 0 5 1 0.5 C 0.5 1 1 2 C 2 5 Einführung 7 Globale Schrittweite 16.05.2016 Einführung 8 Individuelle Schrittweiten 16.05.2016 Einführung 9 Kovarianzmatrix 16.05.2016 Einführung 10 Wiederholung der Theorie • Fortschritt an der Kugel: N c / , 2r 2 • Optimaler Fortschritt an der Kugel: c opt 2 / , r N • Optimale Schrittweite an der Kugel: 16.05.2016 Einführung opt c / , r N 11 Was ist eine Evolutionsstrategie ? 0.6 0.4 *2 * * c / , 2 0.2 Stagnation -0.2 -0.4 -0.6 -0.8 -5 10 16.05.2016 -4 10 10 -3 -2 10 * Einführung 10 -1 Rückschritt Evolutionsfenster * 0 10 0 1 10 12 Schrittweitenregelung: Wo und Wie • Varianz: Einstellen der Varianz σ • Kovarianz: Einstellen der Kovarianzmatrix C 16.05.2016 Einführung 13 Varianzsteuerung (Globale Schw.) Ziel ist die globale Schrittweite σ so einzustellen, dass der Fortschritt maximal wird ! Welche Verfahren sind bekannt: • 1/5 – Erfolgsregel • Mutative Schrittweitenregelung (MSR) mit Isolation • Goldene Regel 16.05.2016 Varianzsteuerung 14 Mutative Schrittweiten Regelung (MSR) Einstellen einer guten Schrittweite durch den Test: Welche Schrittweite erzeugt die besten Nachkommen? Umsetzung: • Erzeuge zu jeden Nachkommen eine eigenen Schrittweite. Durch logarithmische Variation. • Selektiere die besten Nachkommen und deren zugeh. Schrittweite. • Rekombiniere die Nachkommen und deren Schrittweite Probleme: • Wahl des Schrittweitenäderungsparameters •Rauschen durch Zufallszahlen bei der Mutation. • Wie werden Schrittweiten rekombiniert. 16.05.2016 Varianzsteuerung - MSR 15 Mutative Schrittweiten Regelung (MSR) 16.05.2016 Varianzsteuerung - MSR 16 Mutative Schrittweiten Regelung (MSR) 16.05.2016 Varianzsteuerung - MSR 17 Mutative Schrittweiten Regelung Testmethode: Es wird ein Vergleich mit der optimalen Schrittweite σopt während der Simulation durchgeführt. Vergleich von: – Mutative Schrittweiten Steuerung mit „A“ – Mutative Schrittweiten Steuerung mit „τ“ – Optimale Schrittweite 16.05.2016 Varianzsteuerung - MSR 18 Mutative Schrittweiten Regelung 6 10 Optimale Schr., MSR-Optimal MSR Verh. zur opt. Schrittweite. 4 10 (g) / opt für (1/1,20)-ES 2.5 2 2 10 1.5 0 10 Q, 1 0.5 -2 10 0 1000 1500 2000 2500 3000 3500 4000 -4 10 Qualität Schrittweite Opt. Schrittw. -6 10 -8 10 0 16.05.2016 1000 2000 3000 4000 5000 Generationen Varianzsteuerung - MSR 6000 7000 8000 (1/1,20)-ES 9000 10000 19 Mutative Schrittweiten Regelung 4 10 Optimale Schr., MSR-Optimal MSR 2 10 (g) / opt für (6/6,20)-ES 1.4 1.2 1 0 10 0.8 Q, 0.6 0.4 -2 10 0.2 0 1000 1500 2000 2500 3000 3500 4000 -4 10 -6 10 Qualität Schrittweite Opt. Schrittw. -8 10 0 5000 10000 15000 Generationen 16.05.2016 Varianzsteuerung - MSR (6/6,20)-ES 20 Mutative Schrittweiten Regelung 10 4 Optimale Schr., MSR-Optimal MSR 10 2 (g) / opt für (10/10,20)-ES 1.2 1 10 0 0.8 0.6 10 -2 Q, 0.4 0.2 10 -4 0 1000 10 10 10 1500 2000 2500 3000 3500 4000 -6 -8 Qualität Schrittweite Opt. Schrittw. -10 0 16.05.2016 0.5 1 1.5 Generationen Varianzsteuerung - MSR 2 2.5 3 x 10 (10/10,20)-ES 21 4 Varianzsteuerung Probleme beim Einsatz der MSR: • Parameter τ ist abhängig von N: • Zur korrekten Arbeit bei Rekombination, wird eine [μ‘(μ/ μ, λ)γ, λ‘]-ES benötigt. γ·λ·μ‘-facher Aufwand 16.05.2016 Varianzsteuerung - MSR 22 MSR bei (1,λ)-ES • Teste 𝒩(xE,σ2I) mit verschiedenen σ. • Realisiere λ/2-mal 𝒩(xE,σ2·A2·I) bzw. 𝒩(xE,σ2·A-2·I) . • Sehe welches bessere Realisierungen liefert. • Wähle dann neue σ. 16.05.2016 Varianzsteuerung - MSR 23 Varianzsteuerung bei (μ/μ,λ)-ES • Teste 𝒩(xE,σ2I) mit verschiedenen σ. • Realisiere λ/2-mal 𝒩(xE,σ2·A2·I) bzw. 𝒩(xE,σ2·A-2·I) • Sehe welches bessere Realisierungen liefert. • Rekombiniere selektierte Nachkommen und Schrittweite 16.05.2016 Varianzsteuerung - MSR 24 Varianzsteuerung bei (μ/μ,λ)-ES Warum wird eine [μ‘, λ ‘(μ/ μ, λ)γ]-ES benötigt? • Bei (1,λ)-ES wird immer mit der gleichen Verteilung getestet. • Bei (μ/μ,λ)-ES wird mit anderen Verteilung getestet als die ursprüngliche. Schachtelung notwendig γ=2 reicht ! 16.05.2016 Varianzsteuerung - MSR 25 Varianzsteuerung (Kumulation) Welche andere Invariante könnte man nutzen ? 16.05.2016 Varianzsteuerung - Kumulation 26 Kumulation 16.05.2016 Varianzsteuerung - Kumulation 27 Kumulation Welche andere Invariante könnte man nutzen ? Bei optimaler Schrittweite sind zwei aufeinander folgende Schritte im Mittel senkrecht zueinander. 16.05.2016 Transformation des Suchraumes 28 Kumulation Aufeinaderfolgende Schritte sind im Mittel Orthogonal ! Die selektierten Mutationen sind also unkorreliert ! Die Länge der Mutationen ist im Mittel χN! 16.05.2016 Varianzsteuerung - Kumulation 29 Kumulation Da aufeinander folgende Schritte unkorreliert, insbesondere die für die Mutation notwendigen Zufallszahlen. D.h. die Summe der selektierten Zufallzahlen sollte immer eine bestimmte Länge haben: • Länge von z mit den Komponenten zi~ 𝒩(0,1), …, i=1,…,N ist EχN bzw. grosse N : N • Die Länge der Summe von γ aufeinander summierte Zufallszahlen wächst um den Faktor • Der Mittelwert von μ standard normalverteilte Zufallszahlen hat die Varianz 1/ μ. D.h. sollte bei optimaler Schrittweite die Länge die der aufsummierten Zufallzahlen: sein. 16.05.2016 N Varianzsteuerung - Kumulation 30 Kumulation (/,10)-ES N=500 60 N1/2 =1 =3 =5 50 Pfadlänge * 1/2 / 1/2 40 30 20 10 0 0.5 0.6 0.7 0.8 0.9 1 Faktor 1.1 1.2 1.3 1.4 1.5 Fehlskalierung vs. Pfadlänge 16.05.2016 Varianzsteuerung - Kumulation 31 Kumulation (/,20)-ES N=500 70 N1/2 =1 =3 =5 =6 =10 60 Pfadlänge * 1/2 / 1/2 50 40 30 20 10 0 0.5 0.6 0.7 0.8 0.9 1 Faktor 1.1 1.2 1.3 1.4 1.5 Fehlskalierung vs. Pfadlänge 16.05.2016 Varianzsteuerung - Kumulation 32 Kumulation (/,100)-ES N=5000 200 N1/2 =1 =10 =27 =50 180 160 Pfadlänge * 1/2 / 1/2 140 120 100 80 60 40 20 0 0.5 0.6 0.7 0.8 0.9 1 Faktor 1.1 1.2 1.3 1.4 1.5 Fehlskalierung vs. Pfadlänge 16.05.2016 Varianzsteuerung - Kumulation 33 Kumulation (Algorithmus 1) while ~stop_bedingung(xE,g) g=g+1; for l=1:LAMBDA xN(:,l)=xE+sigma*randn(N,1); qN(l)=qualitat(xN(:,l)); end [s_qN,idx]=sort(qN); xE_alt=xE; xE=mean(xE(:,idx(1:MU))); pfad=pfad+(xE-xEo)/sigma; if (norm(zC)*sqrt(MU/N/g)>1) sigma=sigma*A; else sigma=sigma/A; end end 16.05.2016 Kommentar: Solange Stoppbedingung nicht gilt Generationszähler erhöhen Nachkommen erzeugen Elter mutieren Qualität bestimmen Qualitäten sortieren Vorhergehenden Elter merken Selektierte Nachkommen rekombinieren Pfad kumulieren Pfad zu lang Schrittweite erhöhen Pfad zu kurz Schrittweite verkleinern Varianzsteuerung - Kumulation 34 Kumulation (Algorithmus 1) while ~stop_bedingung(xE,g) g=g+1; for l=1:LAMBDA xN(:,l)=xE+sigma*randn(N,1); qN(l)=qualitat(xN(:,l)); end [s_qN,idx]=sort(qN); xE_alt=xE; xE=mean(xE(:,idx(1:MU))); pfad=pfad+(xE-xEo)/sigma; if (norm(zC)*sqrt(MU/N/g)>1) sigma=sigma*A; else sigma=sigma/A; end end Kommentar: Solange Stoppbedingung nicht gilt Generationszähler erhöhen Nachkommen erzeugen Elter mutieren Qualität bestimmen Qualitäten sortieren Vorhergehenden Elter merken Selektierte Nachkommen rekombinieren Pfad kumulieren Pfad zu lang Schrittweite erhöhen Pfad zu kurz Schrittweite verkleinern Alle Nachkommen werden mit der selben Schrittweite erzeugt ! 16.05.2016 Varianzsteuerung - Kumulation 35 Kumulation (Algorithmus 1) while ~stop_bedingung(xE,g) g=g+1; for l=1:LAMBDA xN(:,l)=xE+sigma*randn(N,1); qN(l)=qualitat(xN(:,l)); end [s_qN,idx]=sort(qN); xE_alt=xE; xE=mean(xE(:,idx(1:MU))); pfad=pfad+(xE-xEo)/sigma; if (norm(zC)*sqrt(MU/N/g)>1) sigma=sigma*A; else sigma=sigma/A; end end Kommentar: Solange Stoppbedingung nicht gilt Generationszähler erhöhen Nachkommen erzeugen Elter mutieren Qualität bestimmen Die Entscheidung welche Schrittweitenänderung durchgeführt wird ist nicht mehr Zufällig (Derandomisierung)! Qualitäten sortieren 16.05.2016 Vorhergehenden Elter merken Selektierte Nachkommen rekombinieren Pfad kumulieren Pfad zu lang Schrittweite erhöhen Pfad zu kurz Schrittweite verkleinern Varianzsteuerung - Kumulation 36 10 4 10 2 10 0 10 10 (1/1,20)-ES 10 4 10 2 10 0 10 -2 10 -4 10 -6 10 -8 10 -10 Qualität opt 0 200 400 600 Generation 800 1000 (6/6,20)-ES Qualität opt q(x),,opt q(x),,opt q(x),,opt Kumulation (Algorithmus 1) -2 1200 1400 (10/10,20)-ES 10 4 10 2 10 0 10 -2 10 -4 10 -6 10 -8 10 -10 Qualität opt -4 10 -6 10 -8 0 16.05.2016 100 200 300 Generation 400 500 600 0 Varianzsteuerung - Kumulation 100 200 300 Generation 400 500 37 600 Kumulation (Algorithmus 1) Probleme bei der Einstellung der Schrittweite ! Weil die Kumulation nicht „vergißt“, d.h. es werden alte Informationen noch berücksichtigt ! q(x),,opt Lösung: Mittelung mit Vergessen ! 16.05.2016 (1/1,20)-ES 10 4 10 2 10 0 10 -2 10 -4 10 -6 10 -8 10 -10 Qualität opt 0 Varianzsteuerung - Kumulation 200 400 600 Generation 800 1000 1200 1400 38 Kumulation (Algorithmus 2) Besser Mitteln der selektierten Mutationen: Setze c1 und c2 s.d. d.h. 16.05.2016 Varianzsteuerung - Kumulation 39 Kumulation (Algorithmus 2) 16.05.2016 Varianzsteuerung - Kumulation 40 Kumulation (Algorithmus 2) Da außerdem die Vergangenheit vergessen, setze: 16.05.2016 Varianzsteuerung - Kumulation 41 Kumulation (Algorithmus 2) while ~stop_bedingung(xE,g) g=g+1; for l=1:LAMBDA xN(:,l)=xE+sigma*randn(N,1); qN(l)=qualitat(xN(:,l)); end [s_qN,idx]=sort(qN); xE_alt=xE; xE=mean(xE(:,idx(1:MU))); pfad=c1*pfad+sqrt(1-c1^2)(xE-xEo)/sigma; if (norm(zC)*sqrt(MU/N)>1) sigma=sigma*A; else sigma=sigma/A; end end 16.05.2016 Varianzsteuerung - Kumulation 42 10 2 10 (1/1,20)-ES 10 2 10 0 10 -2 10 -4 10 -6 10 -8 10 -10 Qualität opt 0 100 200 300 400 500 Generation 600 700 (6/6,20)-ES 800 2 0 10 0 10 -2 10 -2 10 -4 10 -4 10 -6 10 -6 10 -8 10 -8 10 -10 10 -10 0 16.05.2016 100 200 300 400 Generation 500 600 700 800 900 1000 (10/10,20)-ES 10 Qualität opt q(x),,opt q(x),,opt q(x),,opt Kumulation (Algorithmus 2) Qualität opt 0 Varianzsteuerung - Kumulation 100 200 300 400 500 Generation 600 700 800 900 43 Kumulation (/,10)-ES N=500 60 N1/2 =1 =3 =5 50 40 Pfadlänge * 1/2 / 1/2 Wie in Graph zu sehen, gibt die Länge nicht nur an ob die Schrittweite zu groß oder zu klein. Auch gewisse quantitative Informationen über die Abweichung von der Optimalen Schrittweite. 30 20 10 0 0.5 16.05.2016 Varianzsteuerung - Kumulation 0.6 0.7 0.8 0.9 1 Faktor 1.1 1.2 1.3 1.4 1.5 44 Kumulation (finaler Algorithmus) while ~stop_bedingung(xE,g) g=g+1; for l=1:LAMBDA xN(:,l)=xE+sigma*randn(N,1); qN(l)=qualitat(xN(:,l)); end [s_qN,idx]=sort(qN); xE_alt=xE; xE=mean(xE(:,idx(1:MU))); pfad=c1*pfad+sqrt(1-c1^2)(xE-xEo)/sigma; sigma=sigma*exp(d*(norm(p)*sqrt(M/N)-1)); end 16.05.2016 Varianzsteuerung - Kumulation 45 10 4 10 2 10 (1/1,20)-ES 10 4 10 2 10 0 10 -2 10 -4 10 -6 10 -8 10 -10 Qualität opt 0 200 400 600 Generation 800 (6/6,20)-ES 1000 4 10 2 0 10 0 10 -2 10 -2 10 -4 10 -4 10 -6 10 -6 10 -8 10 -8 10 -10 10 -10 0 16.05.2016 100 200 300 Generation 400 500 600 700 1200 (10/10,20)-ES 10 Qualität opt q(x),,opt q(x),,opt q(x),,opt Kumulation Qualität opt 0 Varianzsteuerung - Kumulation 100 200 300 400 500 Generation 600 700 800 900 1000 46 Schrittweitensteuerung (Varianz) Fazit • 1/5 Erfolgsregel für „+“-Strategien sinnvoll. • MSR funktioniert nicht immer (Rekombination). • Isolation/Schachtelung für allgemeine Probleme, grosser Aufwand. • Kumulation für bestimmte Probleme möglich und effizient. 16.05.2016 Varianzsteuerung 47 Covarianzsteuerung • Beispiel: Linse Erfordert die gleichzeitige Änderung aber nicht gleiche Änderung der Parameter Die Objektvariablen sind Korreliert D.h. die Suchverteilung ist nicht mehr Isotrop ! 16.05.2016 Covarianzsteuerung 48 Covarianzsteuerung (Zigarre) Die Zigarre: Besonderheit: • Parameter x1 nicht so empfindlich wie die Anderen. 16.05.2016 Covarianzsteuerung - Zigarre 49 Covarianzsteuerung (Zigarre) Die Zigarre: Besonderheit: • Parameter x1 nicht so empfindlich wie die Anderen. 16.05.2016 Covarianzsteuerung - Zigarre 50 Covarianzsteuerung (Zigarre) 16.05.2016 Covarianzsteuerung - Zigarre 51 Covarianzsteuerung (Zigarre) Nur die empfindlichen Variablen werden eingestellt. 16.05.2016 Covarianzsteuerung - Zigarre 52 Covarianzsteuerung (Zigarre) Für x1 ist die Schrittweite zu klein. 16.05.2016 Covarianzsteuerung - Zigarre 53 Qualitätsfunktionen - Transformation N Q ( x ) x a xi 2 1 2 i 2 N Q ( y ) yi y Ax 2 i 1 2 2 1.5 A 1.5 1 0.5 1 0.5 0 0 -0.5 -0.5 -1 -1 -1.5 -1.5 -2 -2 -1.5 -1 -0.5 16.05.2016 0 0.5 1 1.5 2 -2 -2 Covarianzsteuerung - Transformation des Suchraumes -1.5 -1 -0.5 0 0.5 1 1.5 2 54 Transformation 10 8 6 4 5 0 0 5 2 0 -2 -4 -6 10 8 6 -8 7.071 7.071 0.707 0.707 4 -10 -10 -5 0 5 10 2 0 10 -2 8 -4 6 10 0 0 1 4 2 0 -2 -4 -6 -8 -10 -10 -5 0 5 10 -6 -8 -10 -10 -5 16.05.2016 0 5 10 Covarianzsteuerung - Transformation des Suchraumes 55 N 1 QRosenbrock( x ) ( a ( xi xi 1 )) ( xi 1) 2 2 i 1 16.05.2016 Covarianzsteuerung – Rosenbrockfunkt. 2 a 100 56 Covarianzsteuerung (Ortho-Evolution) + , , [ ( ) ] - ES + Aktuelle Position Gründerposition Ortho-Evolution ! 16.05.2016 Covarianzsteuerung - Transformation des Suchraumes 57 Covarianzsteuerung (Ortho-Evolution) • Geschachtelte Evolutionsstrategie mit Ortho-Evolution: [μ‘(μ/μ, λ)γ, λ‘]-ES • Erzeuge Nachkomme: • Wollen aber: 16.05.2016 Covarianzsteuerung - Transformation des Suchraumes 58 Covarianzsteuerung 16.05.2016 Covarianzsteuerung - Zerlegung 59 Covarianzsteuerung ∙ ∙ 16.05.2016 Covarianzsteuerung - Zerlegung 60 Covarianzsteuerung (MATLAB: eig) 16.05.2016 Covarianzsteuerung - Zerlegung 61 Covarianzsteuerung 16.05.2016 Covarianzsteuerung – Transformation des Suchraumes 62 Covarianzsteuerung Also sei: und sei dann ist 16.05.2016 Covarianzsteuerung – Transformation des Suchraumes 63 Covarianzsteuerung Setze an: somit Interpretation • U – Drehmatrix • Λ – Dehnung der Achsen 16.05.2016 Covarianzsteuerung – Transformation des Suchraumes 64 Covarianzsteuerung Wie kann man die Covarianzmatrix schätzen ? Gegeben sei eine Menge von Punkten xi . Die Covarianz lässt sich abschätzen: Wie bei Kumulation: Gewichtete Mittelung 16.05.2016 Covarianzsteuerung – CMA 65 Covarianz Matrix Adaption CMA for g=1:GAMMA for l = 1:LAMBDA z(:,l)=randn(N,1); nk(:,l)=xE+T*z(:,l); fnk(l)=qualität(nk(:,l)); end [fnks,indi]=sort(fnk); xEo=xE; xE=mean(nk(:,indi(1:MU)),2); zznk=mean(z(:,indi(1:MU)),2) ; S=(1-c)*S+cu/delta*(xE-xEo); C=(1-ccov)*C+ccov*S*S'; C=triu(C)+triu(C,1)'; sDelta=(1-c_s)*sDelta+cu_s*B*zznk; delta=delta*exp((norm(sDelta)/chin-1)/d); [B,D]=eig(C); D=sqrt(D); T=delta*B*D; end 16.05.2016 Covarianzsteuerung – CMA 66 Covarianz Matrix Adaption CMA 16.05.2016 Covarianzsteuerung – CMA 67 Covarianz Matrix Adaption CMA Nur die empfindlichen Variablen werden eingestellt. 16.05.2016 Covarianzsteuerung – CMA 68 Covarianz Matrix Adaption CMA Adaptation der Covarianz 16.05.2016 Covarianzsteuerung – CMA 69 Covarianz Matrix Adaption CMA Variable x1 wird optimiert. 16.05.2016 Covarianzsteuerung – CMA 70 Die Covarianz Matrix Adaptation (CMA) Fazit • CMA ist eine Erweiterung der ES. • Funktioniert in einer grossen Zahl für eine grosse Zahl von Problemen E • Effiziente Implementierung, trotz „nummerischen“-Aufwand möglich. 16.05.2016 Covarianzsteuerung 71