Аналогия с рестораном

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

Precision-Recall — это важная метрика, которая измеряет производительность в нескольких сложных задачах визуального восприятия, таких как обнаружение объектов и сегментация экземпляров/семантическая сегментация. Модели, обученные решать эти задачи, часто чувствительны и ведут себя по-разному на разных визуальных распределениях.

Таким образом, когда мы сравниваем модели, полезно иметь более детальное, но целостное представление об их характеристиках производительности. С этой целью точность отзыва оказывается довольно полезной метрикой для отслеживания при рассмотрении того, где модель может дать сбой.

По своему опыту я заметил, что многие умные люди понимают, что такое точный отзыв, но им трудно применять его в режиме реального времени для интерпретации результатов. Целью этого поста будет представить, как Precision-Recall обычно вычисляется в компьютерном зрении, а также предоставить несколько концептуальных инструментов для их применения в режиме реального времени во время обсуждения.

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

Аналогия

Предположим, вы в ресторане и хотите заказать картофель фри и колу. Есть несколько вещей, которые могут произойти. Официант мог:

1. Пропустили заказанные вами товары (ложноотрицательные результаты)
2. Принесли вам товары, которые вы не заказывали (ложноположительные результаты)
3. Принесли вам заказанные вами товары (истинно положительные результаты)
4. Не приносят вам товары, которые вы не заказывали (настоящие минусы)

Заказ, состоящий только из 1 и 2, явно плохой, а заказ, состоящий только из 3 и 4, явно хороший. Однако не всегда все так просто. Давайте взглянем на другие случаи, вводя термины точность и полнота. Они помогают выявить закономерности в поведении моделей.

Ложноположительные результаты, но нет ложноотрицательных результатов (высокая полнота, но низкая точность)

Клиент: Я хотел бы заказать картофель фри и кока-колу
Официант: Конечно

‹отдает заказ на картошку фри, гамбургер и колу›
Клиент: …Да, но вы дали мне кучу лишнего

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

Ложноотрицательные, но не ложноположительные результаты (низкий отзыв, но высокая точность)

Клиент: Я хотел бы заказать картофель фри и кока-колу
Официант: Конечно

‹отдает заказ картофеля фри›
Клиент: …Спасибо, но вы кое-что забыли

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

Интерпретация кривой Precision-Recall

Изображение выше представляет собой кривую Precision-Recall (PR). Сначала это кажется загадочным, но довольно полезным. Понимание общих черт, наблюдаемых среди кривых, является хорошей отправной точкой.

Первое, на что следует обратить внимание в большинстве кривых точного полноты, это то, что оно начинается в левом верхнем углу, при полноте = 0,0 и точности = 1,0. Поначалу это кажется запутанным, но все становится яснее, когда вы рассматриваете, как строится кривая.

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

Чтобы лучше понять, что представляют собой эти пороги, давайте продолжим аналогию с рестораном.

Клиент: Я хотел бы заказать картофель фри и кока-колу
Официант: Конечно

‹передает заказ на картофельные дольки и диетическую колу›
Клиент: …Наверное, технически они похожи

В этом случае человек может принять или не принять заказ, исходя из своего внутреннего «порога». Невероятно разборчивый клиент может настаивать на том, что каждый заказ картофеля фри содержит в среднем 86 картофелин фри, каждый напиток состоит из 13% льда.

На кривой это будет точка в верхнем левом углу, где установлен невероятно высокий порог, при котором модель ничего не предсказывает. Обратите внимание, что точность здесь не определена (см. уравнения выше), но мы устанавливаем ее равной 1 для удобства.

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

Иногда может быть резкий спад справа. Это связано с минимальным порогом, который мы готовы принять.

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

Хороший способ определить этот компромисс — рассмотреть вопрос о том, выше ли альтернативные издержки упущения чего-то или выше издержки включения чего-то дополнительного.

Средняя точность (AP)

Эта кривая полезна для оценки качества, однако две модели могут иметь пересекающиеся кривые, что затрудняет их визуальное сравнение. Один из способов сделать это — сравнить площадь под кривой (AUC), поскольку идеальная модель будет иметь максимальную площадь под кривой. Однако, поскольку масса может быть распределена по разным частям кривой, общая площадь не может хорошо суммировать производительность при всех значениях отзыва. Таким образом, чтобы обеспечить лучшую видимость производительности при низкой полноте, в 2012 Pascal VOC Challenge была введена следующая схема (раздел 4.2 здесь).

Средняя средняя точность (mAP)

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

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