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).