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^

Hendrik
źródło

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.

Jan van der Vegt
źródło
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|

rilut
źródło
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.

Ryan Zotti
źródło
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