Toolverse
Wszystkie skille

gradient-methods

autor: parcadei

Strategie rozwiązywania problemów optymalizacyjnych z metodami gradientowymi

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Kategoria
Data Science
Wyświetlenia
6

O skillu

Umiejętność wspierająca pracę z metodami gradientowymi w optymalizacji. Zawiera decyzyjne drzewo wyboru między podstawowym spadkiem gradientowym, metodami przyspieszającymi (momentum, Nesterov, gradient sprzężony) a metodą Newtona. Pomaga w doborze wielkości kroku (stały, backtracking, wyszukiwanie liniowe, adaptacyjny) i diagnostyce zbieżności. Integruje się z scipy.optimize do obliczeń numerycznych oraz sympy do symbolicznego liczenia gradientów.

Jak używać

  1. Zidentyfikuj typ problemu optymalizacyjnego: czy pracujesz z funkcją wypukłą, funkcją kwadratową czy ogólnym problemem nieliniowym. To określi, którą metodę wybrać — podstawowy gradient descent dla problemów wypukłych, metodę Newtona dla szybszej zbieżności (wymaga Hesjanu) czy metody przyspieszające dla bardziej złożonych krajobrazów.

  2. Wybierz strategię doboru wielkości kroku (learning rate). Dla początkujących zacznij od stałej wartości alpha, ale jeśli algorytm oscyluje, przejdź na backtracking (warunek Armijo) lub wyszukiwanie liniowe. W aplikacjach uczenia maszynowego rozważ metody adaptacyjne jak Adam czy RMSprop.

  3. Dla funkcji kwadratowych lub problemów liniowych użyj metody gradientu sprzężonego (CG) — oferuje szybszą zbieżność. Wykonaj: uv run python -c "from scipy.optimize import minimize; res = minimize(lambda x: x[0]**2 + x[1]**2, [1, 1], method='CG'); print('Min at', res.x)"

  4. Dla problemów bardziej złożonych zastosuj quasi-Newtonowską metodę BFGS, która przybliża Hessjan bez kosztu jego obliczania. Przykład: uv run python -c "from scipy.optimize import minimize; res = minimize(lambda x: (x[0]-1)**2 + 100*(x[1]-x[0]**2)**2, [0, 0], method='BFGS'); print('Rosenbrock min at', res.x)"

  5. Monitoruj zbieżność poprzez obserwację normy gradientu (powinna maleć poniżej tolerancji), zmniejszania się wartości funkcji oraz braku oscylacji. Jeśli potrzebujesz symbolicznego gradientu, użyj: uv run python -m runtime.harness scripts/sympy_compute.py diff "x**2 + y**2" --var "[x, y]"

  6. Dostosuj parametry na podstawie wyników: jeśli zbieżność jest wolna, zwiększ rozmiar kroku lub przejdź na metodę przyspieszającą; jeśli algorytm oscyluje, zmniejsz rozmiar kroku lub włącz backtracking.

Podobne skille