Это два разных показателя для оценки производительности вашей модели, обычно используемой в разных фазах.
Потеря часто используется в процессе обучения, чтобы найти «лучшие» значения параметров для вашей модели (например, веса в нейронной сети). Это то, что вы пытаетесь оптимизировать в обучении, обновляя веса.
Точность более применима. Как только вы найдете оптимизированные параметры выше, вы используете эти показатели, чтобы оценить, насколько точный прогноз вашей модели сравнивается с истинными данными.
Давайте использовать пример классификации игрушек. Вы хотите предсказать пол из своего веса и высоты.У вас есть 3 данных, они выглядят следующим образом: (0 означает самец, 1 означает женщину)
y1 = 0, x1_w = 50kg, x2_h = 160cm;
y2 = 0, x2_w = 60kg, x2_h = 170cm;
y3 = 1, x3_w = 55kg, x3_h = 175cm;
используется простой логистической регрессионной модели, которая у = 1/(1 + exp- (b1 * x_w + b2 * x_h))
Как найти b1 и b2? вы сначала определяете потерю и используете метод оптимизации для минимизации потерь в итеративном режиме путем обновления b1 и b2.
В нашем примере, типичная потеря для этой двойной задачи классификации может быть: (минус знак должен быть добавлен перед знаком суммы)
Мы не знаем, что b1 и b2 должно быть. Сделаем случайное предположение, что b1 = 0,1 и b2 = -0,03. Тогда какова наша потеря сейчас?
y1_hat = 1/(1 + ехр {- (0,1 * 50-0.03 * 160)}) = 0,549834 = 0,55
y2_hat = 1/(1 + ехр {- (0,1 * 60-0.03 * 170)}) = 0,7109495 = 0,71
y3_hat = 1/(1 + ехр {- (0,1 * 55-0.03 * 175)}) = 0,5621765 = 0,56
поэтому потери (-log (1 -0.55) + -log (1-0.71) - log (0.56)) = 2.6162
Тогда алгоритм обучения (например, градиентный спуск) найдет способ обновить b1 и b2, чтобы уменьшить потерю.
Что делать, если b1 = 0,1 и b2 = -0,03 является окончательным b1 и b2 (выход с градиентного спуска), какова точность сейчас?
Предположим, что если y_hat> = 0,5, мы решили, что наше предсказание является женским (1). иначе это будет 0. Поэтому наш алгоритм предсказывает y1 = 1, y2 = 1 и y3 = 1. Какова наша точность? Мы делаем неверный прогноз на y1 и y2 и делаем правильный на y3. Итак, теперь наша точность равна 1/3 = 33,33%
PS: В Amir's answer обратное распространение называется методом оптимизации в NN. Я думаю, что это будет рассматриваться как способ найти градиент для весов в NN. Общий метод оптимизации в NN - GradientDescent и Adam.
Привет @Amir, спасибо за подробное объяснение. Однако у меня есть проблема: в моей нейронной сети потеря всегда уменьшается, когда я тренировался (когда возрастают * эпохи *), однако точность не лучше. – mamatv
@mamatv Пока стоимость уменьшается, вам должно быть хорошо идти. Хотя стоимость и точность обычно имеют отношение обратной пропорциональности, но вы можете заметить, что точность является суммированием ошибок нуля одного, тогда как стоимость представляет собой суммирование чисел с плавающей запятой. Таким образом, снижение стоимости на 0,001% не обязательно означает увеличение точности на 0,001%. Повышение точности намного сложнее, когда снижение стоимости является неосязаемым (стоимость очень близка к локальным минимумам) – Amir
@mamatv Я должен был сказать, пока стоимость обучения и валидации уменьшается, и вы должны идти хорошо. Вы также можете проверить точность проверки в каждую эпоху. Если он начнет расти, ваша модель, возможно, начнет переполняться, и вы должны прекратить ее обучение. – Amir