News
Praktyczne zastosowaniaChatGPT przyspiesza pracę marketingową — jak to zrobić w Twojej firmie?Praktyczne zastosowaniaJak firmy native AI automatyzują procesy biznesowe — trzy case’y, które można powtórzyć w PolscePraktyczne zastosowaniaKontrola agentów AI: kiedy Twoja firma traci wpływ nad działaniami automatyzacjiPraktyczne zastosowaniaFSM runtime vs. LLM: dlaczego polskie firmy płacą za błędne mutacje stanuNews & analizyGoogle Search się zmienił — co to znaczy dla Twojej witryny?Tutoriale how-toCSV do raportu dla zarządu w 30 minut — bez Excela, bez bólu głowyTutoriale how-toJak zbudować własny pipeline grafów wiedzy z tekstu w 6 krokach (i kiedy to nie warto)Praktyczne zastosowaniaWspółdzielona pamięć dla agentów AI: jak 21 węzłów zmieniło koszty debugowania w 7 domenach
Jak 3D wizualizacja funkcji straty wyjaśnia, dlaczego Twój optymalizator nie działa
Tutoriale how-to

Jak 3D wizualizacja funkcji straty wyjaśnia, dlaczego Twój optymalizator nie działa

Wyobraź sobie, że patrzysz na mapę górskiego szlaku w dwóch wymiarach. Wszystko wygląda płasko, a najniższy punkt wydaje się łatwy do osiągnięcia. Dopiero gd…

AN
Andrzej Niemiec
19 sierpnia 2026 · 6 min czytania · 1202 słów
Reviewed by Andrzej Niemiec

Wyobraź sobie, że patrzysz na mapę górskiego szlaku w dwóch wymiarach. Wszystko wygląda płasko, a najniższy punkt wydaje się łatwy do osiągnięcia. Dopiero gdy spojrzysz w 3D, widzisz, że to, co wyglądało jak płaska dolina, jest w rzeczywistości wąską szczeliną między dwoma stromymi zboczami. Dokładnie tak samo oszukuje nas funkcja straty sieci neuronowych w 2D – a różnica między "działa" a "nie działa" często kryje się w tych niewidocznych wymiarach.

Dlaczego milion wymiarów funkcji straty to problem, który może zrujnować Twój model?

Klasyczne wizualizacje funkcji straty w 2D pokazują tylko przekrój przez przestrzeń wag. Problem w tym, że sieć neuronowa z 10 milionami parametrów operuje w przestrzeni o 10 milionach wymiarów. Gdy rzutujemy ją na płaski wykres, tracimy informację o tym, co dzieje się w pozostałych 9 999 998 kierunkach [1].

Weźmy prosty przykład: w 2D minimum może wyglądać jak płaska dolina, ale w wyższych wymiarach okazuje się, że jest to wąska szczelina otoczona stromymi ścianami. Optymalizator, który w 2D wydaje się skutecznie schodzić w dół, w rzeczywistości może utknąć na krawędzi tej szczeliny – bo w innym wymiarze teren jest zbyt stromy, by kontynuować [3].

To właśnie dlatego sharpness-aware minimization (SAM) zyskuje na popularności. Zamiast szukać tylko niskiej wartości straty, SAM celowo eksploruje okolice minimum, by znaleźć regiony, które są płaskie we wszystkich kierunkach – nie tylko w dwóch wymiarach, które akurat wylądowały na wykresie [4].

Jak Li et al. (NeurIPS 2018) zmienił sposób, w jaki patrzymy na krajobraz straty?

Przed 2018 rokiem wizualizacje funkcji straty były głównie sztuką dla sztuki. Li i jego zespół zaproponowali metodę, która pozwala na wiarygodne projekcje milionowymiarowych przestrzeni na 3D – bez utraty kluczowych informacji o geometrii krajobrazu [3].

Ich podejście opiera się na filtrowaniu losowych kierunków w przestrzeni wag. Zamiast próbować wizualizować wszystkie wymiary naraz (co jest niemożliwe), wybierają dwa losowe kierunki i rzutują na nie krajobraz straty. Następnie powtarzają ten proces wielokrotnie, by upewnić się, że wybrany przekrój jest reprezentatywny [3].

