CMA-ES - CMA-ES
Strategie vývoje adaptační matice kovarianční matice (CMA-ES) je zvláštní druh strategie pro numerická optimalizace. Evoluční strategie (ES) jsou stochastický, metody bez derivátů pro numerická optimalizace ne-lineární nebo nekonvexní průběžná optimalizace problémy. Patří do třídy evoluční algoritmy a evoluční výpočet. An evoluční algoritmus je obecně založen na principu biologická evoluce, jmenovitě opakovaná souhra variací (prostřednictvím rekombinace a mutace) a výběru: v každé generaci (iteraci) noví jedinci (kandidátní řešení, označovaní jako ) jsou generovány variací, obvykle stochastickým způsobem, současných rodičů. Poté jsou někteří jedinci vybráni, aby se stali rodiči v příští generaci na základě jejich fyzické zdatnosti nebo Objektivní funkce hodnota . Takhle, během generace, jednotlivci s lepšími a lepšími - jsou generovány hodnoty.
V evoluční strategie, nová kandidátní řešení jsou vzorkována podle a vícerozměrné normální rozdělení v . Rekombinace znamená výběr nové střední hodnoty pro distribuci. Mutace znamená přidání náhodného vektoru, poruchu s nulovým průměrem. Párové závislosti mezi proměnnými v distribuci jsou reprezentovány a kovarianční matice. Přizpůsobení kovarianční matice (CMA) je metoda aktualizace kovarianční matice této distribuce. To je zvláště užitečné, pokud je funkce je špatně podmíněný.
Adaptace kovarianční matice znamená naučit se podkladový model druhého řádu Objektivní funkce podobný aproximaci inverzní Hesenská matice v kvazi-Newtonova metoda v klasice optimalizace. Na rozdíl od většiny klasických metod se vytváří méně předpokladů o povaze základní objektivní funkce. Pro zjištění distribuce vzorku je využíváno pouze pořadí mezi kandidátskými řešeními a metoda nevyžaduje ani deriváty, ani samotné funkční hodnoty.
Zásady

