Podręcznik
2. Zadanie minimalizacji
2.4. Algorytmy gradientowe - matematyczna droga w dół ...
W przypadku optymalizacji w przestrzeni ciągłej, jedną z najstarszych i najbardziej klasycznych grup metod są algorytmy gradientowe. Ich zasada działania opiera się na założeniu, że funkcja celu jest gładka – czyli ciągła i różniczkowalna.
Intuicja: jak zejść po schodach w ciemności
Wyobraź sobie, że stoisz na środku zbocza i chcesz zejść na sam dół. Nie widzisz całej doliny – widzisz tylko to, co masz bezpośrednio wokół siebie. Możesz dotknąć ziemi wokół i ocenić, gdzie jest najstromiej w dół – i właśnie w tę stronę zrobisz krok. To właśnie jest gradient: wektor wskazujący kierunek najszybszego spadku wartości funkcji.
Gradient i krok
Jeśli funkcja celu to \(f(x)\), a \(x \in \mathbb{R}^n\), to gradient to:
\( \nabla f(x) = \left[ \frac{\partial f}{\partial x_1}, \ldots, \frac{\partial f}{\partial x_n} \right] \)
Podstawowa iteracyjna formuła wygląda następująco:
\( x_{k+1} = x_k - \alpha \nabla f(x_k) \)
- \(x_k\) to punkt aktualny,
- \(\alpha\) to współczynnik uczenia (długość kroku),
- \( \nabla f(x_k)\) to gradient w punkcie \(x_k\).
Metoda największego spadku
To najprostszy algorytm gradientowy. Za każdym razem idziemy w kierunku przeciwnym do gradientu – czyli w stronę, gdzie funkcja maleje najszybciej. W praktyce ważne jest dobranie odpowiedniej wartości \(\alpha\), bo:
- zbyt duży krok może przeskoczyć minimum,
- zbyt mały krok prowadzi do powolnej zbieżności.
Metoda Newtona i quasi-Newtona
Metoda Newtona wykorzystuje nie tylko gradient, ale też drugą pochodną – tzw. hesjan (macierz drugich pochodnych cząstkowych):
\[ H(x) = \left[ \frac{\partial^2 f}{\partial x_i \partial x_j} \right] \]
Formuła iteracyjna:
\[ x_{k+1} = x_k - H^{-1}(x_k) \nabla f(x_k) \]
Dlaczego druga pochodna daje nam przewagę? Bo zawiera informację o krzywiźnie funkcji celu. Gradient mówi tylko, w którą stronę funkcja maleje – ale nie mówi, jak szybko. Hesjan dostarcza wiedzy o tym, jak zakrzywiona jest funkcja w danym punkcie. Dzięki temu można:
- lepiej dobrać długość kroku (adaptacyjnie, zamiast na sztywno),
- szybciej zbliżyć się do minimum – zwłaszcza w pobliżu punktu optymalnego,
- unikać efektu "zygzakowania" w przypadku funkcji o bardzo różnych krzywiznach w różnych kierunkach.
Warunki stopu
W algorytmach gradientowych zatrzymujemy się, gdy:
- \(\| \nabla f(x_k) \| < \epsilon\) – gradient jest prawie zerowy,
- \(\| x_{k+1} - x_k \| < \delta\) – zmiana rozwiązania jest minimalna,
- osiągnięto maksymalną liczbę iteracji.
Ograniczenia i trudności
- Minimum lokalne – mogą "utknąć" w lokalnym minimum, nie docierając do globalnego,
- Brak gładkości – jeśli funkcja celu nie jest różniczkowalna, nie możemy użyć pochodnych,
- Siodła i płaskowyże – gradient może nie prowadzić w dobrą stronę.
Przykłady zastosowań
- Optymalizacja kształtów elementów mechanicznych,
- Minimalizacja strat w sieciach neuronowych (np. SGD w ML),
- Wyznaczanie parametrów modeli analitycznych,
- Problemy portfela inwestycyjnego, gdzie funkcja ryzyka i zwrotu ma formę analityczną.
W kolejnym rozdziale zobaczymy, jak w algorytmach klasycznych i gradientowych można wprowadzać ograniczenia – zarówno twarde (jawne) jak i miękkie (np. kary za przekroczenie dopuszczalnego zakresu).