Как интерпретировать "потери" и "точность" для модели машинного обучения


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

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

3 102

3 ответа:

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

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

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

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

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

enter image description here

есть также некоторые тонкости при снижении значения потерь. Например, вы можете столкнуться с проблемой более облегающие в котором модель "запоминает" обучающие примеры и становится своего рода неэффективной для тестового набора. Чрезмерная подгонка также происходит в тех случаях, когда вы не используете регуляризации, у вас очень сложная модель (количество свободных параметров W большое) или количество точек данных N очень низкая.

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

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

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

давайте использовать пример классификации игрушек. Вы хотите предсказать пол от своего веса и роста. У вас есть 3 данные, они следующие: (0 означает мужской, 1 означает женский)

y1 = 0, x1_w = 50 кг, x2_h = 160 см;

y2 = 0, x2_w = 60кг, x2_h = 170см;

y3 = 1, x3_w = 55кг, x3_h = 175см;

вы используете простую модель логистической регрессии, которая y = 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 + exp{-(0.1*50-0.03*160)}) = 0.549834 = 0.55

y2_hat = 1/(1 + exp{-(0.1*60-0.03*170)}) = 0.7109495 = 0.71

y3_hat = 1/(1 + exp{-(0.1*55-0.03*175)}) = 0.5621765 = 0.56

Итак, убыток (-журнала(1-0.55) + -журнала(1-0.71) - журнал(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: In Амир, обратное распространение называется методом оптимизации в NN. Я думаю, что это будет рассматриваться как способ найти градиент для Весов в НН. Общим методом оптимизации в NN являются GradientDescent и Adam.

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

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

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