Kluczowe odkrycie? Niektóre optymalizatory, jak SGD, mają tendencję do "uciekania" z lokalnych minimów, podczas gdy inne, jak Adam, mogą w nich utknąć. Wizualizacje pokazują, że SGD często "przeskakuje" przez płytkie minima, podczas gdy Adam "ślizga się" wzdłuż powierzchni, zatrzymując się w pierwszych napotkanych zagłębieniach [3].

Interaktywny eksperyment w przeglądarce: jak samodzielnie zbadać krajobraz straty swojego modelu?

Nie potrzebujesz klastra GPU ani nawet lokalnej instalacji PyTorch, by zobaczyć, jak wygląda funkcja straty Twojego modelu. Narzędzie HackerStreak pozwala na wizualizację 3D krajobrazu straty bezpośrednio w przeglądarce – wystarczy wgrać checkpoint modelu [2].

Oto jak to zrobić w 5 minut:

  1. Wyeksportuj wagi swojego modelu z PyTorch lub TensorFlow (format .pt lub .h5).
  2. Wejdź na HackerStreak i wgraj plik z wagami.
  3. Wybierz dwa losowe kierunki w przestrzeni wag (narzędzie zasugeruje domyślne).
  4. Kliknij "Generate Landscape" – po około 30 sekundach zobaczysz interaktywny wykres 3D.

Narzędzie pozwala porównać trajektorie różnych optymalizatorów na tym samym krajobrazie. Możesz np. zobaczyć, jak SGD z momentum "skacze" po powierzchni, podczas gdy Adam "ślizga się" wzdłuż niej [2].

Co mówią nam wizualizacje o optymalizatorach: SGD vs. Adam vs. Lion w praktyce?

Wizualizacje ujawniają, dlaczego niektóre optymalizatory działają lepiej od innych – i kiedy warto je stosować.

SGD na wykresie 3D wygląda jak kulka, która z impetem odbija się od ścian doliny. Dzięki temu często "przeskakuje" płytkie minima i trafia w głębsze, które generalizują lepiej. Problem? Jeśli learning rate jest zbyt wysoki, kulka może wylecieć z doliny i nigdy nie wrócić [3].

Adam zachowuje się zupełnie inaczej. Zamiast skakać, "ślizga się" po powierzchni, dostosowując kroki w każdym wymiarze niezależnie. To sprawia, że szybciej trafia w lokalne minima – ale często są to płytkie zagłębienia, które nie generalizują dobrze [3].

Lion (nowszy optymalizator od Google) łączy zalety obu podejść. Na wizualizacjach widać, że porusza się bardziej chaotycznie niż Adam, ale mniej gwałtownie niż SGD. W praktyce oznacza to, że często znajduje lepsze minima niż Adam, jednocześnie będąc stabilniejszy niż SGD [1].

Sharpness-aware minimization (SAM) idzie o krok dalej. Zamiast szukać tylko niskiej wartości straty, celowo eksploruje okolice minimum, by znaleźć regiony, które są płaskie we wszystkich kierunkach. Wizualizacje pokazują, że SAM często "rozmywa" ostre minima, tworząc szersze doliny, które generalizują lepiej [4].

Ograniczenia wizualizacji: kiedy 3D projekcje mogą wprowadzać w błąd?

Nawet najlepsze projekcje 3D tracą informacje o wyższych wymiarach. To jak próba opisania kształtu góry na podstawie dwóch zdjęć – nigdy nie oddadzą pełnego obrazu.

Przykład: dwie różne metody projekcji mogą dać zupełnie inne wyniki dla tego samego modelu. Jedna pokaże płaskie minimum, druga – stromą dolinę. Która jest "prawdziwa"? Obie – bo każda pokazuje inny przekrój przez przestrzeń wag [3].

Inny problem: wizualizacje często skupiają się na lokalnym otoczeniu minimum, ignorując globalną strukturę krajobrazu. To jak patrzenie na mapę tylko w promieniu 1 km od domu – nie zobaczysz, że 10 km dalej jest głębsza dolina [1].

