Нейронные сети - соотношение потерь и точности

11

Меня немного смущает сосуществование метрик потерь и точности в нейронных сетях. Оба должны оказывать «точность» из сравнения y и у , не так ли? Так не является ли применение двух излишних в эпоху обучения? Кроме того, почему они не коррелируют?y^

Хендрик
источник

Ответы:

9

Потеря журнала имеет приятное свойство - это дифференцируемая функция. Точность может быть более важной и определенно более интерпретируемой, но ее нельзя напрямую использовать при обучении сети из-за алгоритма обратного распространения, который требует, чтобы функция потерь была дифференцируемой. Когда предпочтительный убыток не может быть напрямую оптимизирован (например, точность), вы используете функцию потерь, которая ведет себя аналогично прокси истинной метрики. В случае двоичной классификации вы должны использовать сигмоид в конце и потерю в журнале для приблизительной точности. Они сильно коррелированы.

Ян ван дер Вегт
источник
6

Потеря является более общей, чем точность. В классификации вы можете достичь 100% точности, где все метки предсказаны правильно. Но как насчет регрессии или прогнозирования? Там нет определения 0% и 100%

|yhaty|

rilut
источник
0

Да, они оба измеряют точность y и y_hat, и да, они обычно коррелируют. Иногда функция потерь может не соответствовать точности, но вы по-прежнему заинтересованы в измерении точности, даже если вы не оптимизируете ее напрямую. Пример Google TensorFlow MNIST минимизирует / оптимизирует перекрестную потерю энтропии, но отображает точность для пользователя при сообщении результатов, и это вполне нормально.

Иногда вы не хотите оптимизировать точность напрямую. Например, если у вас серьезный дисбаланс классов, ваша модель максимизирует точность, просто всегда выбирая наиболее распространенный класс, но это не будет полезной моделью. В этом случае энтропия / логарифмическая потеря была бы лучшей функцией потерь для оптимизации.

Райан Зотти
источник
7
Что еще более важно, точность не является дифференцируемой функцией, поэтому вы не можете распространять ее обратно.
Ян ван дер Вегт
@JanvanderVegt Да, это замечательный момент
Райан Зотти
Я узнал, что в Keras я могу поместить «пользовательские» метрики оценки (в данном случае под «обычай») я имею в виду отсутствие встроенной реализации в Keras, такой как AUC или F1-Score) в функции компиляции. Я предполагаю, что в этом случае эти «пользовательские» показатели будут использоваться / отображаться вместо точности везде, где для show_accuracyпараметра установлено значение «Истина» (например, при подгонке или при оценке). Это верно?
Хендрик
1
@Hendrik да, вы можете, просто создайте def your_own_metric(y_true, y_pred)функцию и передайте ееmodel.compile(..., metrics=[your_own_metric])
rilut