Funkcja straty

Miara różnicy między przewidywaniami modelu a prawdziwymi wartościami. Trening polega na minimalizowaniu tej funkcji.

Funkcja straty (ang. loss function) to liczbowa miara tego, jak bardzo model się myli — czyli o ile jego przewidywania odbiegają od prawdziwych wartości z danych treningowych. Im wynik wyższy, tym gorzej; cel treningu jest banalnie prosty do opisania (i trudny do osiągnięcia): zminimalizować tę liczbę. To ona zamienia mgliste „model słabo działa” w konkretną wartość, którą algorytm może świadomie obniżać.

Jak to działa

Podczas treningu model dostaje przykład, robi predykcję, a funkcja straty porównuje ją z prawidłową odpowiedzią i zwraca jedną liczbę — błąd. Następnie liczony jest gradient tej funkcji względem parametrów modelu (wag), a optymalizator, np. SGD czy Adam, przesuwa wagi w stronę, która zmniejsza stratę. Powtórz to miliony razy i masz backpropagation w pigułce.

Dlatego funkcja straty musi być różniczkowalna — jeśli nie da się policzyć jej pochodnej, gradient descent nie ma czego się złapać. Dobór funkcji zależy od zadania: do regresji typowo używasz MSE (Mean Squared Error), do klasyfikacji Cross-Entropy, a do detekcji obiektów czy zadań z mocno niezbalansowanymi klasami sięgasz po warianty jak Focal Loss.

Przykład z praktyki

W PyTorch nie piszesz tego wzoru ręcznie. Dla klasyfikacji bierzesz gotowy obiekt: criterion = nn.CrossEntropyLoss(), a w pętli treningowej liczysz loss = criterion(outputs, labels), potem loss.backward() wylicza gradienty i optimizer.step() aktualizuje wagi. Dla regresji analogicznie użyjesz nn.MSELoss(). Wartość loss wypisywana co epokę to twój pierwszy sygnał, czy trening w ogóle idzie w dobrą stronę — powinna spadać.

Częste błędy i mity

  • Mylenie loss z metryką. Funkcja straty służy do optymalizacji, a metryki (accuracy, F1) do oceny dla ludzi. Niska strata nie zawsze znaczy wysoką accuracy.
  • Patrzenie tylko na stratę treningową. Jeśli train loss spada, a walidacyjny rośnie — masz overfitting, nie sukces.
  • Zła funkcja do zadania. CrossEntropyLoss w PyTorchu sam stosuje softmax — jeśli dorzucisz softmax w modelu, policzysz go dwa razy i trening się posypie.
  • Loss = NaN. Zwykle za duży learning rate albo dzielenie przez zero. Nie ignoruj — to nie „kosmetyka”.

Pojęcia powiązane

Warto kojarzyć z tym: gradient descent, backpropagation, optymalizatory (Adam, SGD), learning rate, overfitting, regularyzacja, oraz konkretne funkcje: MSE, Cross-Entropy, MAE i Focal Loss.