V algoritmu CMA-ES jsou využívány dva hlavní principy pro přizpůsobení parametrů distribuce vyhledávání.
Nejprve, a maximální pravděpodobnost princip, založený na myšlence zvýšit pravděpodobnost úspěšného řešení kandidátů a vyhledávací kroky. Průměr distribuce je aktualizován tak, že pravděpodobnost maximalizuje se počet dříve úspěšných řešení kandidátů. The kovarianční matice distribuce se aktualizuje (přírůstkově) tak, že se zvyšuje pravděpodobnost dříve úspěšných kroků hledání. Obě aktualizace lze interpretovat jako přirozený gradient klesání. V důsledku toho CMA provádí iteraci analýza hlavních komponent úspěšných vyhledávacích kroků při zachování Všechno hlavní osy. Odhad distribučních algoritmů a Metoda křížové entropie jsou založeny na velmi podobných myšlenkách, ale odhadují (ne přírůstkově) kovarianční matici maximalizací pravděpodobnosti úspěšného řešení bodů místo úspěšného vyhledávání kroky.
Za druhé, jsou zaznamenány dvě cesty časového vývoje distribučního průměru strategie, nazývané vyhledávací nebo vývojové cesty. Tyto cesty obsahují významné informace o korelaci mezi po sobě jdoucími kroky. Konkrétně, pokud jsou po sobě jdoucí kroky učiněny podobným směrem, cesty evoluce se stanou dlouhými. Evoluční cesty jsou využívány dvěma způsoby. Jedna cesta se používá pro postup adaptace kovarianční matice namísto jednotlivých úspěšných kroků hledání a usnadňuje možná mnohem rychlejší nárůst rozptylu příznivých směrů. Druhá cesta se používá k provedení další kontroly velikosti kroku. Tato kontrola velikosti kroku si klade za cíl, aby po sobě jdoucí pohyby distribuce byly v očekávání kolmé. Řízení velikosti kroku účinně brání předčasná konvergence přesto umožňuje rychlou konvergenci na optimální.
Algoritmus
V následujícím textu se nejčastěji používají (μ/μw, λ) Je načrtnuto -CMA-ES, kde v každém iteračním kroku je vážená kombinace μ nejlépe z λ k aktualizaci distribučních parametrů se používá nová kandidátní řešení. Hlavní smyčka se skládá ze tří hlavních částí: 1) vzorkování nových řešení, 2) přeuspořádání vzorkovaných řešení na základě jejich vhodnosti, 3) aktualizace interních stavových proměnných na základě přeuspořádaných vzorků. A pseudo kód algoritmu vypadá následovně.
soubor // počet vzorků na iteraci, nejméně dva, obvykle> 4inicializovat , , , , // inicializace stavových proměnnýchzatímco neukončit dělat // opakovat pro v dělat // vzorek nová řešení a vyhodnotit je sample_multivariate_normal (průměr, kovariance_matrix) ← s // třídění řešení // potřebujeme později a ← update_m // přesunout znamená k lepším řešením ← aktualizace_ps // aktualizovat cestu izotropního vývoje ← aktualizace_pc // aktualizace cesty anizotropní evoluce ← aktualizace_C // aktualizace kovarianční matice ← update_sigma // aktualizace velikosti kroku pomocí délky izotropní cestyvrátit se nebo
Pořadí pěti přiřazení aktualizací je relevantní: musí být nejprve aktualizován, a musí být aktualizován dříve , a musí být aktualizován jako poslední. V následujícím textu jsou uvedeny aktualizační rovnice pro pět stavových proměnných.
Uvedeny jsou dimenze prostoru hledání a krok iterace . Těchto pět stavových proměnných je
- , distribuční průměr a aktuální oblíbené řešení optimalizačního problému,
- , velikost kroku,
- , symetrické a pozitivní-definitivní kovarianční matice s a
- , dvě evoluční cesty, původně nastavené na nulový vektor.
Iterace začíná vzorkováním kandidátní řešení od a vícerozměrné normální rozdělení , tj. pro
Druhý řádek navrhuje interpretaci jako narušení (mutaci) aktuálního oblíbeného vektoru řešení (vektor střední distribuce). Řešení kandidátů jsou hodnoceny na objektivní funkci být minimalizován. Označující -tříděné kandidátní řešení jako
nová střední hodnota se počítá jako
kde pozitivní (rekombinace) váhy součet k jedné. Typicky, a váhy jsou zvoleny tak, aby . Jedinou zpětnou vazbou použitou z objektivní funkce zde a dále je uspořádání vzorkovaných kandidátských řešení z důvodu indexů .
Velikost kroku je aktualizován pomocí kumulativní přizpůsobení velikosti kroku (CSA), někdy označované také jako řízení délky cesty. Evoluční cesta (nebo vyhledávací cesta) je nejprve aktualizován.
kde
- je zpětný časový horizont pro vývojovou cestu a větší než jeden ( připomíná exponenciální úpadek konstantní jako kde je související životnost a poločas rozpadu),
- je rozptyl efektivní výběrové hmotnosti a podle definice ,
- je parametr tlumení obvykle blízký jedné. Pro nebo velikost kroku zůstane nezměněna.
Velikost kroku se zvýší právě tehdy je větší než očekávaná hodnota
a sníží se, pokud je menší. Z tohoto důvodu má aktualizace velikosti kroku tendenci provádět po sobě jdoucí kroky -sdružené, poté, co byla adaptace úspěšná .[1]
Nakonec kovarianční matice se aktualizuje, kde se nejprve nejprve aktualizuje příslušná vývojová cesta.
kde označuje transpozici a
- je zpětný časový horizont pro vývojovou cestu a větší než jeden,
- a funkce indikátoru hodnotí na jednu iff nebo, jinými slovy, , což je obvykle případ,
- částečně vyrovnává malou ztrátu rozptylu v případě, že je indikátor nulový,
- je míra učení pro aktualizaci první řady kovarianční matice a
- je míra učení pro hodnocení aktualizace kovarianční matice a nesmí překročit .
The kovarianční matice aktualizace má tendenci zvyšovat pravděpodobnost pro a pro ze kterého se mají odebrat vzorky . Tím je krok iterace dokončen.
Počet kandidátských vzorků na iteraci, , není stanovena a priori a může se lišit v širokém rozmezí. Například menší hodnoty , vést k většímu chování při lokálním vyhledávání. Například větší hodnoty s výchozí hodnotou , učinit vyhledávání globálnějším. Někdy je algoritmus opakovaně restartován s rostoucí dvojnásobně pro každý restart.[2] Kromě nastavení (nebo možná místo toho, pokud například je předurčen počtem dostupných procesorů), výše uvedené parametry nejsou specifické pro danou objektivní funkci, a proto nemají být uživatelem upravovány.
Příklad kódu v MATLABu / Octave
funkcexmin=čisté% (mu / mu_w, lambda)-CMA-ES % -------------------- Inicializace ---------------------------- ---- % Uživatelem definované vstupní parametry (je třeba upravit) strfitnessfct = 'frosenbrock'; % název cíle / fitness funkce N = 20; % počet objektivních proměnných / dimenze problému xmean = rand(N,1); % objektivních proměnných, počáteční bod sigma = 0.3; % souřadnic moudré směrodatné odchylky (velikost kroku) stopfitness = 1e-10; % zastavení, pokud fitness stopeval = 1e3*N^2; % zastavení po zastavení počet hodnocení funkcí % Nastavení parametru strategie: Výběr lambda = 4+podlaha(3*log(N)); % velikosti populace, počet potomků mu = lambda/2; % počet rodičů / body za rekombinaci závaží = log(mu+1/2)-log(1:mu)'; % muXone pole pro váženou rekombinaci mu = podlaha(mu); závaží = závaží/součet(závaží); % normalizuje pole rekombinačních vah mueff=součet(závaží)^2/součet(závaží.^2); % účinnost odchylky součtu w_i x_i % Nastavení parametrů strategie: Přizpůsobení cc = (4+mueff/N) / (N+4 + 2*mueff/N); % časová konstanta pro kumulaci pro C cs = (mueff+2) / (N+mueff+5); % t-const pro kumulaci pro řízení sigma c1 = 2 / ((N+1.3)^2+mueff); % míry učení pro první aktualizaci C cmu = min(1-c1, 2 * (mueff-2+1/mueff) / ((N+2)^2+mueff)); % a pro aktualizaci rank-mu dampy = 1 + 2*max(0, čtv((mueff-1)/(N+1))-1) + cs; % tlumení pro sigma % obvykle blízké 1 % Inicializujte dynamické (interní) parametry a konstanty strategie ks = nuly(N,1); ps = nuly(N,1); % vývojových cest pro C a sigma B = oko(N,N); % B definuje souřadnicový systém D = ty(N,1); % úhlopříčka D definuje měřítko C = B * diag(D.^2) * B'; % kovarianční matice C. invsqrtC = B * diag(D.^-1) * B'; % C ^ -1 / 2 vlastní = 0; % aktualizace stopy B a D. brada=N^0.5*(1-1/(4*N)+1/(21*N^2)); % očekávání % || N (0, I) || == norma (randn (N, 1)) % -------------------- Generační smyčka --------------------------- ----- odpočet = 0; % dalších 40 řádků obsahuje 20 řádků zajímavého kódu zatímco countteval % Vytvářejte a vyhodnocujte potomky lambda pro k = 1: lambda arx(:,k) = xmean + sigma * B * (D .* randn(N,1)); % m + sig * normální (0, C) arfitness(k) = feval(strfitnessfct, arx(:,k)); % objektivního volání funkce odpočet = odpočítávání+1; konec% Seřadit podle fitness a vypočítat vážený průměr do xmean [arfitness, arindex] = třídit(arfitness); % minimalizace xold = xmean; xmean = arx(:,arindex(1:mu))*závaží; % rekombinace, nová střední hodnota % Kumulace: Aktualizujte vývojové cesty ps = (1-cs)*ps ... + čtv(cs*(2-cs)*mueff) * invsqrtC * (xmean-xold) / sigma; hsig = norma(ps)/čtv(1-(1-cs)^(2*odpočet/lambda))/brada < 1.4 + 2/(N+1); ks = (1-cc)*ks ... + hsig * čtv(cc*(2-cc)*mueff) * (xmean-xold) / sigma; % Přizpůsobte kovarianční matici C. artmp = (1/sigma) * (arx(:,arindex(1:mu))-repmat(xold,1,mu)); C = (1-c1-cmu) * C ...% považuje starou matici + c1 * (ks*ks' ...% plus hodnocení první aktualizace + (1-hsig) * cc*(2-cc) * C) ...% menší korekce, pokud hsig == 0 + cmu * artmp * diag(závaží) * artmp'; % plus hodnocení mu aktualizace % Přizpůsobte velikost kroku sigma sigma = sigma * exp((cs/dampy)*(norma(ps)/brada - 1)); % Rozkladu C na B * diag (D. ^ 2) * B '(diagonalizace) -li countteval - vlastní> lambda / (c1 + cmu) / N / 10% k dosažení O (N ^ 2) vlastní = odpočítávání; C = triu(C) + triu(C,1)'; % vynucení symetrie [B,D] = eig(C); % vlastního rozkladu, B == normalizované vlastní vektory D = čtv(diag(D)); % D je nyní vektor standardních odchylek invsqrtC = B * diag(D.^-1) * B'; konec% Přestávka, pokud je kondice dostatečně dobrá nebo stav překročí 1e14, doporučujeme použít lepší metody ukončení -li arfitness (1) <= stopfitness || max (D)> 1e7 * min (D) přestávka; konecend% while, smyčka ukončení generace xmin = arx(:, arindex(1)); % Vrátí nejlepší bod poslední iterace. % Všimněte si, že xmean se očekává rovnoměrný % lepší.konec% --------------------------------------------------------------- funkceF=frosenbrock(X)-li velikost(X,1) < 2 chyba(„rozměr musí být větší“); konecf = 100 * součet ((x (1: end-1). ^ 2 - x (2: end)). ^ 2) + součet ((x (1: end-1) -1). ^ 2);konec
Teoretické základy
Vzhledem k distribučním parametrům - průměru, odchylkám a kovariancím - normální rozdělení pravděpodobnosti pro vzorkování nových kandidátských řešení je maximální rozdělení pravděpodobnosti entropie přes , tj. distribuce vzorku s minimálním množstvím předchozích informací zabudovaných do distribuce. Další úvahy o aktualizačních rovnicích CMA-ES jsou uvedeny níže.
Variabilní metrika
CMA-ES implementuje stochastické proměnná-metrická metoda. V konkrétním případě konvexně kvadratické objektivní funkce
kovarianční matice přizpůsobuje se inverzní funkci k Hesenská matice , až do skalární faktor a malé náhodné výkyvy. Obecněji také o funkci , kde se přísně zvyšuje, a proto zachovává pořádek a je konvexně kvadratická, kovarianční matice přizpůsobuje se , až do skalární faktor a malé náhodné výkyvy. Všimněte si, že pro statický model spoléhající se na kvadratickou aproximaci byla prokázána zobecněná schopnost evolučních strategií přizpůsobit kovarianční matici odrážející inverzní Hessian.[3]
Aktualizace s maximální pravděpodobností
Aktualizační rovnice pro střední a kovarianční matici maximalizují a pravděpodobnost zatímco připomíná maximalizace očekávání algoritmus. Aktualizace průměrného vektoru maximalizuje logaritmickou pravděpodobnost, takovou
kde
označuje logaritmickou pravděpodobnost z vícerozměrného normálního rozdělení se střední hodnotou a jakoukoli pozitivní definitivní kovarianční matici . To vidět je nezávislý na nejprve poznamenejte, že to je případ jakékoli diagonální matice , protože souřadnicový maximalizátor je nezávislý na měřítku. Poté rotace datových bodů nebo výběr ne diagonální jsou ekvivalentní.
Hodnost- aktualizace kovarianční matice, to znamená pravý krajní součet v aktualizační rovnici , v tom maximalizuje logaritmickou pravděpodobnost
pro (v opačném případě je singulární, ale v zásadě platí stejný výsledek ). Tady, označuje pravděpodobnost z vícerozměrného normálního rozdělení s nulovou střední a kovarianční maticí . Proto pro a , je výše maximální pravděpodobnost odhadce. Vidět odhad kovariančních matic pro podrobnosti o odvození.
Přirozený sestupný gradient v prostoru distribucí vzorků
Akimoto et al.[4] a Glasmachers et al.[5] nezávisle objevil, že aktualizace distribučních parametrů se podobá sestupu ve směru vzorkovaného přirozený gradient očekávané hodnoty objektivní funkce (bude minimalizováno), kde je očekávání zohledněno při distribuci vzorku. S nastavením parametrů na a , tj. bez kontroly velikosti kroku a aktualizace první úrovně, lze CMA-ES tedy považovat za instanci Strategie přirozeného vývoje (NES).[4][5]The přírodní spád je nezávislá na parametrizaci distribuce. Vzato s ohledem na parametry θ distribuce vzorku str, sklon lze vyjádřit jako
kde záleží na vektoru parametru . Takzvaný funkce skóre, , označuje relativní citlivost str w.r.t. θa je očekáváno s ohledem na rozdělení str. The přírodní spád z , v souladu s Fisherova metrika informací (informativní míra vzdálenosti mezi distribucemi pravděpodobnosti a zakřivením relativní entropie ), nyní čte
Kde Fisher informace matice je očekávání Hesián z -Lnstr a vykreslí výraz nezávisle na zvolené parametrizaci. Spojením předchozích rovností dostaneme
Monte Carlo aproximace druhého očekávání přebírá průměr λ vzorky z str
kde notace shora se používá, a proto monotónně klesají v .
Ollivier et al.[6]konečně našel důslednou derivaci pro robustnější váhy, , jak jsou definovány v CMA-ES (váhy jsou často nulové pro i > μ). Jsou formulovány jako konzistentní odhadce pro CDF z na místě , složený s pevně monotónní sníženou transformací , to znamená,
Díky tomu je algoritmus necitlivý na konkrétní -hodnoty. Stručněji, pomocí CDF odhadce namísto sám nechal algoritmus záviset pouze na hodnocení -hodnoty, ale ne na jejich základní distribuci. To činí algoritmus neměnným až monotónním -transformace. Nechat
takhle je hustota vícerozměrné normální rozdělení . Pak máme explicitní výraz pro inverzi Fisherovy matice informací kde je opraveno