74

Когда я тренировал свою нейронную сеть с помощью Theano или Tensorflow, они будут сообщать переменную «потеря» за эпоху.Как интерпретировать «потерю» и «точность» для модели машинного обучения

Как интерпретировать эту переменную? Более высокие потери лучше или хуже, или что это означает для конечной производительности (точности) моей нейронной сети?

ответ

123

Нижняя потеря, Лучшая модель (если модель не была переделана для учебных данных). Убыток рассчитывается на обучение и валидация и его взаимодействие заключается в том, насколько хорошо модель работает для этих двух наборов. В отличие от точности, потеря не является процентом. Это суммирование ошибок, сделанных для каждого примера в наборах обучения или проверки.

В случае нейронных сетей потери обычно составляют negative log-likelihood и residual sum of squares для классификации и регрессии соответственно. Тогда, естественно, основной целью учебной модели является уменьшение (минимизация) значения функции потерь в отношении параметров модели путем изменения значений вектора веса с помощью различных методов оптимизации, таких как backpropagation в нейронных сетях.

Значение потерь означает, насколько хорошо или плохо определенная модель ведет себя после каждой итерации оптимизации. В идеале можно ожидать уменьшения потерь после каждой или нескольких итераций (я).

Точность модели обычно определяется после того, как параметры модели изучены и исправлены, а обучение отсутствует. Затем тестовые образцы подаются в модель, и количество ошибок (потеря ноль-1), которые делают модель, записывается после сравнения с истинными целями. Затем вычисляется процент ошибочной классификации.

Например, если количество тестовых образцов равно 1000, а модель правильно классифицирует 952 из них, то точность модели составляет 95,2%.

enter image description here

Есть также некоторые тонкости при одновременном снижении стоимости потерь. Например, вы можете столкнуться с проблемой over-fitting, в которой модель «запоминает» примеры обучения и становится неэффективной для тестового набора. Переопределение также происходит в случаях, когда вы не используете regularization, у вас очень сложная модель (количество свободных параметров W велико), или количество точек данных N очень низкое.

+2

Привет @Amir, спасибо за подробное объяснение. Однако у меня есть проблема: в моей нейронной сети потеря всегда уменьшается, когда я тренировался (когда возрастают * эпохи *), однако точность не лучше. – mamatv

+5

@mamatv Пока стоимость уменьшается, вам должно быть хорошо идти. Хотя стоимость и точность обычно имеют отношение обратной пропорциональности, но вы можете заметить, что точность является суммированием ошибок нуля одного, тогда как стоимость представляет собой суммирование чисел с плавающей запятой. Таким образом, снижение стоимости на 0,001% не обязательно означает увеличение точности на 0,001%. Повышение точности намного сложнее, когда снижение стоимости является неосязаемым (стоимость очень близка к локальным минимумам) – Amir

+1

@mamatv Я должен был сказать, пока стоимость обучения и валидации уменьшается, и вы должны идти хорошо. Вы также можете проверить точность проверки в каждую эпоху. Если он начнет расти, ваша модель, возможно, начнет переполняться, и вы должны прекратить ее обучение. – Amir

5

Это два разных показателя для оценки производительности вашей модели, обычно используемой в разных фазах.

Потеря часто используется в процессе обучения, чтобы найти «лучшие» значения параметров для вашей модели (например, веса в нейронной сети). Это то, что вы пытаетесь оптимизировать в обучении, обновляя веса.

Точность более применима. Как только вы найдете оптимизированные параметры выше, вы используете эти показатели, чтобы оценить, насколько точный прогноз вашей модели сравнивается с истинными данными.

Давайте использовать пример классификации игрушек. Вы хотите предсказать пол из своего веса и высоты.У вас есть 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.

1

@Aadnan Только для уточнения наборов данных обучения/проверки/тестирования: Учебный набор используется для начального обучения модели, инициализации весов нейронной сети.

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

Затем тестовый набор используется только для проверки прогнозируемой точности обученной нейронной сети по ранее невидимым данным после обучения и выбора параметров/архитектуры с помощью наборов данных обучения и валидации.