Нейрові мережі - кореляція втрат та точності


11

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

Відповіді:


9

Втрата журналу має приємну властивість, що це диференційована функція. Точність може бути важливішою і, безумовно, більш інтерпретаційною, але вона не може бути безпосередньо застосована при навчанні мережі завдяки алгоритму зворотного розповсюдження, який вимагає диференціювання функції втрат. Якщо бажана втрата не може бути оптимізована безпосередньо (як точність), ви використовуєте функцію втрат, яка поводиться аналогічно проксі-серверу істинної метрики. У разі двійкової класифікації ви використовуєте сигмоїд в кінці та втрату журналу для приблизної точності. Вони сильно корелюються.


6

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

|yhaty|


0

Так, вони обидва вимірюють точність y і y_hat, і так вони зазвичай співвідносяться. Іноді функція втрати може бути не точною, але ви все ще зацікавлені в вимірюванні точності, хоча ви не оптимізуєте її безпосередньо. Приклад MNIST Google TensorFlow мінімізує / оптимізує втрату перехресної ентропії, але показує точність користувачеві під час повідомлення про результати, і це зовсім чудово.

Іноді не хочеться безпосередньо оптимізувати точність. Наприклад, якщо у вас серйозний дисбаланс класу, ваша модель дозволить максимально підвищити точність, просто вибираючи найпоширеніший клас, але це не буде корисною моделлю. У цьому випадку ентропія / втрата журналу буде кращою функцією втрат для оптимізації.


7
Що ще важливіше, точність - це не диференційована функція, тому ви не можете її повторно розповсюджувати.
Ян ван дер Вегт

@JanvanderVegt Так, це прекрасний момент
Ryan Zotti

Я дізнався, що в Керасі я можу поставити "власні" показники оцінювання (під звичайним в цьому випадку я маю на увазі, що в керації немає вбудованої реалізації в Керасі, як AUC або F1-Score). Я припускаю, що в цьому випадку ця "спеціальна" метрика буде використовуватися / відображатися замість точності всюди, де для show_accuracyпараметра встановлено значення True (наприклад, при встановленні або оцінці). Це правильно?
Гендрік

1
@Hendrik так, ви можете, просто створіть def your_own_metric(y_true, y_pred)функцію та передайте їїmodel.compile(..., metrics=[your_own_metric])
rilut
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.