Вопрос или проблема
Я создал три разные модели с использованием глубокого обучения для многоклассовой классификации, и каждая модель дала мне разные значения точности и потерь. Результаты тестирования моделей следующие:
-
Первая модель: Точность: 98.1% Потери: 0.1882
-
Вторая модель: Точность: 98.5% Потери: 0.0997
-
Третья модель: Точность: 99.1% Потери: 0.2544
Мои вопросы:
-
Какова связь между значениями потерь и точности?
-
Почему потери третьей модели выше, хотя точность выше?
Нет связи между этими двумя метриками.
- Потери можно рассматривать как расстояние между истинными значениями задачи и значениями, предсказанными моделью. Чем больше потери, тем больше ошибок вы сделали на данных.
- Точность можно рассматривать как количество ошибок/некорректных классификаций, которые вы сделали на данных. Чем выше точность, тем меньше некорректных классификаций вы сделали на данных.
Это означает:
- большие потери и низкая точность означают, что вы сделали огромные ошибки на большом объеме данных (наихудший случай)
- низкие потери и низкая точность означают, что вы сделали небольшие ошибки на большом объеме данных
- низкие потери с высокой точностью означают, что вы сделали небольшие ошибки на небольшом объеме данных (наилучший случай)
- большие потери и высокая точность означают, что вы сделали огромные ошибки на небольшом объеме данных (ваш случай; третья модель)
В вашем случае третья модель может правильно предсказывать больше примеров (высокая точность), но на тех, где она ошибается, она делает более крупные ошибки (большие потери – расстояние между истинным значением и предсказанными значениями больше).
ПРИМЕЧАНИЕ:
Не забывайте, что потери – это субъективная метрика, которая зависит от задачи и данных. Это расстояние между истинным значением предсказания и предсказанием, сделанным моделью.
- Значение потерь относительно данных; если ваши данные находятся между 0 и 1, потери в 0.5 будут огромны, но если ваши данные находятся между 0 и 255, ошибка в 0.5 будет низкой.
- Приемлемость значения потерь зависит от задачи; например, в обнаружении рака ошибка в 0.1 неприемлемо велика, в то время как ошибка в 0.1 для классификации изображений вполне допустима.
На самом деле, точность – это метрика, которую можно применять только к задачам классификации. Она описывает, какой процент ваших тестовых данных классифицирован правильно. Например, у вас бинарная классификация: кошка или не кошка. Если из 100 тестовых образцов 95 классифицированы правильно (т.е. правильно определено, есть ли кошка на изображении или нет), то ваша точность составляет 95%. Кстати, матрица путаницы описывает вашу модель гораздо лучше, чем точность.
Потери зависят от того, как вы предсказываете классы для вашей задачи классификации. Например, ваша модель использует вероятности для предсказания бинарного класса кошка или не кошка, которые находятся между 1 и 0. Таким образом, если вероятность того, что это кошка, равна 0.6, то вероятность того, что это не кошка, равна 0.4. В этом случае изображение классифицируется как кошка. Потери будут суммой разности между предсказанной вероятностью реального класса тестового изображения и 1. На практике для бинарной классификации используется логарифмическая потеря; я просто дал представление о том, что такое потери.
Другие ответы дают хорошие определения точности и потерь. Чтобы ответить на ваш второй вопрос, рассмотрите следующий пример:
У нас есть задача классификации изображений из сбалансированного набора данных, содержащих либо кошек, либо собак. Классификатор 1 дает правильный ответ в 80 из 100 случаев, в то время как классификатор 2 правильный 95 из 100. Здесь очевидно, что у классификатора 2 выше точность.
Тем не менее, из тех 80 изображений, которые классификатор 1 определил правильно, он был чрезвычайно уверен (например, когда он думает, что изображение кошки, он на 100% уверен, что это так), а в 20 случаях, когда он ошибся, он совершенно не был уверен (например, когда он сказал, что на изображении кошки изображена собака, он был только на 51% уверен в этом). В отличие от этого, классификатор 2 чрезвычайно уверен в своих 5 неправильных ответах (он на 100% убежден, что изображение, на котором на самом деле изображена собака, – это кошка) и не был очень уверенным в 95 случаях, когда он дал правильный ответ. В этом случае у классификатора 2 будут худшие потери.
Некоторые говорят, что точность не имеет отношения к потерям, но с теоретической точки зрения такая связь существует.
Точность – это $1 – (коэффициент\ ошибки)$, и коэффициент ошибки можно рассматривать как ожидание потерь 0-1:
\begin{equation}
l_{01}(f(x), y) :=
\begin{cases}
0 & (f(x) = y) \\
1 & (f(x) \neq y)
\end{cases}
\end{equation}
\begin{equation}
коэффициент\ ошибки = \mathbb{P}_{x, y} \left[ f(x) \neq y \right] = \mathbb{E}_{x, y} \left[ l_{01}(f(x), y) \right]
\end{equation}
где $f$ – это модель, $x$ – это ее вход, а $y$ – это истинная метка для $x$.
Чтобы максимизировать точность, мы хотим минимизировать коэффициент ошибки. Однако из-за дискретности потерь 0-1 это практически невозможно. Вместо этого используется множество “заместительных потерь”. Заместительная функция потерь $l$ должна иметь некоторые свойства:
- $l$ является непрерывной.
- $l$ является выпуклой.
- $l$ ограничивает $l_{01}$ сверху.
Заместительные потери с этими свойствами позволяют минимизировать их с помощью известного алгоритма градиентного спуска.
Популярные классы таких заместительных потерь включают потерю с зажимом, которая используется в методах опорных векторов (SVM), и логистическую потерю, которая используется в логистической регрессии и стандартных нейронных сетях.
Таким образом, с теоретической точки зрения точность и потери, показанные в каждой эпохе вашего обучения, имеют определенную связь. То есть,
- Точность имеет прямую связь с коэффициентом ошибки, который мы хотим минимизировать в процессе обучения.
- Потери (обычно перекрестные энтропийные потери, которые в определенном смысле эквивалентны логистическим потерям) являются заместительной потерей, которая ограничивает коэффициент ошибки.
В глубокном обучении в процессе обучения вы, как правило, следите как за точностью и потерями обучения, так и за валидацией, чтобы оценить производительность вашей модели. Вот краткое объяснение каждого из них:
Точность и Потери Обучения:
Точность обучения: Эта метрика измеряет процент правильно классифицированных образцов в обучающем наборе данных. Она показывает, насколько хорошо модель работает на данных, на которых она обучается.
Потери обучения: Эта метрика представляет собой меру того, насколько хорошо модель работает на обучающих данных. Она количественно оценивает разницу между предсказанными значениями и фактическими значениями в обучающем наборе данных. Цель во время обучения – минимизировать эту функцию потерь.
Точность и Потери Валидации:
Точность валидации: Эта метрика измеряет процент правильно классифицированных образцов в отдельном наборе данных для валидации, который модель не видела во время обучения. Она предоставляет оценку того, насколько хорошо модель обобщает на новые, невидимые данные.
Потери валидации: Подобно потерям обучения, потери валидации измеряют, насколько хорошо модель работает на наборе данных для валидации. Это помогает выявить переобучение или недообучение. Как и потери обучения, цель состоит в том, чтобы минимизировать эту функцию потерь, но ее значение может увеличиться, если модель начнет переобучаться на обучающих данных.
В процессе обучения эти метрики часто наносятся на график по эпохам (итерациям по всему набору данных), чтобы визуализировать производительность модели. В идеале вы хотите видеть, как увеличиваются как точность, так и потери валидации, а потери обучения и валидации уменьшаются. Если точность обучения продолжает увеличиваться, в то время как точность валидации застаивается или уменьшается, это может указывать на переобучение. Аналогично, если потери обучения уменьшаются, а потери валидации увеличиваются, это также может указывать на переобучение.
Мониторинг этих метрик помогает в настройке гиперпараметров, выборе моделей и понимании того, насколько хорошо модель обучается на данных.
«Нет связи между этими двумя метриками» не совсем точно. Конечно, существует связь между ними. Действительно, она не линейная. Как заметил @JérémyBlain, нельзя действительно определить, насколько хорошо ваша модель, основываясь на потерях. Поэтому потери в основном используются для отладки вашего обучения. Точность лучше представляет применение в реальном мире и гораздо более интерпретируема. Но вы теряете информацию о расстояниях. Модель с 2 классами, которая всегда предсказывает 0.51 для истинного класса, будет иметь такую же точность, как и та, которая предсказывает 0.99. –
Добавляя к комментарию на данный момент лучшего ответа. Сам вопрос может подразумевать высшую интерпретацию вопроса о применении к реальному миру, но при интерпретации механизма метода, откуда происходят эти выходные значения, помимо того, что я только что процитировал, можно ли не упомянуть, что функция потерь (и ее полная реакция на обучающий или валидационный набор данных) – это то, что метод пытается минимизировать по выборке данных (не по отдельным точкам данных, а по выборке данных). Если говорить о градиентном спуске, например, это также будет связано с жадным взглядом на «склон» дискретизированной версии такой функции и т.д. … и функция потерь или проблема могла быть спроектирована так, что, несмотря на локальный поиск оптимального направления обновления, она была бы более вероятно глобально оптимальной. Функция потерь в любой точке данных выборки определяет глобальный оптимизационный поиск, который дает конечный объект или инструменты, которые выдают переменные вопроса.
Это метрика того, насколько хорошо этот сегмент под капотом или точка зрения ядра метода осуществила такую оптимизацию (с соответствующей генерализацией того, какая задача была задана, пропуская детали). Моя мысль в том, что это совершенно связано с методом, использованным для создания конечного вывода пользовательского ввода и вывода. Это действительно дает некоторое представление о том, насколько хорошо он справился. Но предыдущие ответы, предполагающие только использование инструмента на последнем уровне, правы, что это не нужно для вашего конечного пользователя. Но во всех случаях все эти метрики имеют целевое явление реальности и знания об методе выборки данных, а затем деление этих данных на тренировочные и валидационные (и т.д.) и затем метод оптимизации и различные внутренние метрики как определяющие зависимые переменные. В этом смысле. Заявление «процитированное-цитированное» является более риторическим или объяснительным, предполагая предпосылку конечного пользователя в вопросе, чем технической правдой. Я надеюсь, я не отклонен или не бормочу вне контекста. Я думал, что это будет хорошее субоптимальное объяснение, чтобы расширить для тех, кто приходит с теми разными предпосылками.
Помогите мне прояснить этот вопрос, пожалуйста
После того как я увидел этот комментарий:
——если ваши данные находятся между 0 и 1, потери в 0.5 огромны, но если ваши данные находятся между 0 и 255, ошибка в 0.5 низкая.
У меня есть следующие вопросы:
Я создал модель с категориальной “Y”, у меня 4 категории, и я классифицировал их: “0”, “1”, “2” и “3”, правильно ли я их классифицировал (начало с 0 и не с 1)? И находятся ли мои данные между 0 и 4 для оценки потерь и точности теста?
Вот мой результат:
Потери на тесте: [0.9032219648361206, 3.8990705013275146]
Ответ или решение
Связь между точностью и потерями в глубоких нейронных сетях
Вам необходимо понять, как точность и потери соотносятся друг с другом в контексте глубокого обучения, особенно в многоклассовой классификации.
1. Определение точности и потерь:
- Точность: Это метрика, измеряющая процент правильно классифицированных образцов в тестовом наборе данных. Например, если у вас есть 100 тестовых образцов, и ваш модель правильно классифицировала 95 из них, точность составит 95%.
- Потери: Это метрика, которая измеряет, насколько хорошо ваша модель предсказывает значения по сравнению с реальными значениями. Это обычно выражается через функцию потерь, такую как кросс-энтропийная потеря в задачах классификации. Чем меньше значение функции потерь, тем лучше модель.
2. Взаимосвязь точности и потерь:
Точность и потери не имеют прямой линейной зависимости, но существуют определенные взаимосвязи между ними:
-
Потери как функция ошибок: Потери можно рассматривать как математическую мера расстояния между предсказанными значениями и истинными значениями. Принимая во внимание ваши модели:
- Модель 1: Точность 98.1%, Потеря 0.1882
- Модель 2: Точность 98.5%, Потеря 0.0997
- Модель 3: Точность 99.1%, Потеря 0.2544
Здесь точность модели 3 выше, но ее потери также выше, что указывает на то, что хотя модель правильно классифицировала больше примеров, она сделала более серьезные ошибки на тех случаях, которые были неправильно предсказаны.
3. Объяснение различий в потерях:
Высокие потери при высоких значениях точности могут означать следующие вещи:
- Неконтролируемая уверенность: Модель может демонстрировать уверенность в своих предсказаниях даже при их неправильности. Например, если модель уверенно предсказывает неправильный класс, это может привести к высоким потерям, несмотря на высокий уровень точности.
- Объективные значения: Потери зависят от используемой функции потерь и величин истинных классов. Например, при обработке вероятностных предсказаний, если модель уверенно прогнозирует 0.99 для ошибочного класса, это приведет к высоким потерям.
4. Практический пример и метрики:
Рассмотрим пример с двумя классификаторами, где один показывает хорошую точность (например, 95%) с низкими потерями (например, 0.05), а другой также имеет высокую точность (например, 96%) с высокими потерями (например, 0.2). На практике первый классификатор будет предпочтительнее, так как он делает меньше серьезных ошибок.
5. Заключение:
Точность и потери являются важными метриками в задаче классификации, они помогают оценить эффективность модели. Однако, для более точного понимания работы модели, стоит использовать дополнительные метрики, такие как матрица ошибок, которая может дать более полное представление о том, как модель работает на разных классах.
Важно помнить, что потери – это субъективная метрика, которая зависит от задачи и данных, и ее значение должно интерпретироваться в контексте специфики проблемы, над которой вы работаете.