Metody automatycznej optymalizacji cz.i metody dwufazowe Święta Wielkanocne już za nami, tak więc bierzemy się wspólnie do pracy. Ostatnim razem dokonaliśmy charakterystyki zadań optymalizacji i wskazaliśmy na przykłady optymalizacji automatycznej. Tym razem zajmiemy się dokładniej metodami optymalizacji, rozpoczynając od metod dwufazowych dla zadań nieliniowych, wypukłych. Metody liniowe (dla zadań liniowych), a także globalne (dla niewypukłych zadań nieliniowych) zostawimy sobie na później. W metodach dwufazowych zakłada się, że funkcja celu jest funkcją wypukłą. Oznacza to, że jej wykres wygina się do dołu, a dokładniej, że zachodzi następująca właściwość dla dowolnej pary punktów x, y ze zbiory dopuszczalnego af ( x ) + (1 a) f ( y) > f ( ax + (1 a) y) gdzie a jest dowolną wartością z zakresu (0,1). Jeśli funkcja celu jest wypukła, to ma ona dokładnie jedno minimum. Co więcej, wzdłuż odcinka łączącego dowolny punkt dopuszczalny z minimum, funkcja celu jest malejąca. Pomysł na metodę dwufazową wynika bezpośrednio z założenia o wypukłości funkcji celu. Mówiąc w skrócie, wystarczy iść cały czas w kierunku, w którym funkcja celu maleje, aby w końcu znaleźć się dowolnie blisko minimum lokalnego. W dalszym opisie będziemy używać pojęcia kierunku poprawy wokół punktu x. Kierunkiem takim jest każdy taki wektor d, że w otoczeniu punktu roboczego o dowolnie małym, niezerowym promieniu ε zachodzi właściwość, że wszystkie punkty w kierunku d mają wartość funkcji niższą niż w x: dla każdego r < ε f ( x + rd) < f ( x) Zasada działania dwufazowych metod optymalizacji Metoda dwufazowa przetwarza jeden punkt roboczy x( (t jest numerem iteracji metody). W każdej iteracji, wykonywane są dwie fazy 1) wybór kierunku poprawy d(, 2) minimalizacja w kierunku poprawy, tzn. minimalizacja funkcji φ jednej zmiennej τ ϕ ( τ ) = f + τd(, będącej przekrojem funkcji celu w kierunku d(, wyprowadzonym z punktu roboczego x(; wynikiem minimalizacji jest punkt τ opt, jeśli nie jest spełnione kryterium zatrzymania, to nowym punktem roboczym x(t+1) staje się punkt x( t + 1) = x( + τ ( i następuje przejście do 1) optd Można udowodnić, że każda metoda dwufazowa jest zbieżna do minimum funkcji celu, tzn. że po upływie dostatecznej liczby iteracji, punkt roboczy będzie dowolnie blisko minimum funkcji. Trafienia w punkt nie gwarantuje się. Na jakość wyników metody dwufazowej składa się zarówno odpowiedni sposób wybierania kierunków poprawy, jak i sprawność wyznaczania minimum w kierunku. Zaczniemy od tego drugiego zadania. Minimalizacja kierunkowa minimalizacja funkcji jednej zmiennej Wykres funkcji ϕ ( τ ) = f + τd( może wyglądać następująco
f(x( φ(τ) f(x(+τ 1 d( 0 τ 1 τ opt τ Zadanie minimalizacji funkcji φ polega więc na znalezieniu wartości τ opt. Z punktu widzenia efektywności, ważne jest również, aby zrobić to jak najszybciej, a zatem, aby jak najmniej punktów odwiedzić po drodze. Znanych jest wiele metod minimalizacji kierunkowej, my poprzestaniemy na omówieniu paru wybranych, większą wagę przywiązując do pomysłu metody niż do jej szczegółów. Metoda aproksymacji parabolicznej Dość popularnym założeniem, sprawdzającym się wówczas, gdy punkt roboczy jest w otoczeniu maksimum lokalnego, jest przyjęcie, że funkcja φ da się przybliżyć parabolą. Dostajemy metodę iteracyjną, przetwarzającą punkt τ(, którego początkową wartością jest τ(0)=0. Dolosowywane są dwa punkty, τ 1 (, τ 2 ( w otoczeniu τ(, a następnie dopasowuje się parabolę przechodzącą przez te punkty. Wyznacza się punkt τ(t+1), będący wyznaczonym minimum dopasowanej paraboli. Jeśli φ jest rzeczywiście parabolą, to punkt τ(t+1) jest wynikiem poszukiwań. Jeśli zaś funkcja φ nie jest parabolą, należy proces losowania dwóch dodatkowych punktów i wyznaczania minimum dopasowanej paraboli powtarzać do skutku do uzyskania zbieżności ciągu kolejnych wartości τ(. Wartość τ opt jest granicą tego ciągu. Metoda złotego podziału Inna dość popularna metoda, zwana metodą złotego podziału, polega na poszukiwaniu położenia τ opt bez żadnych założeń do kształtu funkcji φ w otoczeniu punktu roboczego. O metodzie tej mówi się, że minimalizuje maksymalną (w sensie najgorszego przypadku) liczbę prób do znalezienia minimum funkcji w kierunku. To oznacza, że warto ją stosować przy funkcjach patologicznych, a także wówczas, gdy punkt roboczy jest stosunkowo daleko od minimum funkcji. Metoda złotego podziału jest metodą iteracyjną, przetwarzającą trzy punkty: 1) punkt τ 1 (, którego początkową wartością jest τ 1 (0)=0, 2) punkt τ 2 (, którego początkowe położenie τ 1 ( jest dalsze niż przypuszczalna odległość od τ( wartości τ opt (czyli τ 1 (>τ opt )., 3) punkt τ 3 ( = τ 1( + k( τ 2 ( τ 1(. Współczynnik k jest współczynnikiem złotego podziału, równym 0.616. Następnie z tych trzech punktów pozostawia się dwa, o najmniejszych wartościach funkcji celu według następującego schematu jeśli φ(τ 2 (< φ(τ 1 ( to τ 1 (t+1)=τ 3 (, τ 2 (t+1)=τ 2 ( jeśli φ(τ 1 (< φ(τ 2 ( to τ 1 (t+1)=τ 1 (, τ 2 (t+1)=τ 3 (
Punkt τ 3 (t+1) jest wyznaczany według podanego wcześniej wzoru. Położenia punktów τ 1 ( τ 2 ( są coraz bliższe, a cały proces poszukiwania kończy się, gdy ich odległość jest mniejsza niż założona wartość. Położenie punktu τ 1 ( jest aproksymacją punktu τ opt. Jeśli próba wyznaczenia minimum w kierunku d( nie powiodła się (tzn. τ opt =0) wówczas należy spróbować minimalizacji w kierunku -d(. Gdy i to nie pomaga, to x( jest minimum funkcji celu w kierunku d(. Jak wybrać kierunek poprawy Odpowiedź na pytanie, stanowiące tytuł tego paragrafu, jest w zasadzie kluczowa z punktu widzenia efektywności metod dwufazowych. Metod wyboru kierunków poprawy jest wiele, więc podobnie jak przy minimalizacji kierunkowej, ograniczymy się do scharakteryzowania zaledwie kilku, wybierając najbardziej popularne, przynajmniej w naszej subiektywnej ocenie. Będziemy niekiedy zakładać, że funkcja celu jest podwójnie różniczkowalna, tzn. że ma w każdym punkcie pierwszą i drugą pochodną względem każdego z argumentów (istnieją zatem w każdym punkcie gradient i hesjan por. poprzedni odcinek cyklu). Jeśli funkcja celu nie jest znana w postaci analitycznej, wówczas gradient i hesjan (tam gdzie jest taka potrzeba) można wyznaczyć numerycznie. Metody pierwotne Metody poniższe nazwaliśmy pierwotnymi, gdyż stanowią one niejako inspirację dla bardziej sprawnych numerycznie algorytmów. Walorem metod pierwotnych jest przejrzystość pomysłu, co pomaga zrozumieć ich zasadę, natomiast wadą jest nieefektywność lub nawet brak zbieżności. Dlatego w praktyce unika się ich stosowania Poszukiwanie wzdłuż wersorów Metoda ta, zwana również algorytmem Gaussa-Seidla, przetwarza punkt roboczy x(. W każdej iteracji wykonuje się poszukiwania wzdłuż n kolejnych wersorów przestrzeni przeszukiwań. Wersorem e i jest wektor, dla którego spełnione jest 0 dla j i e i ( j) = 1dla j = i Formalnie, w iteracji t, rozważa się ciąg punktów x 1 (, x 2 (, x n (, takich że x i+1 ( jest wynikiem minimalizacji funkcji celu w kierunku wersora e i, startując z punktu x i (. Punkt x 1 ( otrzymuje się przez minimalizację funkcji celu w kierunku wersora e 1, startując z punktu x(. Innymi słowy, ustala się po kolei wszystkie zmienne niezależne z wyjątkiem jednej i próbuje się zminimalizować funkcję celu względem tej zmiennej. Proces ten jest powtarzany dla każdej zmiennej niezależnej. Po zakończeniu takich n poszukiwań przyjmuje się, że x(t+1)=x n (. Poszukiwania kończą się, gdy punkty x(t+1) i x( znajdą się dostatecznie blisko siebie. Zauważmy, że metoda ta nie jest w stanie znaleźć minimum dowolnej funkcji wypukłej. Aby się o tym przekonać, wystarczy rozważyć funkcję dwóch zmiennych 2 f 1( x) = ( x1 + x2) + max( x1, x2 ) i punkt (-1,1). Minimalizacja w kierunku e 1 =[1,0] T sprowadza się do minimalizacji funkcji φ(τ)=f 1 ((-1+τ),1), czyli, po podstawieniu do wzoru na funkcję celu, minimalizacja kierunkowa dotyczy funkcji φ(τ)=(-1+τ+1) 2 + τ-1 +1=τ 2. Minimum w kierunku e 1 przypada więc w punkcie (-1,1), podobnie jest z kierunkiem e 2. Tak więc żaden z wersorów nie jest kierunkiem poprawy i metoda poszukiwań nie rusza, mimo że faktyczne minimum funkcji celu znajduje się w punkcie (0,0). Metoda największego spadku Przyjmuje się, że kierunkiem poprawy jest minus gradient (czyli właśnie największy spadek)
d( = gdzie (x) oznacza gradient funkcji celu w punkcie x. Podejście takie wydaje się być naturalne, jednak ogranicza klasę możliwych funkcji celu. Przykładowo, funkcja f 1, ze względu na nieróżniczkowalność, nie może być optymalizowana tą metodą, chyba że dookreśli się gradient funkcji w miejscach jej nieróżniczkowalności. Jednak po bliższych oględzinach okazuje się, że metoda ta, nawet dla funkcji różniczkowalnych, nie jest zbyt sprawna nawet przy funkcji kwadratowej, może potrzebować znacznej liczby przetworzonych punktów roboczych, aby wreszcie dojść w otoczenie jej minimum. 2 2 Jako przykład rozważmy funkcję dwóch zmiennych f 2( x ) = 16x1 + x2. W punkcie (-1, 1) T minus gradient tej funkcji jest równy 2(( 1,1)) = [16, 1] i nie przechodzi przez punkt (0,0), będący minimum lokalnym minimum w kierunku minus gradientu wypada w punkcie (-30/34, -30/34). Fazy wyboru kierunku oraz minimalizacji kierunkowej będą więc powtarzane jeszcze co najmniej raz. Metoda Newtona Metoda ta jest próbą poprawy metody największego spadku dla funkcji celu, których dobrą aproksymację stanowi funkcja kwadratowa. Zakłada się, że kierunek poprawy jest określony wzorem 1 d( = H ( gdzie H(x) jest hesjanem funkcji celu w punkcie x. Można udowodnić, że kierunek wybrany w powyższy sposób przechodzi przez minimum funkcji celu, jeśli jest ona funkcją kwadratową. Wystarczy więc znaleźć minimum w tym kierunku i nie ma potrzeby ponownego wyboru kierunku. W praktyce metody Newtona nie stosuje się bezpośrednio, ze względu na konieczność kłopotliwego odwracania hesjanu. Powróćmy do kwadratowej funkcji f 2. Jak łatwo się przekonać, jej hesjan jest macierzą H 32 0 ( x 2 ) = 0 2 a jego odwrotność jest równa H 1/ 32 0 ( x 2 ) = 0 1/ 2 (w ogólności, odwracanie hesjanu nie jest tak łatwe jak w tym przypadku, gdy jest on macierzą diagonalną). 1 T Kierunek poprawy w punkcie (-1,1) jest więc równy d ( t ) = H (( 1,1)) (( 1,1)) = [1, 1]. Jak łatwo się przekonać, kierunek ten przechodzi przez minimum funkcji (0,0), a zatem wystarczy już teraz tylko jeden krok metody optymalizacji kierunkowej. Czytelnikowi pozostawiamy wykazanie, że ta właściwość funkcji f 2 zachodzi dla dowolnego punktu (x 1,x 2 ). Metody kierunków sprzężonych Na płaszczyźnie dwa kierunki d 1, d 2 są sprzężone, jeśli są liniowo niezależne, tzn. nie ma takich liczb a,b, że d 1 =ad 2 +b. Przykładem dwóch kierunków sprzężonych są osie układu współrzędnych kartezjańskich. W przestrzeni n wymiarowej zależności są bardziej złożone naraz można pokazać co najwyżej n kierunków sprzężonych, tzn. takich, że żaden z nich jest kombinacją liniową pozostałych. Mówi się, że dowolne n kierunków sprzężonych wyznacza przestrzeń n wymiarową, co oznacza, że można te kierunki potraktować jako osie nowego układu współrzędnych. Te obserwacje stanowią punkt wyjścia do metod wyboru kierunków poprawy, które są wzajemnie sprzężone. Metody te są ulepszonymi wersjami metod prostych, omówionych wcześniej.
Prosta metoda kierunków sprzężonych Metoda ta jest często nazywana metodą Powella. Metoda przetwarza punkt roboczy x( oraz utrzymuje bazę kierunków d 1 (..d n (, których wartościami początkowymi mogą być np. wersory przestrzeni. Podobnie jak w metodzie Gaussa-Seidla, w iteracji t, rozważa się ciąg punktów x 1 (, x 2 (, x n (, takich że x i+1 ( jest wynikiem minimalizacji funkcji celu w kierunku d i (, startując z punktu x i (. Dodatkowo, wyznacza się punkt x n+1 (, będący wynikiem minimalizacji w kierunku d 1 (, poczynając z punktu x n (. Potem dokonuje się zmiany bazy kierunków w następujący sposób: d i (t+1)=d i+1 (, d n (= x n+1 (-x (. Nowym punktem roboczym staje się x(t+1)=x n+1 (. Poszukiwania kończą się, gdy punkty x(t+1) i x( znajdą się dostatecznie blisko siebie. Zaletą powyższej metody jest zwiększenie szybkości zdążania do minimum w porównaniu z metodą Gaussa-Seidla. Pamiętać jednak należy o tym, że niewłaściwie zainicjowana baza kierunków prowadzić może do podobnych problemów z niemożnością wystartowania metody minimalizacji kierunkowej. Metoda gradientów sprzężonych Metoda ta jest próbą poprawienia właściwości metody największego spadku. Zasada metody polega na tym, że kierunek poprawy jest wynikiem nałożenia gradientu i historii dotychczasowych kierunków, reprezentowanej w postaci kierunku roboczego. Historia ta wyznacza niejako kierunek typowego spadku, a gradient w punkcie roboczym jest czymś w rodzaju odchylenia od tego trendu. Kierunek poprawy jest dany wzorem d ( = + bd( t 1) gdzie wartość współczynnika b może być różna w zależności od odmiany metody. W odmianie wg Fletchera-Reeves a jest ona obliczana ze wzoru b = t 1)) gdzie a jest normą (odpowiednikiem długości) wektora a T a = a a Metody zmiennej metryki Metody te są zwane również pseudo-newtonowskimi, ze względu na podobieństwo do metody Newtona. Zasada metody polega na tym, że algorytm minimalizacji utrzymuje, oprócz punktu roboczego, również macierz V( aproksymującą odwrotność hesjanu H -1. Kierunek poprawy jest wyznaczany jako d( = V ( Po wyznaczeniu nowego punktu roboczego x(t+1) w wyniku minimalizacji kierunkowej, dokonuje się modyfikacji macierzy V(. Znanych jest kilka różnych wzorów na tę poprawkę, nazywanych od nazwisk pomysłodawców BFP, BFGS, WBD. Wzorów tych ze względów praktycznych nie będziemy przytaczać. Wartością początkową V(0) jest macierz jednostkowa. Uwagi praktyczne Dokonaliśmy bardzo uproszczonego przeglądu metod optymalizacji dwufazowej. Z przedstawionych metod, efektywniejsze są metody kierunków sprzężonych i przez to są one zdecydowanie warte polecenia. Przy funkcjach niewypukłych, nawet jeśli mają one jedno minimum, sprawy się nieco komplikują. Przede wszystkim nie ma gwarancji zbieżności żadnej z tych metod. Jednak lepiej sprawować się mogą metody zmiennej metryki lub gradientów sprzężonych. Gdy funkcja celu ma więcej niż jedno minimum, wówczas, w zależności od punktu startowego, mogą być znajdowane różne minima lokalne. Aby
zwiększyć prawdopodobieństwo trafienia w minimum globalne, zachodzi potrzeba wielokrotnego uruchamiania metody lokalnej. Zadania niewypukłe, a także zadania z wieloma minimami lokalnymi, lepiej jest rozwiązywać za pomocą metod do tego przeznaczonych, przede wszystkim zawierających element losowości. Czego nie gwarantują metody optymalizacji? Żadna z metod optymalizacji, nawet przy wypukłej funkcji celu, nie daje pewności znalezienia dokładnego położenia minimum funkcji. Wyjątek stanowią, nie omówione jeszcze, metody liniowe (których stosowalność jest ograniczona do zadań liniowych). Ze względu na skończoną dokładność obliczeń, wynik będzie zawsze nieco odmienny od rzeczywistego położenia minimum. Jeśli funkcja celu nie jest wypukła albo ma rozległe, prawie płaskie obszary wokół minimum, to często zdarza się, że dla tego samego zadania optymalizacji, wyniki znacznie się różnią przy uruchomieniu metody optymalizacji z różnym punktem startowym. Może to być bardzo frustrujące, gdyż np. klienci mogą uznawać ten efekt za niedopuszczalny. Może się również zdarzyć, że człowiek będzie w stanie znaleźć rozwiązanie lepsze niż metoda optymalizacji, zwłaszcza wtedy, gdy minimów lokalnych jest wiele, są liczne ograniczenia, albo struktura zadania zostanie odpowiednio dobrana. Gdzie siedzą metody optymalizacji? Niejawnie umieszczone metody optymalizacji można znaleźć w wielu pakietach modelowania parametrycznego (np. w każdym pakiecie modelowania neuronowego), gdzie optymalizuje się parametry modelu na podstawie zbioru trenującego. Dobrze jest, jeśli użytkownik takiego pakietu może wpływać na wybór metody. Użytkownicy niektórych rodzajów arkuszy kalkulacyjnych znajdą metody optymalizacji pod nazwą solvera. Programy komputerowe implementujące metody optymalizacji są dość mocno rozpowszechnione, zarówno jako pakiety komercyjne, jak i dostępne na zasadach publicznej licencji. Podsumowanie 1) Metody dwufazowe są dostosowane do zadań wypukłych. W zadaniach niewypukłych lub z wieloma minimami lokalnymi jakość rozwiązań może być niska i zależna od sposobu inicjacji metody. 2) Metody kierunków sprzężonych są zazwyczaj sprawniejsze niż ich proste odpowiedniki. Metody wykorzystujące więcej informacji o optymalizowanej funkcji (tzn. gradient, odwrotność hesjanu, a także aproksymacja paraboliczna przy poszukiwaniu minimum w kierunku) są efektywniejsze, jednak pod warunkiem, że ich założenia są spełnione. 3) Metody optymalizacji mogą dawać dobre przybliżenia wyniku, jednak nie gwarantują dokładnej lokalizacji minimum funkcji celu. Przy funkcjach niewypukłych nie ma gwarancji nawet dobrego przybliżenia minimum.