gradient-methods
Problem-solving strategies for gradient methods in optimization
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
Problem-solving strategies for gradient methods in optimization
How to use
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.
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.
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)"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)"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]"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.