Порог уверенности 0,5 стоит в конфигурации по умолчанию и означает ровно одно экономическое утверждение: пропущенный дефект обходится в те же деньги, что зря дернутый контролер. В разобранной задаче литейного ОТК это утверждение стоит 82 511 ₽ за смену — больше, чем дает переход на модель следующего уровня качества. Работа показывает, откуда берется это число и как посчитать свое.
модель, калькулятор и протокол готовы, полевая проверка порога на объекте не проведена
программа открыта 16.08.2026
стек и предметная область
теория статистических решений
cost-sensitive learning
калибровка вероятностей
roc и изокосты
эргономика систем с оператором
экономика качества
аннотация
Работа переводит метрики классификации в рубли и обратно. Показано, что вопрос о точности не имеет ответа, пока не названы цена пропуска и цена ложной тревоги, и что из двух главных метрик на объект переносится только recall. Аппарат — байесовское решающее правило, формула оптимального порога через отношение цен, геометрия изокост, поправка на смену базовой ставки и правило отказа от решения. Отдельно разобрано условие, без которого весь вывод рассыпается: отклик модели обязан быть вероятностью. Собрана функция суммарного убытка от порога и разобрана ее форма: дно широкое, склон крутой, фабричное значение 0,5 обходится в пять с половиной раз дороже оптимума, а перестановка одного числа в конфигурации дает больше, чем улучшение модели на целую ступень качества. Показано, что при живом человеке в контуре линейная модель ломается двумя разными способами — через пропускную способность и через падение внимания — и что оптимальный порог в этих режимах уезжает в противоположные стороны. Практическая часть: опросник на одиннадцать пунктов для сбора цен, рабочий калькулятор, формулировки для приемки вместо процентов и двенадцать способов обмануть себя при таком расчете. Три разбора сделаны на задачах лаборатории: отбраковка литья, контроль средств защиты и детекция БПЛА.
ключевые слова
стоимость ошибки
cost-sensitive learning
оптимальный порог
precision и recall
калибровка вероятностей
базовая ставка
теория решений
усталость от тревог
паспорт работы
объем
7 частей, 35 глав
источников
80, из них 6 — нормативные документы и стандарты
формул
25 со сквозной нумерацией
рисунков
7 плюс два интерактивных стенда
своих измерений
три набора метрик из прошлых прогонов; полевой проверки порога нет
срез
16.08.2026
Ссылки вида [12] в тексте ведут в список литературы. Формулы пронумерованы сквозной нумерацией.
кратко
Если читать работу целиком некогда
01
Порог — это цена, а не гиперпараметр
Значение порога уверенности однозначно задает утверждение о том, во сколько раз пропуск дороже ложной тревоги. Развернув формулу, можно спросить заказчика не «сколько стоит ошибка», а «согласны ли вы, что пропущенная трещина стоит восемь рублей». Ответ приходит сразу, и разговор становится предметным.
02
Дно плоское, склон крутой
Промахнуться по порогу втрое стоит пяти процентов убытка, ошибиться в оценке цены вдвое — семи. Оставить фабричное значение стоит четырехсот пятидесяти семи. Отсюда правило: оценивайте цену ошибки грубо, но обязательно; точность до второго знака не нужна никому.
03
За экраном сидит человек
Линейная модель цены ложной тревоги ломается, как только поток тревог подходит к пределу человека, и ломается по-разному в зависимости от того, разбор тревог — его работа или прерывание. В первом случае ответ считается как задача с ограничением и выражается в числе людей на посту. Во втором подбор порога не помогает вовсе, и менять надо контур.
факты
формат
длинная форма: 7 частей, 35 глав, глоссарий и библиография
источники
80 позиций: от Неймана и Пирсона 1933 до обзоров калибровки 2021
главная формула
оптимальный порог t* = 1 / (1 + r), где r — во сколько раз пропуск дороже ложной тревоги
что из нее следует
0,5 верно только при равных ценах; фабричные 0,25 означают «пропуск дороже втрое»
цена фабричного порога
82 511 ₽ за смену в разборе литейного ОТК — расчет по иллюстративным ценам
порог против дообучения
перестановка порога дает вдвое больше, чем рост качества модели на ступень, и стоит ноль
плоское дно
порог можно промахнуть втрое и потерять 5 % убытка; ошибка в оценке цены вдвое стоит 7 %
человек в контуре
два режима с разной математикой; в режиме наблюдателя оптимум уезжает на два порядка вверх
подтверждение K из N
ложные тревоги вниз в 57 раз при выросшем recall события — расчет при независимости кадров
измерено нами
три набора метрик из прошлых прогонов: БПЛА, каски на двух сборках датасета, дефекты литья
не измерено
кривая отклика оператора, эффективное число независимых кадров, полевая проверка порога
Часть I
Вопрос не о точности
Заказчик спрашивает про проценты, потому что других слов ему никто не предложил. Эта часть разбирает, почему на вопрос «какая у вас точность» нельзя ответить числом, что именно скрывают precision и recall, почему F1 и mAP нельзя нести в смету и как одна подмена единицы учета сдвигает расчет в двадцать пять раз. Математики тут почти нет — есть разбор понятий, без которого весь дальнейший аппарат ляжет на песок.
глава 01
Разговор, который повторяется на каждом первом созвоне
«Какая у вас точность?» — вопрос без ответа, и отвечать на него числом нельзя
Первый созвон по любой задаче машинного зрения устроен одинаково. Через пять-семь минут после описания процесса звучит вопрос про точность, и он ожидает ответа одним числом с двумя знаками после запятой. Инженер, который это число называет, закрывает разговор и открывает будущий конфликт: через квартал выяснится, что названная цифра к работе системы отношения не имеет.
Разбор того, почему так происходит, занимает всю эту работу, но короткая версия формулируется сразу. Слово «точность» обозначает не меньше пяти разных величин: долю верных срабатываний, долю найденных объектов, долю верных ответов вообще, усредненную по порогам площадь под кривой и качество рамки. Величины считаются по разным знаменателям, ведут себя по-разному при изменении состава потока и переводятся в деньги по разным правилам. Из них ровно одна переносится с тестового набора на объект напрямую, и это не та, которую называют в презентациях.
Заказчику при этом нужно не число, а решение. Решения бывают такие: ставить систему или не ставить, сколько человек оставить на посту контроля, что делать со срабатыванием ночью, при каком уровне сигнала останавливать линию. Все они выражаются в рублях за смену. Метрика становится осмысленной ровно в тот момент, когда к ней приложена цена ошибки, и не раньше.
Аппарат в работе старый. Байесовское решающее правило описано в любом учебнике по теории решений [6, 7], формула оптимального порога через отношение цен опубликована в 2001 году [9], геометрия рабочих точек на ROC-плоскости разобрана тогда же [11, 14], а правило о сплошном контроле, которое ровно про это, напечатано Демингом в 1986-м [67]. Новизна тут в другом: аппарат почти никогда не доезжает до инженера, который выставляет порог в конфиге детектора, и до коммерсанта, который пишет метрику в договор.
Порог уверенности — это не гиперпараметр модели. Это цена, которую владелец процесса назначил своей ошибке, записанная в неудобных единицах.
тезис работы
глава 02
Четыре клетки и четыре бухгалтерии
Матрица ошибок — это платежная ведомость, где у каждой клетки свой плательщик
Бинарное решение дает четыре исхода: верное срабатывание, ложное срабатывание, пропуск и верное молчание. В машинном обучении их считают штуками. В цехе за каждый из них платят, и платят разные люди из разных бюджетов.
Рис. 1. Четыре исхода и их плательщики на примере отбраковки литья. Верное молчание бесплатно почти всегда, и это единственная клетка, о которой можно не думать. Верное срабатывание стоит времени контролера, ложное — того же времени плюс риска снять с потока годную деталь, пропуск — всей последующей обработки и разбора рекламации.
Первое, что надо зафиксировать: цены считаются приращением к идеальному решению, а не абсолютной суммой. Бракованная отливка стоит денег сама по себе — металл, формовка, энергия — но эти деньги потеряны в момент заливки, до всякого контроля. Задача системы — не допустить, чтобы к ним добавились новые. Поэтому в цену пропуска входит только то, что тратится после точки контроля: механическая обработка бракованной заготовки, упаковка, доставка, разбор возврата, замена по гарантии. Стоимость самой отливки в матрицу не входит: она одинакова для всех четырех клеток.
TP · верное срабатывание
Дефект найден. Платим за подтверждение человеком: деталь снимается с потока, контролер смотрит. В режиме без подтверждения эта клетка бесплатна.
FP · ложная тревога
Годное названо браком. Платим то же подтверждение плюс, если подтверждения нет, стоимость выброшенной годной детали и сбой такта. Главная статья — время человека, и именно она ограничена сверху.
FN · пропуск
Брак ушел дальше. Платим всю добавленную стоимость последующих переделов, логистику, рекламацию и репутацию. Обычно на два-три порядка дороже ложной тревоги.
TN · верное молчание
Годное пропущено. Стоит ноль. Единственная клетка, которую можно не считать, и по этой причине же — самая опасная в презентациях: доля верных ответов на несбалансированном потоке состоит почти целиком из нее.
Второе: плательщики разные. Ложную тревогу оплачивает мастер участка из фонда рабочего времени, пропуск — коммерческая служба из бюджета рекламаций, а травму по непойманному нарушению — предприятие целиком через штраф и приостановку. Практическое следствие: цифры для матрицы нельзя взять у одного человека. Мастер занизит пропуск, потому что за возвраты отвечает не он, а коммерсант занизит ложную тревогу, потому что не он ходит на пост. Протокол сбора цен разбирается в главе 30.
глава 03
Что скрывают precision и recall
Две метрики с разными знаменателями: одна переносится на объект, вторая нет
Обе метрики считаются из тех же четырех клеток, но нормируются по-разному, и разница знаменателей определяет все их дальнейшее поведение.
где TP, FP, FN, TN — числа исходов на выбранном наборе при выбранном пороге
(1)
У recall знаменатель — все реальные объекты, у precision — все срабатывания системы. Первое множество задано природой процесса, второе создано самой моделью. Отсюда весь дальнейший разбор.
Recall от состава потока не зависит. Если модель находит 89 дронов из 100, она будет находить 89 из 100 и там, где дроны попадаются раз в сутки, — при условии, что сами дроны выглядят так же, как в тесте. Это свойство делает recall единственной метрикой, которую можно перенести с отложенного набора на объект без пересчета.
Precision от состава потока зависит целиком. Она связана с базовой ставкой через формулу Байеса, и связь эта жесткая.
precision = π · R / (π · R + (1 − π) · F)
где π — доля положительных случаев в потоке (базовая ставка); R — recall; F — FPR
(2)
При π = 0,5 и R = 0,889 precision 0,961 означает FPR около 0,036. Тот же детектор, поставленный в поток с долей положительных 0,001, при том же FPR даст precision 0,024: из сорока срабатываний верным будет одно. Модель не изменилась ни на бит.
базовая ставка π
recall
FPR
precision
что это значит
0,5
0,889
0,036
0,961
цифра из отчета по отложенному тесту
0,1
0,889
0,036
0,733
поток, где положительных каждый десятый
0,02
0,889
0,036
0,335
типовая доля брака в партии
0,001
0,889
0,036
0,024
редкое событие: сорок тревог на одну верную
Одна и та же модель на потоках разного состава. Recall и FPR постоянны, precision падает на полтора порядка. Расчет по формуле (2); в первой строке — наша измеренная пара по детектору БПЛА на отложенном тесте из 2 200 изображений, остальные строки получены из нее пересчетом.
Отдельная тонкость касается тестовых наборов, собранных сбалансированно. Балансировка удобна для обучения и вредна для сметы: она задает базовую ставку искусственно, и все выведенные из нее деньги оказываются числами про несуществующий процесс. Тестовый набор для экономического расчета должен повторять состав потока, включая долю пустых кадров, ночных смен и грязного объектива.
глава 04
Почему F1 и mAP нельзя нести в смету
Агрегаты усредняют по режимам, которых в эксплуатации не будет
F1 — гармоническое среднее precision и recall [20]. Мера удобная для сравнения моделей между собой и негодная для экономического расчета, причем по причине, которая формулируется точно.
Оптимизируя F1, мы неявно выбираем некоторое отношение цены пропуска к цене ложной тревоги. Беда в том, что это отношение не задано нами и не постоянно: оно зависит от того, в какой точке кривой оказалась конкретная модель, и меняется при переходе от одной модели к другой. Разбор этого эффекта для задач связывания записей опубликован Хэндом и Кристеном [19]: сравнение двух систем по F1 равносильно сравнению по двум разным функциям убытка. Для инженера это значит, что модель, выигравшая по F1, может проиграть по деньгам, и наоборот.
С площадью под кривой ситуация та же и разобрана она подробнее [17, 18]. AUC усредняет качество по всем порогам с весом, который зависит от самой модели; иначе говоря, две модели сравниваются по разным распределениям цен. В эксплуатации порог будет ровно один, и качество модели во всех остальных точках кривой заказчика не касается.
mAP добавляет к этому усреднение по порогам совпадения рамки. В варианте COCO это среднее по десяти уровням IoU от 0,50 до 0,95 [59], в варианте VOC — по одному уровню 0,50 [58]. Величина хорошо ранжирует архитектуры и плохо отвечает на вопрос, попадет ли рамка достаточно точно, чтобы манипулятор снял деталь. Для сметы нужна не средняя точность рамки, а доля случаев, когда рамка годится для того действия, которое за ней последует.
метрика
что делает
почему не переводится в рубли
accuracy
доля верных ответов среди всех
на потоке с долей брака 2 % модель, всегда отвечающая «годно», дает 0,98
F1
гармоническое среднее precision и recall
задает отношение цен неявно, и это отношение меняется от модели к модели [19]
AUC ROC
площадь под кривой ошибок
усредняет по всем порогам весом, зависящим от модели [17]; в проде порог один
AUC PR / AP
площадь под кривой precision-recall
чувствительна к базовой ставке [15, 16], поэтому меняется при переносе на объект
mAP@50-95
среднее AP по порогам IoU
усредняет качество рамки по режимам, из которых нужен один — тот, при котором рамка годится для действия
MCC
корреляция предсказания и истины
честнее F1 на несбалансированных данных [22], но цен по-прежнему не содержит
Сводка по агрегатам. Ни одна строка не говорит, что метрику нельзя считать: все они полезны при выборе архитектуры и при контроле регрессий. Речь только о переводе в деньги, для которого нужны рабочая точка и цены.
глава 05
Единица учета: где расчет врет в двадцать пять раз
Кадр, объект, деталь, трек, событие, смена — метрики и цены обязаны жить в одной единице
Модель отвечает на кадрах. Деньги считаются на деталях, событиях и сменах. Переход между этими единицами — место, где расчеты ломаются чаще всего, и ломаются молча, потому что арифметика при этом остается верной.
Простейший пример. Детектор при пороге 0,5 дает FPR 0,0025 — четверть процента ложных срабатываний, звучит прилично. Камера отдает 25 кадров в секунду. Ложных срабатываний в час: 0,0025 × 25 × 3600 = 225. Двести двадцать пять тревог в час с одной камеры, при том что метрика выглядела хорошо. Умножение на частоту кадров превращает безобидную долю в поток, который не выдержит ни один оператор.
Кадр. Единица работы модели. Метрики детектора считаются здесь, деньги — почти никогда.
Объект в кадре. То, что размечено рамкой. На кадре их бывает несколько, и одна ошибка на кадр не равна одной ошибке на объект.
Деталь. Единица работы цеха. Одна деталь снимается несколькими кадрами с нескольких ракурсов, и решение по ней принимается один раз.
Трек. Один объект, прослеженный через несколько кадров. Единица, в которой имеет смысл говорить о пропуске: пропущенный кадр внутри трека ничего не стоит, пропущенный трек стоит все.
Событие. То, на что реагирует человек или система: «на посту 3 человек без каски», «деталь 14 подозрительная». Единственная единица, в которой цена ложной тревоги определена.
Смена. Горизонт, на котором считается убыток и принимаются решения о людях и оборудовании.
Правило простое и нарушается постоянно: метрика и цена обязаны быть приведены к одной единице до того, как их перемножили. Метрика на кадрах, умноженная на цену события, дает число, у которого нет физического смысла. Переход между единицами делается явно и с потерями: часть кадровых ошибок гасится трекингом, часть объектных — логикой подтверждения, и обе операции меняют и recall, и FPR. Разбору этого перехода посвящена часть V.
единица
как получить из предыдущей
что происходит с ошибками
кадр → объект
сопоставление рамок по IoU, подавление дублей
появляются ошибки локализации и дубли, которых на уровне кадра не было [60, 61]
объект → трек
ассоциация между кадрами, сглаживание
пропуски в отдельных кадрах гасятся, зато появляются разрывы и подмены идентификатора [65, 66]
трек → событие
правило подтверждения K из N, минимальная длительность
FPR падает на порядки, recall падает умеренно — механика в главе 25
событие → смена
умножение на поток и на цену
ошибок не добавляет, но здесь всплывают все ошибки предыдущих переходов сразу
Лестница единиц учета. Каждый переход меняет обе метрики, и ни один из них не бесплатен. Отчет, в котором метрика снята на кадрах, а деньги посчитаны на сменах без явного разбора этих четырех строк, доверия не заслуживает.
Часть II
Аппарат: порог как экономическое решение
Здесь собрана вся математика работы, и она умещается в десяток формул, старших из которых девяносто лет. Из ожидаемого убытка выводится оптимальный порог, из него — обратная задача о цене, которую заказчик уже назначил своей ошибке, сам того не зная. Отдельно разобрано условие, без которого весь вывод рассыпается: отклик модели должен быть вероятностью, а не числом от нуля до единицы. В конце объявлена расчетная модель, по которой посчитаны все таблицы работы, — чтобы читатель мог их воспроизвести.
глава 06
Ожидаемый убыток и байесовское решающее правило
Два числа сравниваются между собой, и это все содержание теории решений
Пусть по наблюдению получена вероятность p того, что случай положительный: деталь бракованная, человек без каски, объект в небе — дрон. Решений ровно два: поднять тревогу или промолчать. У каждого есть ожидаемая цена.
где p — вероятность положительного случая; c_TP, c_FP, c_FN, c_TN — цены четырех исходов в рублях
(3)
Никаких предположений о модели, распределениях и объеме выборки здесь нет. Это определение ожидаемого значения, приложенное к четырем клеткам матрицы [6, 7]. Все дальнейшее — арифметика над этими двумя строками.
Рациональное решение — то, у которого ожидаемая цена меньше. Тревога выгодна, когда выполняется неравенство.
p · (c_FN − c_TP) > (1 − p) · (c_FP − c_TN)
где слева — то, что мы теряем, промолчав, за вычетом цены самой тревоги; справа — то, что теряем, подняв тревогу зря
(4)
Обе разности неотрицательны в любой осмысленной задаче: ошибиться дороже, чем ответить верно. Если у заказчика получилось иначе, ошибка в постановке задачи, а не в формуле.
Из неравенства (4) немедленно следует пороговое правило: тревогу надо поднимать тогда и только тогда, когда p превышает величину, зависящую от одних цен.
где t* — оптимальный порог по вероятности; r — отношение цены пропуска к цене ложной тревоги
(5)
Формула опубликована Элканом в 2001 году в разборе основ обучения с учетом стоимости [9]; тот же результат в других обозначениях есть у Дуды и Харта [7] и выводится из геометрии ROC у Провоста и Фосетта [11].
Стоит отдельно назвать, что здесь принято молча. Решение минимизирует математическое ожидание убытка, то есть предполагает риск-нейтральность владельца процесса [4, 5]. Для потока в тысячи деталей за смену это разумно: закон больших чисел работает, и средний убыток равен фактическому. Для событий вроде производственной травмы, которые случаются раз в годы и стоят непомерно, риск-нейтральность отказывает, и вместо ожидания надо смотреть на хвост распределения [74, 75]. Об этом — глава 17.
глава 07
Почему 0,5 почти никогда не оптимум
Фабричный порог верен ровно в одном случае: когда пропуск и ложная тревога стоят одинаково
Подставим в (5) равные цены: c_FN = c_FP, то есть r = 1. Получаем t* = 0,5. Значение 0,5 — не универсальная середина шкалы, а решение частной задачи, в которой пропустить брак стоит ровно столько же, сколько зря дернуть контролера.
r = c_FN / c_FP
оптимальный порог t*
логит t*
пример постановки
1
0,500
0,00
цены равны — редчайший случай, обычно означает, что цены не считали
2
0,333
−0,69
мягкая асимметрия: сортировка по качеству без последствий
3
0,250
−1,10
фабричный порог многих детекторов, если читать его как экономическое решение
5
0,167
−1,61
пропуск дороже впятеро
10
0,091
−2,30
контроль перед отгрузкой недорогой продукции
20
0,048
−3,00
нарушение, за которое предусмотрен штраф
50
0,020
−3,91
дефект, уходящий на следующий передел
100
0,010
−4,61
рекламация с заменой изделия
168
0,006
−5,12
разбор литейного ОТК из главы 27
1 000
0,001
−6,91
остановка линии заказчика, отзыв партии
Оптимальный порог по формуле (5) при c_TP = c_TN = 0. Третий столбец дан неслучайно: в логит-шкале порог линеен по логарифму отношения цен, и это свойство работает в главе 20.
Обратим внимание на скорость: при переходе от равных цен к соотношению сто к одному порог падает в пятьдесят раз. Диапазон, в котором живут реальные промышленные задачи, — от десяти до тысячи, то есть пороги от 0,09 до 0,001. Значение 0,5 лежит за пределами этого диапазона целиком.
Отдельного упоминания заслуживает 0,25 — фабричное значение порога уверенности во многих реализациях детекторов. Оно выбрано из соображений внешнего вида картинки с рамками, и как экономическое решение означает соотношение цен ровно три к одному. Порог, попавший в конфиг из примера в документации, назначает цену пропуска, и назначает ее неверно на два порядка.
Вместо спора о цене травмы — вопрос о том, какую цену уже назначил конфиг
Разговор о ценах ошибок обычно застревает. Заказчик не знает, сколько стоит пропущенный дефект, считает вопрос неприличным, когда речь о травме, или называет число, которое явно взято с потолка. Спор можно обойти, развернув формулу (5).
r_подраз = (1 − t) / t c_FN(подраз) = c_FP · (1 − t) / t
где t — порог, который уже стоит в системе; r_подраз — отношение цен, при котором этот порог оптимален
(6)
Величина называется подразумеваемым отношением цен. Она не требует от заказчика ни одной новой цифры: порог уже выставлен, цена ложной тревоги считается по времени человека за минуту разговора, и остальное — деление.
порог в системе
подразумеваемое r
при c_FP = 8 ₽ пропуск «стоит»
похоже на правду?
0,50
1
8 ₽
нет: пропущенная трещина в отливке стоит не восемь рублей
0,25
3
25 ₽
нет: это фабричное значение, а не решение
0,10
9
75 ₽
нет для литья, возможно для сортировки по внешнему виду
0,05
19
158 ₽
нижняя граница правдоподобия для контроля качества
0,02
49
408 ₽
похоже на дешевую деталь без последующей обработки
0,01
99
825 ₽
похоже на деталь с механической обработкой
0,006
168
1 400 ₽
разбор из главы 27: деталь, обработка, разбор возврата
0,001
999
8 325 ₽
похоже на узел, уходящий в сборку к заказчику
Обратная задача по формуле (6). Цена ложной тревоги взята как 40 секунд работы контролера при ставке 750 ₽ в час — это 8,33 ₽. Таблица читается справа налево: заказчик смотрит на четвертый столбец, узнает свою деталь и получает порог.
Практическая ценность приема в том, что он переводит разговор из области предпочтений в область фактов. Фраза «у нас стоит порог 0,5» после подстановки в (6) звучит как «мы считаем, что пропущенный дефект стоит столько же, сколько две минуты работы контролера». С таким утверждением заказчик спорит немедленно — и в процессе спора называет настоящую цену.
глава 09
Условие, без которого весь вывод рассыпается
Порог имеет экономический смысл только у калиброванной модели
Формула (5) дает порог по вероятности. Детектор выдает число от нуля до единицы, которое называется уверенностью. Совпадение этих двух шкал — предположение, и предположение обычно неверное.
Модель называется калиброванной, если среди объектов, получивших уверенность 0,30, действительно верны примерно 30 %. Свойство проверяется разбиением выборки на корзины по уверенности и сравнением средней уверенности в корзине с фактической долей верных; отклонение сводят в одно число — ожидаемую ошибку калибровки [32]. Формальная теория этого разложения старше: она пришла из метеорологии, где точность вероятностного прогноза измеряют с 1950 года [25, 26, 27].
Про современные нейросети известно, что они систематически переуверены: распределение отклика прижимается к краям шкалы, и заявленные 0,9 соответствуют фактическим 0,7 [32]. Эффект зависит от архитектуры и режима обучения; более поздние работы показывают, что у части современных семейств калибровка лучше, чем считалось [34], а фокальная функция потерь ее заметно улучшает [33] — что существенно, поскольку в детекторах она применяется широко [63]. Отдельная беда детекции: отклик там не вероятность класса, а произведение оценки объектности на оценку класса, прошедшее через подавление немаксимумов. Калибровка такого числа требует отдельной процедуры [35].
logit t* = ln[ t* / (1 − t*) ] = − ln r
где r — отношение цены пропуска к цене ложной тревоги
(7)
Форма записи, в которой удобно думать о порогах. Умножение цены пропуска вдвое сдвигает порог на 0,69 по логиту независимо от того, где он стоял. Ошибка в оценке цены на порядок — сдвиг на 2,3. Шкала порогов по существу логарифмическая, и линейный ползунок от нуля до единицы для нее плохо приспособлен.
Простейшая модель нарушенной калибровки — температурная: истинная вероятность проходит через степенное сжатие логита, и на выходе получается число, монотонно связанное с вероятностью, но не равное ей.
s_модели = σ( logit(p_истин) / T )
где σ — логистическая функция; T — температура: T > 1 означает переуверенность, T < 1 — недоуверенность
(8)
Одна ручка, которой в 2017 году показали, что переуверенность современных сетей лечится подгонкой единственного параметра на отложенной выборке [32].
температура T
истинный оптимум по вероятности
тот же оптимум на шкале модели
0,5 (недоуверенная)
0,0060
0,00004
1,0 (калиброванная)
0,0060
0,0060
1,5
0,0060
0,032
2,0 (переуверенная)
0,0060
0,072
3,0
0,0060
0,154
Куда уезжает порог при нарушенной калибровке. Расчет по формуле (8) для задачи с отношением цен 168. Правый столбец — то значение, которое надо выставить в конфиге, чтобы получить экономически верное решение при данной температуре. Разброс — в четыре тысячи раз.
Есть и третье обстоятельство, о котором забывают чаще всего. Калибровка выполняется на выборке с какой-то базовой ставкой, и если на объекте она другая, откалиброванная вероятность перестает быть вероятностью. Поправка известна и делается в шкале отношения шансов.
где odds = p / (1 − p); π_обучение — доля положительных в выборке, на которой модель училась и калибровалась; π_объект — доля на объекте
(9)
Пересчет выхода классификатора под новые априорные вероятности [40]. Если обучение шло на сбалансированной выборке (π = 0,5), а на объекте брака 2 %, поправка занижает все вероятности в 49 раз. Без нее порог, взятый из формулы (5), окажется в другом месте кривой.глава 10
Геометрия: изокоста и точка касания
Оптимальная рабочая точка — та, где линия равного убытка касается кривой ошибок
Тот же результат полезно увидеть на плоскости. Отложим по горизонтали FPR, по вертикали recall; каждый порог дает точку, все пороги вместе — ROC-кривую [13, 24]. Убыток за смену линеен по обеим координатам, значит линии равного убытка на этой плоскости прямые.
Прямые тем положе, чем дороже пропуск и чем чаще положительные случаи. Оптимальная точка — та, где изокоста с этим наклоном касается кривой [11, 14]. Отсюда же видно, почему при редких событиях наклон становится огромным: множитель (1 − π)/π при π = 0,001 равен 999.
Рис. 2. ROC-кривая и три семейства изокост. Пологая линия — задача, где пропуск дорог (касание в правой верхней части кривой, recall высокий ценой ложных тревог). Крутая — задача, где дороги ложные тревоги. Прямая под 45 градусами — случай равных цен на сбалансированном потоке, то самое положение, которое неявно выбирает порог 0,5. Расчет по равнодисперсной бинормальной модели с d′ = 2,5.
Геометрия объясняет, почему выбор между двумя моделями бессмыслен без цен. Две кривые, пересекающиеся между собой, ранжируются по-разному при разных наклонах изокосты: одна модель выигрывает в режиме высокого recall, вторая — в режиме низких ложных тревог. Именно этот эффект стоит за критикой площади под кривой как единой меры качества [17, 18].
У лаборатории есть измеренная пара точек, на которой это видно предметно. Детектор БПЛА в поставке Falcon Eye снят на двух разрешениях входа: 640×640 дает precision 0,961 и recall 0,889, вход 960×960 — precision 0,947 и recall 0,894. Вход побольше находит больше целей и чаще ошибается. Который из них лучше — вопрос без ответа до тех пор, пока не названы цены.
базовая ставка на объекте
равновесное r
вывод
0,5
3
вход 960 выгоднее, если пропуск дороже ложной тревоги втрое
0,1
25
вход 960 выгоднее начиная с соотношения 25 к одному
0,01
276
вход 960 окупается только на очень дорогом пропуске
Точка равновесия между двумя нашими измеренными операционными точками. FPR восстановлен из пар (precision, recall) в предположении сбалансированного тестового набора; при другом составе теста числа сдвинутся, и это отдельный разбор в главе 11. Расчет, а не замер: измерены только сами пары.
глава 11
Расчетная модель работы
Одна формула на всю ROC-кривую, чтобы каждую таблицу можно было воспроизвести
Чтобы считать деньги при разных порогах, нужна кривая. Снимать ее с реальной модели на каждый пример неудобно, а рисовать от руки нечестно. Работа пользуется равнодисперсной бинормальной моделью — стандартным инструментом теории обнаружения сигналов с 1960-х [43, 44, 45].
отклик на отрицательных: x ~ N(0, 1)
отклик на положительных: x ~ N(d′, 1)
R(x) = Φ(d′ − x) F(x) = Φ(−x)
где d′ — различимость классов в единицах стандартного отклонения; Φ — функция распределения стандартной нормали; x — латентный порог
(11)
Один параметр задает всю кривую целиком. d′ = 1 — модель, которая едва отличает классы; d′ = 2,5 — рабочая модель средней руки; d′ = 3,5 — сильная модель на несложной задаче; d′ = 4 и выше — либо очень легкая задача, либо утечка обучающих данных в тест.
В этой модели калиброванная уверенность выписывается явно, потому что отношение правдоподобий имеет замкнутый вид. Это удобно: интерактивный стенд и таблицы работы считают одно и то же и не могут разъехаться.
где s — калиброванная уверенность, которую показывает модель; π — базовая ставка, при которой модель откалибрована; t — порог по уверенности
(12)
Проверка: подставив t = t* из формулы (5) и посчитав R и F по формуле (11), получаем ту самую точку, где изокоста касается кривой. Все таблицы работы посчитаны этой связкой.
d′
recall при t = 0,25
FPR при t = 0,25
precision при t = 0,25
recall при t = 0,50
FPR при t = 0,50
precision при t = 0,50
1,5
0,133
0,0045
0,376
0,033
0,0004
0,617
2,5
0,553
0,0090
0,557
0,380
0,0025
0,756
3,5
0,829
0,0054
0,758
0,738
0,0021
0,877
Что означают три уровня различимости при базовой ставке 2 %. Строка d′ = 1,5 соответствует по порядку нашему учебному детектору дефектов литья (mAP@50 = 0,45, recall 0,42 на открытом датасете отливок) — модель уровня проверки осуществимости. Строка 3,5 — уровень нашей модели контроля касок на родном тестовом наборе. Расчет по формулам (11) и (12).
Обратная задача: восстановить d′ из отчета
В отчетах публикуют пару precision и recall. Вопрос: восстанавливается ли из нее кривая? Ответ отрицательный, и это стоит показать числами. Возьмем нашу измеренную пару по детектору БПЛА и посчитаем d′ в предположениях о разном составе тестового набора.
доля положительных в тесте
восстановленный FPR
восстановленное d′
0,50
0,036
3,02
0,35
0,019
3,29
0,20
0,009
3,59
0,10
0,004
3,87
0,05
0,002
4,12
Одна и та же опубликованная пара precision 0,961 и recall 0,889 дает различимость от 3,0 до 4,1 в зависимости от того, как был составлен тест. Разброс в единицу d′ — это разница между «хорошая модель» и «отличная модель», и по отчету он неразличим.
Часть III
Откуда берутся X и Y
Формула оптимального порога требует двух чисел, и оба надо где-то взять. Эта часть разбирает, из чего складывается цена ложной тревоги и почему она перестает быть константой, как только в контур попадает человек; чем отличается человек-сервер от человека-наблюдателя и почему для них нужны разные модели; из чего складывается цена пропуска и как считать ее, когда ответом должна быть цена травмы. Самая содержательная глава части — тринадцатая: там ломается линейность, на которой держалась вся часть II.
глава 12
Разложение цены ложной тревоги
Не одно число, а сумма четырех, из которых заметно только первое
Ложная тревога кажется дешевой: человек посмотрел и вернул деталь на конвейер. Это верно ровно до того момента, пока тревог мало. Разложим цену на составляющие и посмотрим, какая из них растет быстрее остальных.
где τ — время разбора одной тревоги, часы; w — часовая ставка разбирающего; p_ост — вероятность, что тревога останавливает такт, C_ост — цена этой остановки; p_брак — вероятность, что годное уйдет в отбраковку без разбора, C_дет — цена детали; c_довер — цена потери доверия к системе
(13)
Первые три слагаемых считаются с калькулятором за один разговор. Четвертое не считается никак, и оно же со временем становится главным: система, которая врет, перестает работать не в момент отключения, а в момент, когда на нее перестают смотреть.
Первое слагаемое дает порядок величины. Контролер со ставкой 750 ₽ в час тратит на снятие детали с потока, осмотр и возврат около 40 секунд; это 8,33 ₽ за тревогу. Мастер участка со ставкой 900 ₽ в час, отсматривающий двухминутный ролик по сработке камеры, стоит 30 ₽. Оба числа маленькие, и именно поэтому цена ложной тревоги обычно недооценивается: считают одну штуку, а платят за поток.
Второе слагаемое появляется там, где контроль встроен в такт. На линии с тактом 5 секунд разбор в 40 секунд означает, что либо перед постом контроля есть накопитель на восемь деталей, либо линия ждет. Во втором случае цена ложной тревоги перестает быть временем контролера и становится временем линии, а это другой порядок. Разница между этими двумя схемами решается на этапе проектирования поста и стоит одного вопроса на первом созвоне.
Третье слагаемое — про схему без подтверждения. Если система сама сбрасывает деталь в брак, каждая ложная тревога стоит целой детали, и цена подскакивает в сотни раз. Это переводит задачу в совершенно другой экономический режим, где оптимальный порог оказывается высоким. Автоматический сброс без человека оправдан только при очень высокой различимости и очень дешевой детали.
глава 13
Человек-сервер и человек-наблюдатель
Два режима работы контура, две разные математики и два разных оптимума
Формула (13) написана так, будто цена ложной тревоги постоянна. Это допущение держится, пока человек успевает. Как только поток тревог подходит к пределу человека, линейность заканчивается, и дальше все зависит от того, какого рода этот предел.
Различать надо два режима, и путать их дорого.
человек-сервер
Разбор тревог — его основная работа. Контролер ОТК за постом, оператор сортировки. Предел жесткий и считается делением: смена, деленная на время одной проверки. За пределом заявки не игнорируются, а встают в очередь, и очередь растет неограниченно. Математика — теория массового обслуживания.
человек-наблюдатель
Тревога прерывает другую работу. Мастер участка, диспетчер, охранник на пульте. Жесткого предела нет: физически человек может посмотреть еще одно уведомление всегда. Вместо предела работает деградация — доля тревог, на которые он реально реагирует, падает по мере роста их числа. Математика — эргономика и теория обнаружения сигналов.
Рис. 3. Два режима. Слева — сервер: убыток растет плавно, пока поток тревог не достигает пропускной способности, после чего система срывается в неограниченную очередь. Справа — наблюдатель: жесткой стены нет, но доля отработанных тревог падает по мере роста их числа, и произведение «нашли × отреагировали» имеет максимум внутри диапазона. Кривая слева считается ограничением, кривая справа — множителем в функции убытка.
Практическое различие в том, куда двигать порог при перегрузке. У сервера перегрузка означает, что задачу решает не порог, а число людей: правильный ответ — считать теневую цену дополнительного контролера и сравнивать ее с зарплатой. У наблюдателя добавление людей не помогает почти никак, потому что деградация связана не с нехваткой рук, а с обесцениванием сигнала; там правильный ответ — менять контур: агрегировать тревоги, отсекать повторы, переводить часть реакции в автоматическую.
Когда оптимум по порогу упирается в человека, менять надо не порог, а контур.
вывод главы 13
Ошибка, которую этот разбор предотвращает, встречается в проектах постоянно: модель контроля СИЗ настраивают на высокий recall по логике «пропуск дороже», получают четыре сотни уведомлений за смену, и через две недели мастер выключает уведомления. В отчете при этом стоит recall 0,95, а фактический recall системы равен нулю, потому что recall системы — это произведение того, что нашла модель, на то, что отработал человек.
глава 14
Режим сервера: пропускная способность и теневая цена
Задача с ограничением, у которой ответ — число людей, а не значение порога
Поток тревог за смену складывается из верных и ложных срабатываний и считается напрямую. Пропускная способность поста считается делением. Условие работоспособности — неравенство между ними.
A(t) = N · [ π·R(t) + (1 − π)·F(t) ] ≤ M · T / τ = cap(M)
t*_огр = argmin L(t) при условии A(t) ≤ cap(M)
где A — тревог за смену; N — единиц в потоке за смену; M — число разбирающих людей; T — длительность смены; τ — время разбора одной тревоги
(14)
Ограничение сформулировано по средней нагрузке. На самом деле надо смотреть на очередь: при загрузке выше 0,8 ожидание растет нелинейно, а всплески потока делают его непредсказуемым. Аппарат для этого разобран в нашей работе о бюджете FPS многопоточного узла — там та же теорема о суперпозиции потоков и то же приближение Кингмана, только вместо контролера ускоритель.
Задача с ограничением решается перебором и дает другой ответ, чем задача без него. Возьмем разбор из главы 27: поток 5 760 деталей за смену, доля брака 2 %, цена пропуска 1 400 ₽, разбор 40 секунд при ставке 750 ₽ в час, модель с различимостью 2,5. Безусловный оптимум по формуле (5) стоит на 0,006 и требует 1 374 проверок за смену. Один контролер физически делает 720.
контролеров
порог
recall
тревог за смену
убыток
ФОТ
итого за смену
1
0,019
0,898
719
22 487 ₽
6 000 ₽
28 487 ₽
2
0,006
0,959
1 374
18 041 ₽
12 000 ₽
30 041 ₽
3
0,006
0,959
1 374
18 041 ₽
18 000 ₽
36 041 ₽
Условный оптимум при разном числе людей на посту. Расчет по формулам (11), (12), (14) и (18); цены — иллюстративный набор из главы 27. Начиная со второго человека ограничение перестает быть активным, и дальше растет только фонд оплаты труда.
Отсюда получается величина, которой в разговоре про метрики нет вовсе, а в разговоре про деньги она главная: теневая цена ограничения. Второй контролер снимает 4 446 ₽ убытка за смену, а стоит 6 000 ₽. Значит, второго брать не надо, и правильная конфигурация — один человек при пороге 0,019, а не два при теоретически оптимальных 0,006.
глава 15
Режим наблюдателя: цена волка
Доля тревог, на которые реагируют, падает по мере роста их числа, и это измерено
У человека, для которого тревога — прерывание, нет жесткого предела производительности. У него есть другое: чувствительность к сигналу, которая зависит от доли верных срабатываний. Эффект известен под названием cry-wolf и изучен экспериментально: время реакции растет, а доля отработанных сигналов падает по мере того, как растет доля ложных [48, 49, 50].
Литература по этому вопросу обширна и приходит из двух областей. Первая — эргономика систем с оператором, где показано, что человек в контуре сам работает как детектор со своим порогом, и порог этот смещается в зависимости от того, чему он научился ожидать от автоматики [46, 47, 51]. Вторая — медицинский мониторинг, где нагрузка тревогами измерена в палатах напрямую: доля клинически незначимых сигналов там оказывается подавляющей, и следствием становится притупление реакции персонала [53, 54, 55]. В промышленности устойчивая нагрузка на оператора нормируется отраслевыми руководствами по управлению тревогами величиной порядка одной тревоги в десять минут [56, 57].
Для расчета нужна функциональная форма. Работа берет простейшую убывающую зависимость с одной точкой перегиба.
где q — доля тревог, на которые оператор реально реагирует; A — тревог за смену; A₀ — нагрузка, при которой реакция падает вдвое; γ — крутизна спада
(15)
ЭТО НАША ПАРАМЕТРИЗАЦИЯ, А НЕ ИЗМЕРЕННАЯ КРИВАЯ. Литература дает направление эффекта и порядок нормы нагрузки, но не эту функцию и не эти константы. В расчетах ниже взято A₀ = 72 тревоги за двенадцатичасовую смену (одна в десять минут) и γ = 1,8. Снять настоящую кривую на объекте можно, и как — написано в главе 34.
Подстановка (15) в функцию убытка меняет ее качественно. Убыток от пропусков перестает монотонно падать со снижением порога: чем ниже порог, тем больше тревог, тем меньше доля отработанных, и произведение имеет максимум внутри диапазона. Оптимум уезжает вверх по шкале и становится хуже.
порог
recall модели
тревог за смену
доля отработанных q
убыток за смену
0,010 (оптимум без усталости)
0,969
223
0,15
≈ 66 000 ₽
0,250
0,760
48
0,67
64 181 ₽
0,358 (оптимум с усталостью)
0,704
40
0,74
62 769 ₽
0,500
0,634
33
0,80
64 362 ₽
Разбор контроля СИЗ: 8 камер, смена 12 часов, 1 440 человеко-эпизодов, доля нарушений 3 %, разбор ролика мастером 2 минуты при ставке 900 ₽ в час, цена невыявленного нарушения принята 3 000 ₽. Расчет по формулам (11), (12), (15) и (18) с нашей параметризацией усталости.
Самое важное в этой таблице — не положение оптимума, а его плоскость и высота. Разница между лучшим и худшим порогом составляет 1 600 ₽ за смену при убытке около 63 000 ₽. Подбором порога тут не выиграть ничего: контур неработоспособен при любом пороге. Тот же расчет без учета усталости дает минимум 10 656 ₽ — вшестеро меньше. Вся разница живет в человеке, а не в модели.
глава 16
Цена пропуска: три слоя и лестница переделов
Дефект дорожает по мере продвижения по маршруту, и цена зависит от точки контроля
Цена пропуска складывается из трех слоев, у которых разная природа и разная надежность оценки.
Прямой слой: добавленная стоимость всех операций, выполненных над бракованной заготовкой после точки контроля. Считается по маршрутной карте с точностью до рубля, спорить тут не о чем.
Вероятностный слой: рекламация, замена, штраф по договору, простой у заказчика. Считается как произведение вероятности на цену; вероятность берется из статистики возвратов, которая у завода обычно есть.
Хвостовой слой: отзыв партии, потеря контракта, травма, уголовная ответственность. Ожиданием не описывается, потому что распределение имеет тяжелый хвост. Разбирается отдельно в главе 17.
Первые два слоя дают формулу, по которой считаются цены во всех разборах этой работы.
где k — номер операции, на которой стоит контроль; V_i — добавленная стоимость операции i; p_рекл, p_прост — вероятности рекламации и простоя у заказчика
(16)
Из формулы видно главное свойство: цена пропуска зависит от того, где стоит пост. Контроль сразу после заливки дешевле контроля после механической обработки по цене ложной тревоги, но и цена пропуска у него выше — впереди весь маршрут. Перенос поста на одну операцию меняет обе цены сразу и, значит, меняет оптимальный порог.
В литературе по управлению качеством рост цены дефекта по мере продвижения описывают эмпирическим правилом кратного удорожания: на порядок при переходе от обнаружения в производстве к обнаружению у потребителя [68, 70]. Правило это именно эмпирическое, множители в разных источниках разные, и подставлять его вместо расчета по маршрутной карте не следует. Полезно оно в другом: показывает заказчику, почему одна и та же модель на разных постах стоит разных денег.
точка контроля
что впереди
цена пропуска
цена ложной тревоги
r
t*
после выбивки
обрубка, обработка, сборка, отгрузка
1 400 ₽
8,33 ₽
168
0,006
после механической обработки
сборка, отгрузка
800 ₽
8,33 ₽
96
0,010
перед отгрузкой
доставка и рекламация
600 ₽
25 ₽
24
0,040
входной контроль у заказчика
остановка его линии
12 000 ₽
25 ₽
480
0,002
Один и тот же дефект, четыре точки контроля, пороги отличаются в двадцать раз. Числа иллюстративные и служат для демонстрации структуры; в проекте они заполняются по маршрутной карте заказчика. Расчет по формулам (5) и (16).
Отдельный случай: цена пропуска у нарушения
В охране труда прямого слоя нет вовсе: невыявленное нарушение само по себе ничего не стоит. Вся цена — вероятностная, и складывается она из двух каналов. Первый — административный: за необеспечение работников средствами индивидуальной защиты предусмотрен штраф на юридическое лицо в диапазоне от 130 000 до 150 000 ₽ [77], и вероятность его получения зависит от частоты проверок, а не от частоты нарушений. Второй — собственно инцидент: произведение вероятности травмы при нарушении на цену травмы.
Вероятность травмы при одном нарушении мала и достоверно не известна никому. Отраслевая традиция подставлять сюда пирамиду происшествий восходит к работе 1931 года, и соотношения в ней с тех пор многократно оспорены как не выдерживающие проверки на современных данных [78]. Подставлять эти множители в смету нельзя. Что делать вместо этого — в следующей главе.
глава 17
Когда цену назвать нельзя
Инверсия вместо оценки, хвост вместо ожидания, риск-аппетит вместо арифметики
Есть класс задач, в которых Y не определяется. Цена человеческой жизни, цена потери лицензии, цена попадания дрона на объект. В экономике для первой из них существует техника оценки через готовность платить за снижение риска [73], но переносить ее в переговоры с заводом бессмысленно: разговор закончится, не начавшись, и правильно, что закончится.
Работают три обходных приема, и все три применимы в проекте.
Прием первый: инверсия
Вместо вопроса «сколько стоит» задается вопрос «при какой цене текущая настройка была бы верной». Формула (6) дает ответ мгновенно, и ответ этот обычно абсурден в понятную сторону: порог 0,5 в задаче охраны труда подразумевает, что невыявленное нарушение стоит две минуты работы мастера. Собеседник отвергает утверждение, и в этот момент разговор становится предметным.
c_FN^без = c_FP · (1 − t) / t
решение о пороге: t ↓ пока c_FN^без(t) не станет неприемлемо низкой
где c_FN^без — пороговая цена безразличия: та цена пропуска, при которой текущий порог оптимален
(17)
Процедура заканчивается не числом, а согласием: «пропуск дороже трехсот рублей, дешевле пяти тысяч». Этой точности достаточно — сколько именно достаточно, посчитано в главе 20.
Прием второй: перенос решения в норматив
Там, где цену назначить нельзя, ее уже назначил кто-то другой. Требование обеспечить работников средствами защиты и не допускать к работе без них сформулировано в трудовом законодательстве как безусловное, а не как экономически оптимальное. Задача системы в таком случае — не минимизировать убыток, а обеспечить заданный уровень recall при минимуме ложных тревог. Это постановка Неймана — Пирсона [1]: одна ошибка ограничена сверху, вторая минимизируется. Формально она отличается от байесовской, практически сводится к ней подбором того самого множителя Лагранжа, который и есть неявная цена.
Прием третий: хвост вместо среднего
Минимизация ожидаемого убытка предполагает, что убытки складываются и усредняются. Для потока деталей это так. Для события, которое случается раз в пять лет и стоит годовой выручки, это неверно: владельца интересует не среднее, а вероятность разорения. Аппарат для этого есть — меры риска, учитывающие хвост распределения [74, 75]; в задаче о пороге он выражается требованием вида «вероятность пропустить более чем N событий за год не превышает заданной».
Часть IV
Кривая убытка и ее геометрия
Части II и III дали формулу порога и цены. Здесь из них собирается функция убытка и разбирается ее форма. Главных результатов три. Дно кривой плоское: порог можно промахнуть втрое и потерять пять процентов. Склон крутой: фабричное значение 0,5 обходится в пять с половиной раз дороже оптимума. И перестановка порога дает больше, чем месяцы дообучения модели, причем стоит ноль рублей.
глава 18
Сборка функции убытка
Одно выражение, в котором сходятся метрики, базовая ставка, цены и поток
Все составляющие собраны. Осталось выписать убыток за смену как функцию порога.
L(t) = N · [ π·(1 − R(t))·c_FN + π·R(t)·c_TP + (1 − π)·F(t)·c_FP ]
с человеком в контуре: R_сист(t) = R(t) · q(A(t)), A(t) = N·[ π·R(t) + (1 − π)·F(t) ]
где N — единиц в потоке за смену; π — базовая ставка; R, F — recall и FPR при пороге t; q — доля отработанных тревог по формуле (15)
(18)
Три слагаемых: пропущенное, подтвержденное и ложное. В схеме с подтверждением каждой тревоги человеком c_TP = c_FP, и второе с третьим сливаются в стоимость разбора всего потока тревог. В схеме без подтверждения c_TP = 0, а c_FP включает цену выброшенной годной единицы.
Слагаемые ведут себя противоположно. Первое монотонно падает со снижением порога: чем ниже планка, тем меньше пропусков. Третье монотонно растет. Сумма двух монотонных функций разного знака имеет минимум, и весь вопрос в том, где он стоит и насколько там плоско.
Что в формуле переменное, а что нет, стоит проговорить отдельно. N и π — свойства процесса, они меняются от смены к смене и требуют мониторинга (глава 32). Цены — свойства бизнеса, меняются раз в год. R и F — свойства модели, меняются при переобучении. Порог t — единственное, что меняется бесплатно и мгновенно, и это делает его самым выгодным рычагом в системе.
глава 19
Форма кривой: плоское дно, крутой склон
Спор о третьем знаке порога бессмыслен, спор о порядке — принципиален
Возьмем сквозной разбор литейного ОТК: поток 5 760 деталей за смену, доля брака 2 %, цена пропуска 1 400 ₽, разбор тревоги 8,33 ₽, различимость модели 2,5. Оптимум по формуле (5) стоит на 0,0059, минимальный убыток — 18 041 ₽ за смену. Посмотрим, что происходит при отходе от этой точки.
Рис. 4. Функция убытка от порога в логарифмической шкале. Пунктиром — два слагаемых по отдельности: убыток от пропусков падает, стоимость разбора тревог растет. Сплошная — сумма. Отмечены минимум, зона отклонения на пять процентов и два фабричных значения порога. Дно широкое, левый склон пологий, правый крутой — асимметрия неслучайна и разбирается в тексте главы.
Z(ε) = { t : L(t) ≤ (1 + ε) · L(t*) }
где Z — зона безразличия: множество порогов, дающих убыток не более чем на ε хуже минимального
(19)
Практическая величина, которой в отчетах нет. Она отвечает на вопрос, с какой точностью надо подбирать порог, и ответ обычно успокаивающий.
допуск по убытку
зона порогов
ширина в разах
ширина в логитах
+5 %
0,0033 … 0,0103
3,1×
1,14
+20 %
0,0017 … 0,0171
9,9×
2,31
+50 %
0,0007 … 0,0302
43×
3,79
Зона безразличия для разбора из этой главы. Порог можно промахнуть втрое и потерять пять процентов убытка. Отсюда следует, что подбирать порог с точностью до третьего знака смысла нет, а вот ошибиться на порядок — есть.
Асимметрия склонов объясняется устройством слагаемых. Слева от оптимума растет число ложных тревог, и растет оно как FPR — плавно, потому что при малых порогах кривая ошибок уже пологая. Справа падает recall, и падает он быстро, потому что там кривая крутая. Поэтому промахнуться вниз дешевле, чем вверх, и в условиях неопределенности порог стоит ставить ниже расчетного.
интерактив · кривая убытка, формулы (5), (18)расчет, не замер
человек в контуре
Жесткое ограничение по формуле (14): пороги, дающие больше тревог, физически недостижимы и на графике зачеркнуты.
оптимальный порог
0,019
убыток в оптимуме
22 598 ₽
цена порога 0,5
+77 745 ₽
тревог за смену
711
Вердикт: ограничение по посту активно: безусловный оптимум недостижим. Теоретический порог из одних цен по формуле (5) — 0,00592; recall в найденной рабочей точке 0,896. Зона отклонения на пять процентов тянется от 0,0194 до 0,0218.
Порог 0,5 означает утверждение, что пропуск стоит ровно столько же, сколько ложная тревога, то есть 8,33 ₽ вместо назначенных 1 400 ₽. Разница в 168 раз и обходится в 77 745 ₽ за смену. Фабричные 0,25 стоят 50 346 ₽.
глава 20
Регрет: сколько стоит ошибка в оценке цены ошибки
Порядок нужен обязательно, точность не нужна вовсе
Главное возражение против всего этого аппарата звучит так: цены неизвестны с приемлемой точностью, значит и порог посчитать нельзя. Возражение проверяемо. Посчитаем, во что обходится ошибка в оценке отношения цен.
regret(m) = L( t*(m·r) ) − L( t*(r) )
где r — истинное отношение цен; m — во сколько раз мы в нем ошиблись; t*(·) — порог по формуле (5)
(20)
Величина показывает переплату за неверную оценку. Считается по той же кривой убытка, просто в двух точках.
ошибка в оценке r
выставленный порог
убыток за смену
переплата
в 10 раз занизили
0,0562
36 115 ₽
+100 %
в 5 раз занизили
0,0289
26 534 ₽
+47 %
вдвое занизили
0,0118
19 482 ₽
+8 %
угадали точно
0,0059
18 041 ₽
0
вдвое завысили
0,0030
19 285 ₽
+7 %
в 5 раз завысили
0,0012
23 720 ₽
+31 %
в 10 раз завысили
0,0006
28 161 ₽
+56 %
взяли порог 0,5 (r = 1)
0,5000
100 552 ₽
+457 %
Цена неточности в оценке цены. Расчет по формуле (20) для сквозного разбора литейного ОТК. Последняя строка — то, что происходит, когда цены не оценивают вовсе и оставляют фабричное значение.
Результат стоит сформулировать прямо, потому что он снимает главное возражение заказчика и главное оправдание подрядчика. Ошибка в оценке цены вдвое стоит семь процентов убытка. Ошибка в десять раз стоит половину. Отказ от оценки стоит четыреста пятьдесят процентов. Порядок величины назвать может любой начальник участка за пять минут; точность до второго знака не нужна никому.
Причина устойчивости видна из формулы (7): порог линеен по логарифму отношения цен. Умножение цены на десять сдвигает порог на 2,3 по логиту, а зона безразличия по таблице главы 19 имеет ширину 2,3 логита на допуске в двадцать процентов. Иначе говоря, ошибка на порядок выводит нас ровно к границе приемлемого — и не дальше.
Оценивайте цену ошибки грубо, но оценивайте. Порядок величины стоит пяти минут разговора и экономит четыреста процентов убытка.
вывод главы 20
глава 21
Цена фабричного порога в рублях
Перестановка одного числа в конфиге дает больше, чем месяц дообучения
Соберем прямое сравнение: три уровня качества модели, три значения порога, один и тот же процесс. Таблица отвечает на вопрос, куда вкладываться — в данные или в настройку.
различимость d′
убыток при t = 0,5
убыток при t = 0,25
убыток при оптимуме
цена фабричного 0,5
1,5 — проверка осуществимости
156 081 ₽
140 163 ₽
35 124 ₽
120 956 ₽
2,5 — рабочая модель
100 552 ₽
73 078 ₽
18 041 ₽
82 511 ₽
3,5 — сильная модель
43 018 ₽
28 560 ₽
7 623 ₽
35 395 ₽
Убыток за смену при разном качестве модели и разном пороге. Сквозной разбор литейного ОТК, расчет по формуле (18). Последний столбец — то, что теряется ежесменно из-за неверного значения одной строки в конфигурационном файле.
Сравним две стратегии улучшения. Первая: оставить порог 0,5 и вложиться в модель, подняв различимость с 2,5 до 3,5 — это месяцы разметки, дообучения и проверок. Убыток падает со 100 552 ₽ до 43 018 ₽. Вторая: оставить модель как есть и переставить порог на расчетный. Убыток падает со 100 552 ₽ до 18 041 ₽.
Стоит добавить, что улучшение модели и настройка порога не заменяют друг друга и складываются. Сильная модель с расчетным порогом дает 7 623 ₽ — в тринадцать раз меньше исходной конфигурации. Порядок работ при этом остается прежним: сначала бесплатное, потом дорогое.
различимость d′
recall в оптимуме
FPR в оптимуме
тревог за смену
убыток
1,0
0,958
0,768
4 445
43 758 ₽
1,5
0,942
0,529
3 092
35 125 ₽
2,0
0,947
0,351
2 088
25 952 ₽
2,5
0,959
0,225
1 378
18 041 ₽
3,0
0,972
0,138
891
11 944 ₽
3,5
0,982
0,081
571
7 623 ₽
4,0
0,990
0,045
370
4 775 ₽
Что покупается за улучшение модели при верно выставленном пороге. Recall почти не растет — он и так близок к единице. Растет другое: падает поток тревог, то есть нагрузка на людей. Улучшение модели в задаче с дорогим пропуском покупает не качество обнаружения, а сокращение поста контроля.
глава 22
Один порог на модель — ошибка
У классов разная цена, значит и пороги у них разные
Детектор с шестью классами дефектов обычно настраивают одним значением порога уверенности, потому что так устроен конфиг. Экономически это означает утверждение, что все шесть дефектов стоят одинаково. Утверждение неверное.
класс дефекта
цена пропуска
r
оптимальный порог
трещина
4 200 ₽
504
0,0020
раковина
2 600 ₽
312
0,0032
недолив
1 800 ₽
216
0,0046
засор
1 400 ₽
168
0,0059
перелив
900 ₽
108
0,0092
пора
600 ₽
72
0,0137
Пороги по классам для литейного разбора при одной и той же цене разбора тревоги 8,33 ₽. Разброс — семикратный. Цены классов иллюстративные: реальные берутся из того, что происходит с деталью при каждом типе дефекта — одни идут в неисправимый брак, другие в исправимый, третьи допускаются по соглашению с заказчиком.
Реализуется это тривиально: вместо одного числа в конфиге лежит словарь «класс — порог», применяемый после подавления немаксимумов. Стоимость изменения — несколько строк кода. Выигрыш считается по той же формуле (18), просуммированной по классам.
Тонкость, о которой надо помнить: калибровка у классов тоже разная. Редкий класс в обучающей выборке почти всегда переуверен или недоуверен сильнее частого, потому что примеров меньше [62]. Значит, поправка по формуле (9) и температурная подгонка по формуле (8) делаются по каждому классу отдельно, а не одним коэффициентом на модель.
глава 23
Правило kp Деминга и что с ним делает машина
До появления машины ответом было «все или ничего», и это было доказано
Задача о цене контроля решена задолго до машинного зрения. Деминг в 1986 году показал, что при постоянной доле брака и линейных ценах оптимальная стратегия приемочного контроля вырожденная: либо проверять все, либо не проверять ничего, а точка переключения определяется отношением цены проверки к цене пропуска [67].
p* = k₁ / k₂
p < p* → не контролировать вовсе
p > p* → контролировать сплошным порядком
где p — доля брака в потоке; k₁ — цена проверки одной единицы; k₂ — цена пропуска одной бракованной единицы дальше по маршруту
(21)
Правило выведено для человеческого контроля с идеальной различимостью: проверяющий не ошибается, вопрос только в том, стоит ли его труд результата. Промежуточных стратегий вроде выборочного контроля правило не оставляет — они хуже обеих крайностей при линейных ценах.
цена проверки k₁
цена пропуска k₂
точка переключения p*
толкование
8,33 ₽
1 400 ₽
0,60 %
литейный разбор: при браке выше 0,6 % контролировать надо все
25 ₽
5 000 ₽
0,50 %
дорогая деталь, дорогая проверка — та же граница
50 ₽
300 ₽
16,7 %
дешевый пропуск: контроль оправдан только при очень плохом процессе
Правило kp на числах этой работы. Расчет по формуле (21).
Теперь добавим машину. Она меняет структуру задачи в двух местах. Во-первых, предельная цена одной проверки падает почти до нуля: посмотреть кадр стоит миллисекунды ускорителя. Во-вторых, различимость перестает быть идеальной — машина ошибается, чего в постановке Деминга не было.
Первое обстоятельство отправляет p* к нулю и означает, что сплошной автоматический контроль оправдан всегда. Второе возвращает задачу к формуле (18) и создает третью стратегию, которой у Деминга не было: сплошной машинный просмотр плюс человеческая проверка отобранного меньшинства. Именно эта стратегия и считается во всей настоящей работе, и именно она объясняет, почему пост контроля из восьми человек превращается в одного.
глава 24
Отказ от решения: два порога вместо одного
Правило Чоу 1970 года: там, где система не уверена, платить человеку дешевле
До сих пор решений было два. Добавим третье: система может отказаться решать и передать случай человеку. Задача с отказом решена Чоу в 1970 году, и решение у нее простое: вместо одного порога появляются два, между ними лежит зона передачи [8].
где c_отказ — цена передачи одного случая человеку, в тех же единицах, что остальные цены
(22)
Зона отказа тем шире, чем дешевле человек относительно ошибок. При c_отказ, сравнимой с ценой ошибки, зона схлопывается и задача возвращается к одному порогу. Формула приведена для случая c_TP = c_TN = 0.
Рис. 5. Три зоны на шкале уверенности. Слева автоматическое «годно», справа автоматическое «брак», посередине передача человеку. Границы считаются из цен по формуле (22), ширина средней зоны определяет нагрузку на пост. Внизу — плотности отклика на годных и бракованных единицах: видно, что в зону отказа попадает именно перекрытие распределений, то есть те случаи, где модель физически не может решить.
Схема с отказом — это то, что в проектах называют режимом предварительной сортировки, и она же экономически самая устойчивая. Причина в том, что она разводит два разных вида ошибок. Автоматические решения принимаются только там, где модель уверена, и цена ошибки там мала по построению. Все спорное достается человеку, и нагрузка на него регулируется шириной зоны, то есть напрямую тем же ползунком, что и число людей на посту.
Практическая настройка обычно идет от нагрузки, а не от цен: ширина зоны подбирается так, чтобы поток передач соответствовал имеющемуся посту. Это законно и совпадает с задачей на условный экстремум из главы 14. Важно только не забыть проверить обратную величину: при выбранной ширине посчитать по формуле (22), какую цену отказа она подразумевает, и убедиться, что цифра правдоподобна.
Часть V
Событие вместо кадра
Вся предыдущая часть считала одно решение по одному наблюдению. В видеоаналитике наблюдений на одно решение приходится десятки, и это меняет экономику сильнее, чем любое дообучение. Здесь разбирается, почему в детекции матрица ошибок вообще не определена без набора соглашений, как правило подтверждения K из N срезает ложные тревоги на два порядка при почти неизменном recall и почему настоящий выигрыш меньше расчетного ровно во столько раз, во сколько соседние кадры похожи друг на друга.
глава 25
В детекции матрицы ошибок нет
Пока не назначены IoU, правило сопоставления и обработка дублей, считать нечего
В классификации четыре клетки определены однозначно: ответ либо верный, либо нет. В детекции ответ — это рамка с координатами, и вопрос «верная ли она» требует соглашений. Соглашений нужно не меньше четырех, и каждое двигает метрику на проценты.
Порог совпадения рамок. Обычно 0,5 по площади пересечения к объединению; в COCO принято усреднять по десяти уровням от 0,50 до 0,95 [59], в VOC — один уровень [58]. Дефект 2 мм² на детали диаметром 100 мм при пороге 0,5 требует локализации, которая для мелких объектов недостижима, и рамка, попавшая рядом, пойдет одновременно в ложные срабатывания и в пропуски. Одна ошибка засчитывается дважды.
Правило сопоставления. Один размеченный объект может собрать несколько предсказаний. Второе и последующие считаются ложными срабатываниями, хотя объект найден верно.
Обработка дублей. Подавление немаксимумов удаляет пересекающиеся рамки, и его порог — второй скрытый гиперпараметр с экономическими последствиями: на плотной сцене он превращает верные срабатывания в пропуски.
Обработка объектов, которые не размечены. Кадр без разметки не означает кадр без объектов. Все, что модель нашла на неразмеченном участке, попадает в ложные срабатывания и портит оценку FPR — величины, из которой считаются деньги.
Разбор того, из чего складывается ошибка детектора, сделан давно и подробно: классическая работа Хойема с соавторами раскладывает ошибки на локализацию, путаницу классов, фон и пропуски [60], а более поздний инструментарий делает это автоматически и показывает, какая доля падения метрики на что приходится [61]. Для экономического расчета важен вывод: доли эти сильно разные для разных типов ошибок, а стоят они тоже по-разному. Смещенная рамка на детали, которую все равно снимет человек, стоит ноль. Смещенная рамка, по которой манипулятор берет заготовку, стоит аварии.
Рис. 6. Лестница от кадра к наряду. На каждой ступени меняются и число ошибок, и их цена. Слева направо: отклик модели на кадре, объект после подавления дублей, трек после ассоциации между кадрами, событие после правила подтверждения, действие человека. Цена определена только на последней ступени, метрики считаются на первой, и весь этот переход обычно не документируется.
Практическое требование к отчету отсюда следующее: рядом с любой метрикой детекции обязаны стоять порог IoU, правило сопоставления, порог подавления немаксимумов и определение единицы учета. Отчет без этих четырех пунктов невоспроизводим, и сравнивать его с другим отчетом бессмысленно.
глава 26
Подтверждение K из N: самая дешевая точность
Два порядка по ложным тревогам за десять строк кода и ноль рублей
Объект в кадре живет не один кадр. Дрон в поле зрения — секунды, деталь на позиции контроля — десятки кадров, человек в зоне — минуты. Значит, решение можно принимать не по одному наблюдению, а по нескольким, и требовать подтверждения.
R_соб = P[ Bin(N, R_кадр) ≥ K ] F_соб = P[ Bin(N, F_кадр) ≥ K ]
где N — число наблюдений в окне подтверждения; K — сколько из них должно сработать; R_кадр, F_кадр — покадровые recall и FPR
(23)
Запись предполагает независимость наблюдений. Для ложных срабатываний по разным причинам это приближение работает сносно, для верных — хуже. Поправка — в следующей главе.
ложных тревог в час = F_соб · (f / N) · 3600
где f — частота кадров, кадров в секунду; N — длина окна в кадрах
(24)
Величина, которую надо писать в договор вместо precision. Она переносима, проверяема за сутки наблюдения и понятна тому, кто будет с этими тревогами работать.
правило
recall события
ложных в час на камеру
во сколько раз меньше
одно срабатывание (K = 1 из 1)
0,553
806
—
K = 1 из 5 (любое в окне)
0,982
792
1,0×
K = 2 из 5
0,872
14,2
57×
K = 3 из 5
0,598
0,13
6 200×
K = 4 из 5
0,260
0,003
270 000×
Правило подтверждения при покадровом пороге 0,25, различимости 2,5 и базовой ставке 2 %. Окно 5 кадров при 25 к/с — это 0,2 секунды. Расчет по формулам (23) и (24) в предположении независимости кадров.
Строка K = 2 из 5 заслуживает отдельного внимания. Ложные тревоги упали в пятьдесят семь раз, а recall события вырос по сравнению с покадровым: 0,872 против 0,553. Оба показателя улучшились одновременно. Это не нарушение компромисса между ошибками первого и второго рода — просто мы перешли к другой единице учета, где информации в пять раз больше.
Сравним стоимость. Переход от различимости 2,5 к 3,5 — это разметка нескольких тысяч кадров, недели обучения и риск не получить результат. Переход от K = 1 к K = 2 — это счетчик и окно, десяток строк в обработчике, полдня работы. Выигрыш второго больше.
интерактив · подтверждение K из N, формулы (23)–(25)расчет, не замер
покадровый recall
0,553
покадровый FPR
0,0090
без подтверждения
806 лож./ч
рекомендуемое правило
K = 3 из 5
правило
recall события
ложных в час
в сутки
K = 1 из 5
0,982
792
19 005
K = 2 из 5
0,872
14,2
340
K = 3 из 5
0,598
0,13
3,1
K = 4 из 5
0,260
5,8·10^-4
0,01
K = 5 из 5
0,052
1,0·10^-6
2,5·10^-5
При покадровом пороге 0,25 одна камера дает 806 ложных срабатываний в час. Правило K = 3 из 5 снижает их до 0,13 в час — в 6 316 раз, — оставляя recall события 0,598 против покадрового 0,553. Окно 5 кадров при 25 к/с занимает 200 миллисекунд, то есть решение задерживается на эту величину. Ползунок независимости стоит на 100 %: это верхняя граница выигрыша, в жизни соседние кадры коррелированы и настоящий эффект меньше.
глава 27
Корреляция кадров: где кончается бесплатный обед
Соседние кадры почти одинаковы, и выигрыш от подтверждения меньше расчетного
Формула (23) предполагает независимость наблюдений. Соседние кадры видеопотока независимыми не являются: между ними 40 миллисекунд, за которые сцена почти не меняется. Блик на кожухе, дающий ложное срабатывание, дает его и на следующем кадре, и через один. Ровно та же причина, по которой подтверждение помогает, работает и против него.
N_eff = N / [ 1 + 2·Σ_{k=1}^{N−1} (1 − k/N)·ρ_k ]
где ρ_k — автокорреляция отклика модели со сдвигом в k кадров, снятая на реальном потоке
(25)
Стандартная поправка на эффективный объем выборки для коррелированного ряда. В формулу (23) подставляется N_eff вместо N. Величину надо измерять на объекте: она зависит от частоты кадров, динамики сцены и природы ложных срабатываний, и назначать ее из общих соображений нельзя.
предположение
правило
recall события
ложных в час
независимые кадры, N = 5
K = 2
0,872
14,2
коррелированные, N_eff = 2
K = 2
0,306
1,44
коррелированные, N_eff = 2
K = 1
0,800
321
Что делает корреляция с выигрышем от подтверждения. При эффективном объеме выборки 2 вместо 5 правило K = 2 сохраняет подавление ложных тревог, но обрушивает recall события до 0,31. Расчет по формулам (23) и (25); значение N_eff = 2 взято как иллюстрация, а не как измеренная величина.
Отсюда два инженерных вывода. Первый: длину окна надо задавать в секундах и проверять по времени жизни объекта в кадре, а не в кадрах. Второй: расширять окно за пределы времени, в течение которого сцена успевает измениться, бесполезно — новые кадры не добавляют информации, а только задерживают решение.
Есть и способ вернуть независимость. Ложные срабатывания разной природы коррелируют между собой слабо, поэтому подтверждение по разным источникам работает лучше подтверждения по времени: два ракурса той же детали, две модели с разными архитектурами, детекция плюс подтверждение движением. Каждый такой канал добавляет к N_eff примерно единицу, тогда как десять лишних кадров добавляют доли.
Часть VI
Три разбора
Аппарат проверяется на задачах, а не на себе. Три разбора выбраны так, чтобы покрыть три разных экономических режима: отбраковка литья, где человек — сервер с жесткой пропускной способностью; контроль средств защиты, где человек — наблюдатель с падающим вниманием; детекция БПЛА, где базовая ставка настолько мала, что обрушивает precision при любом качестве модели. Все три опираются на измеренные лабораторией метрики; все цены — иллюстративные наборы, и это сказано в каждом разборе.
глава 28
Отбраковка литья: смета смены
Полная арифметика поста контроля от метрики модели до числа людей
Задача взята с реального разбора: чугунное литье, стаканы диаметром 80–150 мм и рабочие колеса насосов, порядка пятидесяти типоразмеров, шесть-восемь классов дефектов, минимальный значимый дефект около 2 мм², контроль сейчас ведут люди. Заявленный такт — 5 секунд на деталь, и это оценка самого заказчика по месячному объему при круглосуточной работе; режим не подтвержден, поэтому все производные от него числа наследуют эту неопределенность.
параметр
значение
откуда
поток за смену
5 760 деталей
8 часов при такте 5 с — оценка заказчика, не подтверждена
доля брака π
2 %
иллюстративное значение; в проекте берется из журнала ОТК
расчетное допущение; наш детектор дефектов литья пока слабее
Исходные данные разбора. Ни одно из этих чисел не является измерением на объекте заказчика: пост контроля еще не построен. Таблица показывает структуру расчета, а не его результат для конкретного завода.
Шаг 1. Порог из цен
Отношение цен r = 1 400 / 8,33 = 168. По формуле (5) безусловный оптимум стоит на 0,0059. Обратная проверка по формуле (6): порог 0,5, который стоял бы по умолчанию, подразумевает цену пропуска 8,33 ₽ — то есть утверждение, что пропущенная трещина обходится в сорок секунд работы контролера. Заказчик с таким утверждением не согласится, и на этом разговор о пороге закончен.
Шаг 2. Ограничение по людям
При пороге 0,0059 модель отдает 1 374 тревоги за смену. Один контролер за восьмичасовую смену успевает 720 проверок при сорока секундах на каждую. Безусловный оптимум недостижим. Считаем условный по формуле (14) и добавляем фонд оплаты труда.
конфигурация
порог
recall
тревог
убыток
ФОТ поста
итого за смену
сплошной ручной контроль
—
≈ 0,85
5 760
24 192 ₽
48 000 ₽
72 192 ₽
машина, порог 0,5, один человек
0,500
0,380
58
100 552 ₽
6 000 ₽
106 552 ₽
машина, порог 0,019, один человек
0,019
0,898
719
22 487 ₽
6 000 ₽
28 487 ₽
машина, порог 0,006, два человека
0,006
0,959
1 374
18 041 ₽
12 000 ₽
30 041 ₽
Четыре конфигурации поста. Первая строка: восемь контролеров на сплошной просмотр 5 760 деталей, recall человека принят 0,85 — величина модельная, своих измерений человеческого контроля у лаборатории нет. Расчет по формулам (14) и (18).
Победитель — третья строка: машина при пороге 0,019 и один контролер. Разница со сплошным ручным контролем — 43 705 ₽ за смену, из которых 42 000 ₽ приходятся на фонд оплаты труда семерых снятых с поста людей, а остальное на разницу в качестве отбраковки. Вторая строка показывает, во что превращается тот же проект при фабричном пороге: он проигрывает даже ручному контролю.
Шаг 3. Проверка на реальном качестве модели
Различимость 2,5 в расчете — допущение. Что есть в действительности: наш учебный детектор дефектов отливок, обученный на открытом датасете, дает mAP@50 = 0,45 при recall 0,42 — это измеренные числа и это уровень проверки осуществимости, а не рабочей модели. Для сравнения, наш же детектор касок на той же архитектуре дает mAP@50 = 0,948. Разрыв показывает, что дефектоскопия литья — трудная задача, и это ровно то, за что заказчик платит в проекте: съемку под свой цех, разметку своих дефектов и, вероятно, сегментацию вместо рамок.
Подставим слабую модель в ту же смету. Строка d′ = 1,5 из таблицы главы 21 дает в оптимуме 35 124 ₽ убытка против 18 041 ₽ у рабочей модели. Прибавив фонд оплаты труда, получаем, что проект остается выгоднее ручного поста даже на модели уровня проверки осуществимости — при условии, что порог выставлен верно. При фабричном пороге 0,5 та же слабая модель дает 156 081 ₽ и хоронит проект целиком.
глава 29
Контроль СИЗ: когда порог не спасает
Оптимум упирается в человека, а перенос модели на чужой объект имеет цену в рублях
Вторая задача: контроль ношения касок на промышленном объекте. Восемь камер, смена двенадцать часов, порядка 1 440 человеко-эпизодов за смену, доля нарушений 3 %. Разбор одного уведомления мастером — две минуты при ставке 900 ₽ в час, то есть 30 ₽. Цена невыявленного нарушения не определена, и принята модельной величиной 3 000 ₽ по приему из главы 17.
Расчет по формуле (5) без учета человека дает порог 0,0099 и убыток 10 656 ₽ за смену. Расчет с учетом деградации внимания по формуле (15) дает оптимум 0,358 и убыток 62 769 ₽ — в шесть раз хуже, и оптимальный порог уехал в другую сторону на два порядка. Разбор этой пары чисел уже сделан в главе 15; здесь важно следствие.
Следствие в том, что подбором порога задача не решается. Между лучшим и худшим порогом в правдоподобном диапазоне разница 1 600 ₽ при убытке 63 000 ₽ — два с половиной процента. Контур неработоспособен при любой настройке, и лечится это не настройкой.
изменение контура
что делает с A
стоимость
эффект
сводка за смену вместо уведомления по каждому эпизоду
снижает поток прерываний на порядок
день работы
q возвращается к единице, оптимум снова считается по формуле (5)
склейка повторов одного человека в одну запись
снижает A в разы на объектах с несколькими нарушителями
день работы
убирает главный источник раздражения оператора
мгновенное уведомление только в опасных зонах
оставляет прерывания там, где они оправданы
разметка зон, полдня
разделяет задачу на две с разными ценами и разными порогами
автоматическое уведомление нарушителю без участия мастера
убирает человека из контура реакции
интеграция, недели
снимает ограничение целиком, но требует другой цены ложной тревоги
Изменения контура вместо настройки порога. Каждое снижает нагрузку на человека, не трогая модель. Первые три делаются быстрее, чем один цикл дообучения.
Цена переноса модели на чужой объект
Второй сюжет этой задачи измерен нами напрямую и переводится в деньги без допущений о человеке. При обучении детектора касок сравнивались две сборки датасета: первая на одном источнике, вторая с добавлением трех разнородных. На родном тестовом наборе обе показали практически одинаковый recall по классу нарушения — 0,906 и 0,905. На разнообразном тестовом наборе первая просела до 0,773, вторая удержала 0,867.
сборка датасета
recall на родном тесте
recall на разнообразном
пропусков за смену
убыток от пропусков
v1, один источник
0,906
0,773
9,8
29 419 ₽
v2, четыре источника
0,905
0,867
5,7
17 237 ₽
любая, на родном тесте
0,905
—
4,1
12 312 ₽
Разрыв доменов в рублях. Recall — наши измеренные величины, остальное — расчет по 1 440 эпизодам, доле нарушений 3 % и цене нарушения 3 000 ₽. Считается только слагаемое пропусков: сопоставимых оценок FPR по этим прогонам у нас нет, и подставлять их было бы выдумкой.
Разница между строками — 12 182 ₽ за смену. Столько стоит то, что модель обучена на разнородных данных, а не на одном источнике, — при переносе на объект, который в обучающей выборке не участвовал. Работа по добавлению трех датасетов заняла один день. Третья строка показывает потолок: даже идеальный перенос оставляет 12 312 ₽ пропусков, потому что recall не равен единице ни на каком тесте.
глава 30
Детекция БПЛА: арифметика редкого события
Отличная модель, ничтожная базовая ставка, precision в районе нуля
Третья задача устроена иначе обеих предыдущих. Наш детектор БПЛА на отложенном тесте из 2 200 изображений дает precision 0,961 и recall 0,889 — измеренные величины из поставки. Модель хорошая. Задача при этом экономически трудная, и трудность создается не моделью.
Рис. 7. Базовая ставка на потоке одной камеры. За сутки камера отдает 2,16 миллиона кадров. Если дрон появляется раз в сутки и держится в кадре десять секунд, положительных кадров 250, то есть доля положительных около 1,2 на десять тысяч. Даже FPR 0,001 дает при этом 2 160 ложных срабатываний в сутки против сотни верных кадров — и это при отличном детекторе.
FPR модели
recall при этом FPR
ложных в час на камеру
за сутки
разбор оператором
0,01
0,750
900
21 600
неприменимо
0,001
0,464
90
2 160
129 600 ₽/сутки
0,0001
0,236
9
216
12 960 ₽/сутки
0,00001
0,103
0,9
21,6
1 296 ₽/сутки
0,000001
0,040
0,09
2,2
130 ₽/сутки
Покадровое решение на потоке 25 кадров в секунду. Расчет по бинормальной модели с d′ = 3,0 — величине, восстановленной из наших измеренных precision и recall в предположении сбалансированного теста (глава 11). Разбор оператором считается по 60 ₽ за срабатывание.
Таблица читается как приговор покадровой схеме. Приемлемая нагрузка на оператора требует FPR порядка одной миллионной, при которой recall падает до 0,04. Приемлемый recall требует FPR порядка сотой, при котором на оператора льется двадцать тысяч тревог в сутки с одной камеры. Промежуточных значений, устраивающих обе стороны, нет — и никакое улучшение модели их не создаст, потому что дело в множителе 90 000 кадров в час, а не в качестве детектора.
Выход — переход к событию, разобранный в части V. Подтверждение по восьми кадрам полностью меняет картину.
правило
покадровый FPR
recall события
ложных в час
за сутки
одно срабатывание
0,01
1,000
869
20 859
K = 2 из 8
0,01
0,9996
30,3
726
K = 3 из 8
0,01
0,996
0,61
14,6
K = 4 из 8
0,01
0,973
0,008
0,18
K = 3 из 8
0,003
0,950
0,017
0,40
То же покадровое качество, другая единица решения. Правило K = 4 из 8 при покадровом FPR 0,01 дает recall события 0,97 и одно ложное срабатывание примерно раз в шесть суток. Расчет по формулам (23) и (24) в предположении независимости кадров — то есть это верхняя граница выигрыша, и настоящую величину надо мерить по главе 27.
И отдельно про precision в этой задаче. Число 0,961 из нашей поставки получено на отложенном тесте, где положительных примерно половина. На объекте с долей положительных 0,0001 та же модель при том же FPR даст precision 0,044: из двадцати трех тревог верной будет одна. Ошибка тут не в модели и не в отчете — ошибка в переносе числа из одного контекста в другой. Именно поэтому precision в договоре не пишут, а пишут ложные срабатывания в час (глава 33).
Часть VII
Инженерная часть
Аппарат бесполезен, пока цены не сняты, порог не лежит в конфигурации, а приемка написана в процентах. Эта часть — про то, как довести расчет до эксплуатации: опросник на одиннадцать пунктов с указанием, кто на какой отвечает и где занижает; рабочий листинг калькулятора; регламент пересмотра порога при дрейфе базовой ставки; формулировки для договора; двенадцать способов обмануть себя и полный список того, чего эта работа не умеет.
глава 31
Опросник: снять цены за один разговор
Одиннадцать вопросов, у каждого свой адресат, и три из них всегда занижают
Цены собираются не у одного человека и не одним заходом. Ниже — рабочий опросник, отсортированный по адресату. Порядок важен: расчет собирается снизу вверх, и первые четыре вопроса дают порядок величины, которого уже достаточно по выводам главы 20.
№
вопрос
кому
что делать с ответом
1
Сколько единиц проходит через точку контроля за смену?
мастер участка
берется как есть, проверяется по журналу выпуска
2
Какая доля из них бракованная?
начальник ОТК
почти всегда занижена; просить журнал за квартал, а не оценку
3
Сколько времени занимает разбор одного подозрительного случая?
контролер, не начальник
хронометраж на месте; названная цифра обычно вдвое меньше фактической
4
Что происходит с деталью после этой точки: перечислите операции
технолог
дает прямой слой цены пропуска по маршрутной карте
5
Сколько стоит каждая из этих операций?
экономист
если ответа нет, брать долю от цены детали и помечать как оценку
6
Сколько было возвратов за год и что каждый стоил?
коммерческая служба
дает вероятностный слой; тут же выясняется, считают ли их вообще
7
Останавливается ли поток на время разбора?
мастер участка
переключает цену тревоги между временем человека и временем линии
8
Кто и как реагирует на срабатывание: смотрит сразу или в конце смены?
мастер участка
определяет режим человека по главе 13 и, значит, всю модель
9
Сколько уведомлений в смену этот человек считает нормой?
тот, кто будет смотреть
дает A₀ в формуле (15) без всякой теории
10
Что случится, если брак дойдет до потребителя?
директор
хвостовой слой; ответ качественный, переводится приемом из главы 17
11
Какой порог стоит сейчас, если система уже работает?
инженер
обратная задача по формуле (6) — проверка всех предыдущих ответов на связность
Опросник для сбора матрицы цен. Занижают систематически вопросы 2, 3 и 6: долю брака, потому что за нее отвечают; время разбора, потому что помнят хороший случай; возвраты, потому что часть из них проходит как гарантийный ремонт и в статистику брака не попадает.
Ответы подставляются в расчет. Ниже — рабочая реализация всего аппарата работы: безусловный оптимум, кривая убытка, зона безразличия и условный оптимум при ограничении по людям. Зависимостей нет, запускается как есть.
python
import math
SQ2 = math.sqrt(2.0)
Phi = lambda x: 0.5 * (1.0 + math.erf(x / SQ2))
logit = lambda p: math.log(p / (1.0 - p))
def rates(t, d, pi):
"""recall и FPR при пороге t для модели с различимостью d."""
x = (logit(t) - logit(pi) + d * d / 2) / d
return Phi(d - x), Phi(-x)
def loss(t, *, n, pi, d, c_fn, c_fp, c_tp=None):
"""Убыток за смену по формуле (18). c_tp=None -> подтверждение человеком."""
r, f = rates(t, d, pi)
c_tp = c_fp if c_tp is None else c_tp
miss = n * pi * (1 - r) * c_fn
work = n * (pi * r * c_tp + (1 - pi) * f * c_fp)
return miss + work
def alarms(t, *, n, pi, d):
r, f = rates(t, d, pi)
return n * (pi * r + (1 - pi) * f)
def optimum(cap=None, **kw):
"""Оптимум по сетке; cap — предел числа тревог за смену (формула 14)."""
grid = [10 ** (-6 + 6 * i / 20000) for i in range(1, 20000)]
grid = [t for t in grid if t < 0.999]
if cap is not None:
grid = [t for t in grid
if alarms(t, n=kw["n"], pi=kw["pi"], d=kw["d"]) <= cap]
best = min(grid, key=lambda t: loss(t, **kw))
lmin = loss(best, **kw)
zone = [t for t in grid if loss(t, **kw) <= 1.05 * lmin]
return best, lmin, (min(zone), max(zone))
if __name__ == "__main__":
P = dict(n=5760, pi=0.02, d=2.5, c_fn=1400.0, c_fp=750.0 * 40 / 3600)
print("теоретический порог :", round(P["c_fp"] / P["c_fn"], 5))
for cap, label in [(None, "без ограничения"), (720, "один контролер")]:
t, l, z = optimum(cap=cap, **P)
print(f"{label:18}: t={t:.4f} убыток={l:,.0f} ₽ "
f"тревог={alarms(t, n=P['n'], pi=P['pi'], d=P['d']):.0f} "
f"зона +5% = [{z[0]:.4f}; {z[1]:.4f}]")
for t in (0.5, 0.25):
print(f"порог {t}: убыток={loss(t, **P):,.0f} ₽, "
f"подразумевает c_FN={P['c_fp'] * (1 - t) / t:.0f} ₽")
Калькулятор порога. Та же математика, что в интерактивном стенде главы 19: равнодисперсная бинормальная модель по формуле (11), калиброванная уверенность по формуле (12), убыток по формуле (18).глава 32
Порог живет в конфигурации, а не в весах
Эксплуатационный параметр с журналом изменений и регламентом пересмотра
Порог часто зашивают в код обработчика или, хуже того, в экспортированную сборку модели. Это ошибка уровня архитектуры: величина, зависящая от цен и состава потока, оказывается в артефакте, который пересобирается неделями.
Порог лежит в конфигурации рядом с ценами, из которых он посчитан. Рядом же — дата расчета и имя того, кто назвал цены.
Пороги хранятся по классам, а не одним числом (глава 22).
Изменение порога попадает в журнал вместе с причиной. Через полгода вопрос «почему тут 0,019» обязан иметь ответ.
В журнале лежит и обратная величина: подразумеваемая цена пропуска по формуле (6). Ее читает не инженер, а владелец процесса, и читает без перевода.
Пересчет порога — операция без переобучения и без остановки. Если это не так, архитектура сделана неверно.
Дрейф базовой ставки
Порог по формуле (5) от базовой ставки не зависит — но только пока модель калибрована. Калибровка выполнена при какой-то доле положительных, и когда доля на объекте уезжает, выдаваемая уверенность перестает быть вероятностью. Поправка делается по формуле (9) и требует одного числа: текущей базовой ставки. Ее надо мерить постоянно.
что дрейфует
как замечается
что делать
доля брака выросла: новая партия шихты, износ оснастки
растет число тревог при неизменном пороге
пересчитать калибровку по формуле (9); порог по (5) не трогать
изменились цены: подорожал передел, сменился договор
никак не замечается — в этом и опасность
регламентный пересмотр раз в квартал по опроснику главы 31
изменилась сцена: новый свет, другой ракурс, грязный объектив
падает recall при неизменном пороге, растет доля тревог по одному месту кадра
это не про порог, это про модель и обслуживание
изменился человек: сменился мастер, добавили ему участков
падает доля отработанных тревог, растет время реакции
пересчитать A₀ по формуле (15), пересмотреть контур по главе 29
Четыре вида дрейфа и что каждый требует. Их регулярно путают: падение показателей объясняют деградацией модели, а причина в другом столбце. Классификация видов сдвига распределений разобрана в литературе подробно [41, 42].
Оценить текущую базовую ставку без разметки можно: существует процедура уточнения априорных вероятностей по распределению откликов модели на неразмеченном потоке [40]. Она дает оценку доли положительных без единой новой метки и годится ровно для того, чтобы поймать дрейф и поднять флаг.
python
def estimate_prevalence(scores, pi_train, iters=200, tol=1e-9):
"""scores — откалиброванные при pi_train вероятности; возвращает pi объекта."""
pi = pi_train
for _ in range(iters):
num = []
for s in scores:
a = s * (pi / pi_train)
b = (1 - s) * ((1 - pi) / (1 - pi_train))
num.append(a / (a + b))
new = sum(num) / len(num)
if abs(new - pi) < tol:
break
pi = new
return pi
Оценка базовой ставки на неразмеченном потоке итеративной процедурой уточнения априорных вероятностей [40]. Вход — откалиброванные отклики модели за сутки, выход — оценка доли положительных.глава 33
Что писать в договор вместо процентов
Метрика в приемке — ловушка для обеих сторон, и ловится в нее чаще заказчик
Строчка «recall не ниже 0,95» выглядит защитой заказчика. На деле она защищает исполнителя, потому что не определена: непонятно, на каком материале, в какой единице учета, при каком пороге и при какой доле положительных. Любое из четырех умолчаний позволяет получить нужную цифру, ничего не улучшив.
формулировка
чем плоха
чем заменить
precision не ниже 0,95
зависит от базовой ставки, на объекте будет другой (глава 3)
не более N ложных срабатываний в час на камеру
recall не ниже 0,95
не сказано, в какой единице и на каком материале
recall по событиям на материале объекта, снятом после подписания, объем оговорен
mAP не ниже 0,80
усредняет по режимам, которых в эксплуатации нет (глава 4)
убрать; метрики модели идут в приложение как справочные
точность системы 99 %
на потоке с браком 2 % достигается ответом «годно» на все
убрать; заменить на пару из двух строк выше
срабатывание не позднее 2 секунд
формулировка годная, но нужна перцентиль
задержка от события до уведомления: p95 не более 2 с
Замены для приемочных формулировок. Правая колонка сформулирована в величинах, которые переносимы с теста на объект и проверяемы наблюдением, а не пересчетом.
Пара «recall по событиям» плюс «ложных срабатываний в час» задает рабочую точку однозначно и проверяется за сутки наблюдения на объекте. Такой пункт невозможно выполнить формально: чтобы уложиться в обе строки одновременно, нужно действительно настроить систему, включая логику подтверждения. Именно по этой причине от отчетов в precision отказались там, где качество детекции проверяют всерьез [64].
Единица учета названа в договоре словами: «событие — появление человека без каски в зоне длительностью более 3 секунд».
Материал приемки снят после подписания, на объекте, в тех сменах и при том освещении, в которых система будет работать. Объем и порядок отбора оговорены.
Базовая ставка на материале приемки зафиксирована как факт, а не как требование: если нарушений в записи не оказалось, приемка переносится, а не засчитывается.
Порог на момент приемки зафиксирован; право менять его в эксплуатации оговорено отдельно вместе с обязанностью вести журнал.
Обе стороны понимают, что рабочая точка выбирается из цен заказчика, и цены эти приложены к договору. Изменение цен — основание для пересмотра порога без пересмотра договора.
глава 34
Двенадцать способов обмануть себя
Список ошибок, каждая из которых встречалась в реальных отчетах
Сбалансированный тест. Набор собран поровну из положительных и отрицательных, из него посчитана precision, и она перенесена на объект с долей положительных 2 %. Ошибка в десять раз и больше (глава 3).
Метрика на кадрах, деньги на событиях. Доля 0,25 % ложных срабатываний превращается в 225 тревог в час умножением на частоту кадров (глава 5).
Порог подобран на тестовом наборе и на нем же оценен. Оптимум смещен в пользу шума этой конкретной выборки; нужен третий, отложенный от подбора набор.
Утечка через похожие кадры. Соседние кадры одного ролика попали и в обучение, и в тест. Метрика завышена, и завышена тем сильнее, чем выше частота кадров.
Некалиброванный отклик. Порог 0,3 выставлен по формуле для вероятностей, а модель переуверена — фактическая рабочая точка в другом месте кривой (глава 9).
Цена пропуска посчитана по прямому убытку. Забыты последующие переделы, логистика и разбор возврата; отношение цен занижено на порядок (глава 16).
Цена ложной тревоги посчитана как константа. Не учтено, что при выбранном пороге тревог больше, чем человек способен разобрать (главы 13–15).
Recall модели принят за recall системы. Между ними стоит человек, который на часть тревог не отреагирует, и произведение может быть вдвое меньше (глава 15).
Оптимум найден без ограничений. Порог 0,006 математически верен и физически невыполним при одном контролере (глава 14).
Единый порог на все классы. Дефекты стоят по-разному, разброс оптимальных порогов семикратный (глава 22).
Выигрыш от подтверждения посчитан в предположении независимости кадров. Настоящий выигрыш меньше во столько раз, во сколько кадры похожи (глава 27).
Экономия посчитана без стоимости владения. Обслуживание камер, чистка объективов, переразметка при смене номенклатуры и время инженера на пересмотр порога — все это идет в ту же смету.
глава 35
Границы и программа замеров
Что эта работа не умеет и какие четыре измерения закрыли бы пробелы
Перечислим ограничения прямо, потому что от них зависит, куда этот аппарат тащить можно, а куда нельзя.
Модель риск-нейтральна. Она минимизирует ожидание и ничего не говорит про хвост. Для задач, где один исход способен закрыть предприятие, нужна мера риска, а не среднее (глава 17).
Цены приняты постоянными. Реальная цена пропуска зависит от того, какой это дефект, куда ушла деталь и в каком настроении заказчик; распределение цен заменено его средним.
Убытки складываются линейно. Два пропуска в одной партии стоят дороже двух пропусков в разных, и эта нелинейность не учтена.
Кривая ошибок задана однопараметрической моделью. Реальные ROC-кривые бывают неравнодисперсными, и в области очень малых FPR приближение хуже всего — а именно там стоят оптимумы задач с дорогим пропуском.
Кривая усталости оператора — наша параметризация, а не измеренная зависимость. Направление эффекта в литературе подтверждено, конкретные константы — нет.
Работа ничего не говорит про качество локализации, скорость и стоимость железа. Бюджет FPS и точность — независимые оси, и вторая ось разобрана у нас отдельно.
Что лаборатория собирается измерить
измерение
как
что закрывает
стоимость
Реальная кривая порог — recall — FPR по нашим моделям
прогон детекторов СИЗ и БПЛА на отложенных наборах с сохранением полной таблицы, а не двух точек
снимает бинормальное приближение из всех расчетов, дает интерполяцию вместо модели
день на модель
Калибровочная кривая детектора
разбиение по корзинам уверенности, диаграмма надежности, оценка температуры
проверяет главное условие главы 9 на нашем железе и наших сборках
день
Эффективное число независимых кадров N_eff
час записи потока, автокорреляция отклика отдельно на участках с объектом и без
переводит выигрыш от подтверждения из верхней границы в число (глава 27)
полдня плюс запись
Кривая отклика оператора q(A)
журнал уведомлений и отметок о реакции на пилотном объекте, две-три недели
Программа замеров по этому направлению. Первые три выполняются на своем материале и не требуют заказчика. Четвертый требует пилотного объекта и согласия смотреть на журнал реакции честно — включая случаи, когда уведомления игнорировали.
Порядок такой же, как в предыдущих работах лаборатории: методика написана до измерения намеренно. Методика, придуманная после знакомства с числами, всегда объясняет ровно эти числа. После прогонов расчетные таблицы этой работы останутся на месте, а измеренные встанут рядом с ними для сравнения.
Метрика без цены — это мнение. Цена без метрики — это смета без основания. Вместе они дают порог, и порог этот стоит в конфигурационном файле, а не в презентации.
заключение
приложение А
Глоссарий
Термины, которые в тексте используются без расшифровки.
базовая ставка
Доля положительных случаев в потоке: брака в партии, нарушений в проходах, дронов в кадрах. Обозначается π. Величина эксплуатационная и меняется от цеха к цеху, от смены к смене и от сезона к сезону; на тестовом наборе она почти всегда другая.
precision
Доля верных срабатываний среди всех срабатываний. Зависит от базовой ставки, поэтому число, снятое на тестовом наборе, не переносится на объект без пересчета.
recall
Доля найденных объектов среди всех присутствовавших. От базовой ставки не зависит, поэтому переносится с теста на объект напрямую — при условии, что сами объекты выглядят так же.
FPR
Доля ложных срабатываний среди отрицательных случаев. Эксплуатационно удобнее, чем precision, потому что переводится в ложные тревоги в час умножением на поток.
c_FP, c_FN
Цена ложной тревоги и цена пропуска в рублях, приведенные к одной единице учета. Обе величины — свойства процесса заказчика, а не модели.
функция потерь
Сумма всех четырех видов исходов, взвешенных ценами, за выбранный период. Единица измерения — рубли за смену или рубли на тысячу единиц.
оптимальный порог
Значение порога уверенности, при котором функция потерь минимальна. Для калиброванной модели считается из одних цен и не зависит ни от базовой ставки, ни от качества модели.
калибровка
Свойство модели, при котором объекты с уверенностью 0,3 оказываются верными в 30 % случаев. Без калибровки порог остается номером на шкале и в деньги не переводится.
d′ (различимость)
Расстояние между распределениями отклика на положительных и отрицательных примерах в единицах стандартного отклонения. Один параметр, задающий всю ROC-кривую в равнодисперсной модели.
изокоста
Линия равного убытка в координатах ROC. Наклон задан отношением цен и базовой ставкой; оптимальная рабочая точка — та, где изокоста касается кривой.
зона безразличия
Диапазон порогов, в котором убыток отличается от минимального не более чем на заданную долю. Практический ответ на вопрос, с какой точностью надо подбирать порог.
регрет
Переплата за неверно выбранный порог: разность между фактическим убытком и минимально возможным. Позволяет оценить цену ошибки в оценке цены ошибки.
правило Чоу
Классическое решение задачи с отказом: вместо одного порога вводится два, между ними система не решает и передает случай человеку. Оптимальная ширина зоны отказа считается из цены этой передачи.
cry-wolf
Падение реакции человека на сигнал по мере роста доли ложных тревог. Наблюдаемый и измеренный в эргономике эффект, из-за которого линейная модель цены ложной тревоги перестает работать.
правило kp
Правило Деминга о сплошном контроле: при доле брака ниже отношения цены проверки к цене пропуска контролировать невыгодно вовсе, выше — надо контролировать все. Машина добавляет к этой развилке третий вариант.
единица учета
То, что считается одним случаем: кадр, объект в кадре, деталь, трек, событие, смена. Все цены и все метрики обязаны быть приведены к одной единице, иначе смета врет на порядок.
N_eff
Эффективное число независимых наблюдений в окне подтверждения. У видеопотока оно меньше числа кадров, потому что соседние кадры похожи; величина измеряется, а не назначается.
теневая цена
Сколько рублей убытка снимает ослабление ограничения на единицу: например, насколько дешевле становится смена от второго контролера. Сравнивается с ценой этого ослабления напрямую.
приложение Б
Литература
Только первоисточники, каждый открывается по DOI или на arXiv. Единственное исключение — материалы производителей железа, они помечены прямо в позиции: независимых замеров по этим системам в открытом доступе нет.
[29]Platt J. Probabilistic Outputs for Support Vector Machines and Comparisons to Regularized Likelihood Methods. Advances in Large Margin Classifiers, MIT Press, 1999, 61–74.
[35]Kuppers F., Kronenberger J., Shantia A., Haselhoff A. Multivariate Confidence Calibration for Object Detection. Proceedings of CVPR Workshops, 2020.
[67]Deming W. E. Out of the Crisis. MIT Center for Advanced Engineering Study, 1986 (книга; правило kp о сплошном контроле).
[68]Juran J. M., Godfrey A. B. (eds.) Juran's Quality Handbook. 5th ed. McGraw-Hill, 1999 (книга).
[69]Taguchi G. Introduction to Quality Engineering: Designing Quality into Products and Processes. Asian Productivity Organization, 1986 (книга; квадратичная функция потерь качества).
[70]Campanella J. (ed.) Principles of Quality Costs: Principles, Implementation and Use. 3rd ed. ASQ Quality Press, 1999 (книга; модель PAF).
[71]Dodge H. F., Romig H. G. Sampling Inspection Tables: Single and Double Sampling. 2nd ed. John Wiley & Sons, 1959 (книга).
[72]ГОСТ Р ИСО 2859-1-2007. Статистические методы. Процедуры выборочного контроля по альтернативному признаку. Часть 1: Планы выборочного контроля последовательных партий на основе приемлемого уровня качества (национальный стандарт).
[77]Кодекс Российской Федерации об административных правонарушениях, статья 5.27.1, часть 4 (необеспечение работников средствами индивидуальной защиты) — нормативный акт.
[78]Heinrich H. W. Industrial Accident Prevention: A Scientific Approach. McGraw-Hill, 1931 (книга) и критический разбор: Manuele F. A. Reviewing Heinrich: Dislodging Two Myths From the Practice of Safety. Professional Safety, 2011, 56(10), 52–61.
[80]Sculley D., Holt G., Golovin D. et al. Hidden Technical Debt in Machine Learning Systems. Advances in Neural Information Processing Systems, 2015, 2503–2511.
границы
Полевой проверки порога на объекте у лаборатории нет: пост контроля по литейной задаче не построен, пилота по СИЗ с журналом реакции оператора не было. Измеренного в работе три набора величин, и все три взяты из наших прошлых прогонов: метрики детектора БПЛА на отложенном тесте из 2 200 изображений, метрики детекторов касок на двух сборках датасета и метрики учебного детектора дефектов литья. Все цены во всех разборах — иллюстративные наборы для демонстрации структуры расчета, и в каждой таблице это сказано; в проекте они заполняются по маршрутной карте и журналам заказчика. Кривая отклика оператора на поток тревог — наша параметризация: направление эффекта в литературе подтверждено, конкретные константы не измерены никем и подставлены нами. Модель риск-нейтральна, цены в ней постоянны, убытки складываются линейно, а кривая ошибок задана однопараметрическим приближением, которое хуже всего работает в области очень малых ложноположительных — то есть ровно там, где стоят оптимумы задач с дорогим пропуском. О скорости, железе и стоимости инференса работа не говорит ничего: это независимая ось, и она разобрана отдельно.
журнал
Что происходило по направлению
16.08.2026
Направление открыто. Выписана функция убытка от порога уверенности, выведен оптимальный порог через отношение цен и сформулирована обратная задача: какую цену пропуска подразумевает уже выставленный порог. Зафиксирован результат, вокруг которого построена вся работа: фабричные 0,5 означают равенство цен, фабричные 0,25 — соотношение три к одному, тогда как разобранная литейная задача требует 168 к одному.
16.08.2026
Разобрана форма кривой убытка. Зона отклонения на пять процентов оказалась шириной в три раза по порогу, ошибка в оценке цены вдвое стоит 7 % убытка, в десять раз — 56 %, отказ от оценки — 457 %. Посчитано сравнение двух стратегий улучшения: перестановка порога на существующей модели дает вдвое больше, чем рост различимости на целую ступень при фабричном пороге.
16.08.2026
Разделены два режима работы человека в контуре. Для режима сервера задача решена как условный экстремум с ограничением по пропускной способности поста и посчитана теневая цена второго контролера: 4 446 ₽ за смену при зарплате 6 000 ₽, то есть второго брать не надо. Для режима наблюдателя введена модель падения реакции на поток тревог; оптимум уезжает с 0,010 на 0,358, а убыток растет вшестеро. Параметризация помечена как наша и неизмеренная.
16.08.2026
Сделаны три разбора: отбраковка литья со сметой поста по четырем конфигурациям, контроль СИЗ с переводом разрыва доменов в рубли (12 182 ₽ за смену между двумя нашими сборками датасета на чужом объекте) и детекция БПЛА с арифметикой редкого события. Опубликованы калькулятор порога и стенд логики подтверждения, написаны опросник для сбора цен и программа из четырех замеров.