Sieci neuronowe - korelacja strat i dokładności


11

Jestem trochę zdezorientowany współistnieniem wskaźników strat i dokładności w sieciach neuronowych. Oba mają uczynić „dokładność” w porównaniu y i Y nie są? Czy więc zastosowanie dwóch zbędnych elementów w epokach treningowych nie jest możliwe? Co więcej, dlaczego nie są ze sobą powiązane?y^

Odpowiedzi:


9

Utrata dziennika ma tę zaletę, że jest funkcją różniczkowalną. Dokładność może być ważniejsza i jest zdecydowanie bardziej interpretowalna, ale nie jest bezpośrednio użyteczna w szkoleniu sieci ze względu na algorytm propagacji wstecznej, który wymaga różniczkowania funkcji utraty. Gdy preferowanej straty nie można bezpośrednio zoptymalizować (np. Dokładności), używasz funkcji straty, która zachowuje się podobnie do zastępczej prawdziwej metryki. W przypadku klasyfikacji binarnej użyłbyś sigmoidu na końcu i utraty logu w celu przybliżenia dokładności. Są wysoce skorelowane.


6

Strata jest bardziej ogólna niż dokładność. W klasyfikacji można przejść do 100% dokładności, gdzie wszystkie etykiety są poprawnie prognozowane. Ale co z regresją lub prognozowaniem? Brak definicji 0% i 100%

|yhzat-y|


0

Tak, oba mierzą dokładność y i y_hat i tak, są zwykle skorelowane. Czasami funkcja utraty może nie być dokładnością, ale nadal jesteś zainteresowany pomiarem dokładności, nawet jeśli nie optymalizujesz jej bezpośrednio. Przykład Google TensorFlow MNIST minimalizuje / optymalizuje utratę entropii krzyżowej, ale wyświetla użytkownikowi dokładność podczas raportowania wyników, i jest to całkowicie w porządku.

Czasami nie chcesz bezpośrednio optymalizować dokładności. Na przykład, jeśli masz poważny brak równowagi klas, Twój model zmaksymalizuje dokładność, po prostu zawsze wybierając najczęstszą klasę, ale nie byłby to użyteczny model. W takim przypadku entropia / utrata logów byłaby lepszą funkcją straty w celu optymalizacji.


7
Co ważniejsze, dokładność nie jest funkcją różniczkowalną, więc nie można przez nią propagować wstecz.
Jan van der Vegt,

@JanvanderVegt Tak, to świetny punkt
Ryan Zotti

Nauczyłem się, że w Keras mogę umieścić „niestandardowe” wskaźniki oceny (niestandardowe w tym przypadku oznacza to, że nie ma wbudowanej implementacji w Keras, takiej jak AUC lub F1-Score) w funkcji kompilacji. Zakładam, że w tym przypadku te „niestandardowe” wskaźniki będą używane / wyświetlane zamiast dokładności wszędzie tam, gdzie show_accuracyparametr jest ustawiony na True (np. Przy dopasowywaniu lub ocenie). Czy to jest poprawne?
Hendrik,

1
@Hendrik tak, możesz, po prostu utwórz def your_own_metric(y_true, y_pred)funkcję i przekaż ją domodel.compile(..., metrics=[your_own_metric])
rilut
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.