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

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

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

Ответ 1

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

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

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

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

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

введите описание изображения здесь

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

Ответ 2

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

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

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

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

так что потеря

Затем вы изучите алгоритм (например, градиентный спуск), чтобы найти способ обновить 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: в ответе Амира обратное распространение называется методом оптимизации в NN. Я думаю, что это будет рассматриваться как способ найти градиент для весов в NN. Распространенным методом оптимизации в NN являются GradientDescent и Adam.

Ответ 3

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

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

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