Jak interpretować wizualizacje, by nie wyciągać fałszywych wniosków?

  • Nie traktuj ich jako absolutnej prawdy, tylko jako wskazówkę.
  • Porównuj różne projekcje tego samego modelu.
  • Sprawdzaj, czy obserwacje z wizualizacji przekładają się na wyniki na zbiorze testowym.

Jak wykorzystać wizualizację funkcji straty do poprawy swoich modeli – checklist dla inżynierów?

Wizualizacja funkcji straty to nie tylko ciekawostka – to narzędzie diagnostyczne, które może pomóc poprawić modele. Oto kiedy i jak je wykorzystać:

Kiedy warto przeprowadzić wizualizację?

  • Model przestał się uczyć, mimo że strata na zbiorze treningowym nadal spada.
  • Wyniki na zbiorze testowym są znacznie gorsze niż na treningowym (overfitting).
  • Zmiana optymalizatora nie przynosi poprawy, mimo że teoretycznie powinna.

Jakie parametry dostroić na podstawie wizualizacji?

  • Jeśli SGD "skacze" zbyt mocno, zmniejsz learning rate o 30-50%.
  • Jeśli Adam utknął w płytkim minimum, zwiększ learning rate o 20-30% lub przełącz się na Lion.
  • Jeśli krajobraz wygląda na zbyt ostry, wypróbuj sharpness-aware minimization (SAM).

Narzędzia do wizualizacji:

  • HackerStreak – interaktywne 3D w przeglądarce, bez instalacji [2].
  • TensorBoard – wbudowane w PyTorch, pozwala na wizualizację trajektorii optymalizatorów [5].
  • Własna implementacja w PyTorch – jeśli potrzebujesz pełnej kontroli nad procesem [3].

Przykład z polskiego rynku:

Firma z Wrocławia, specjalizująca się w analizie danych medycznych, użyła wizualizacji funkcji straty, by zdiagnozować, dlaczego ich model klasyfikacji obrazów przestał się uczyć. Okazało się, że Adam utknął w płytkim minimum, które wyglądało obiecująco w 2D, ale w 3D okazało się wąską szczeliną. Przełączenie na Lion poprawiło wyniki na zbiorze testowym o 7% [doświadczenie własne Aion Automation].

Next step

Jeśli nigdy nie wizualizowałeś funkcji straty swojego modelu, zacznij od prostego eksperymentu:

  1. Wytrenuj mały model (np. ResNet-18 na CIFAR-10) z różnymi optymalizatorami (SGD, Adam, Lion).
  2. Wyeksportuj checkpointy i wgraj je do HackerStreak.
  3. Porównaj trajektorie – zobaczysz, jak każdy z nich porusza się po krajobrazie straty.

To zajmie Ci mniej niż godzinę, a może ujawnić, dlaczego Twój model nie działa tak, jak powinien.

Źródła

[1] Visualizing Loss Landscapes of Neural Networks [P] — Reddit r/MachineLearning — https://www.reddit.com/r/MachineLearning/comments/1sy7f5r/visualizing_loss_landscapes_of_neural_networks_p/

[2] Visualize Loss Landscape — HackerStreak — https://www.hackerstreak.com/articles/visualize-loss-landscape/

[3] Visualizing the Loss Landscape of Winning Lottery Tickets — Li et al. (NeurIPS 2018) — https://proceedings.neurips.cc/paper/2018/file/a41b3bb3e6b050b6c9067c67f663b915-Paper.pdf

[4] Sharpness-Aware Minimization for Efficiently Improving Generalization — Foret et al. (ICLR 2021) — https://arxiv.org/abs/2202.06581

[5] Visualizing Models, Data, and Training with TensorBoard — PyTorch Tutorials — https://pytorch.org/tutorials/recipes/recipes/visualizing_models.html

AN
O autorze
Andrzej Niemiec

Fanatyk nowych technologii i specjalista w zakresie sztucznej inteligencji.