Функция потерь — договор между задачей и алгоритмом. Иногда она выводится из вероятностной модели наблюдений, иногда кодирует цену будущего действия. Минимизировать удобную формулу можно только после ответа: какую ошибку она считает дорогой?

Две ошибки пожарной сигнализации

Система решает, эвакуировать ли здание. Ложная тревога останавливает работу, но пропуск пожара угрожает людям. Accuracy считает обе ошибки одинаковыми:

0/1(a,y)=1{ay}.\ell_{0/1}(a,y)=\mathbf1\{a\ne y\}.

Эта формула молча утверждает, что остановить конвейер на два часа и не заметить дым — одно и то же событие, стоящее одну единицу. Ни один пожарный инспектор такого договора не подпишет. Матрица потерь различает действия:

y=0y=1a=0010000a=1200\begin{array}{c|cc} &y=0&y=1\\ \hline a=0&0&10000\\ a=1&20&0 \end{array}

Здесь a=1a=1 — эвакуация, y=1y=1 — пожар, числа — условные единицы ущерба. Если модель оценивает p=P(y=1x)p=P(y=1\mid x), ожидаемые потери двух действий:

R(0x)=10000p,R(1x)=20(1p).R(0\mid x)=10000\,p,\qquad R(1\mid x)=20\,(1-p).

Эвакуация выгоднее, как только 10000p>20(1p)10000p>20(1-p), то есть при

p>p=2020+10000=0,0019960,002.p>p^*=\frac{20}{20+10000}=0{,}001996\approx 0{,}002 .

Две тысячных. Порог возник из цены решений, а не из симметричного числа 0,50{,}5, и он в двести пятьдесят раз меньше привычной середины. Модель при этом ни разу не переобучалась: изменилась только бухгалтерия.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
График ожидаемой потери двух действий по вероятности события: красная прямая 10000p растёт, синяя 20(1-p) почти горизонтальна, они пересекаются в точке 0,002, вертикальная золотая штриховая линия отмечает порог
Рис. 57.1. Одна вероятность, два действия

По оси xx — прогноз pp, по оси yy — условный риск. Красная линия пропуска растёт как 10000p10000p, синяя линия эвакуации падает как 20(1p)20(1-p). Нижняя огибающая (серая) выбирает действие; вертикаль в точке пересечения показывает порог p=0,0020p^*=0{,}0020. Слева от неё выгодно ждать, справа — эвакуировать.

Общая матрица и правило выбора действия

Пусть действий a{0,1}a\in\{0,1\}, а цены ошибок обозначены cFPc_{FP} (ложная тревога) и cFNc_{FN} (пропуск). Верные решения условимся считать бесплатными. Тогда

R(0x)=cFNp,R(1x)=cFP(1p),R(0\mid x)=c_{FN}\,p,\qquad R(1\mid x)=c_{FP}\,(1-p),

и точка безразличия находится из cFNp=cFP(1p)c_{FN}p=c_{FP}(1-p):

p=cFPcFP+cFN.p^*=\frac{c_{FP}}{c_{FP}+c_{FN}} .

Формула читается словами: порог — это доля цены ложной тревоги в сумме цен двух ошибок. Удвойте стоимость ложной тревоги — порог поднимется, система станет осторожнее объявлять тревогу. Удесятерите цену пропуска — порог упадёт. Заметьте, что в формулу не вошли ни базовая частота события, ни объём выборки, ни архитектура модели: вся частотная информация уже упакована в pp.

Потеря из вероятностной модели

Матрица цен приходит из предметной области. Но откуда берётся сама потеря, по которой мы обучаем? Пусть модель задаёт условную плотность pθ(yx)p_\theta(y\mid x). Максимизация правдоподобия из урока 45 эквивалентна минимизации среднего отрицательного логарифма:

θ^=argminθ  1ni=1nlogpθ(yixi).\widehat\theta= \arg\min_\theta\; -\frac1n\sum_{i=1}^n\log p_\theta(y_i\mid x_i).

Для нормального ответа с постоянной дисперсией σ2\sigma^2

logpθ(yx)=(yfθ(x))22σ2+log2πσ2,-\log p_\theta(y\mid x)=\frac{(y-f_\theta(x))^2}{2\sigma^2}+\log\sqrt{2\pi\sigma^2},

и минимизация по θ\theta сводится к сумме квадратов — так была выведена линейная регрессия. Для Бернулли получается бинарная кросс-энтропия:

(p,y)=ylogp(1y)log(1p).\ell(p,y)=-y\log p-(1-y)\log(1-p).

Log-loss жёстко штрафует уверенную ошибку: при y=1y=1 прогноз p=0,001p=0{,}001 стоит log0,0016,91-\log 0{,}001\approx6{,}91, а p=0,4p=0{,}4 — лишь 0,920{,}92. Разница в семь с половиной раз — это и есть цена самоуверенности.

Вальд перевернул привычную оптику: не «какая оценка правильная», а «какое решающее правило дешевле в среднем». Всё, что мы делаем в этом уроке, — школьный пересказ этой мысли на языке классификаторов.

Правило оценивания, которому выгодна честность

Предположим, синоптик знает истинную вероятность дождя pp, но сообщает число qq. Какая метрика заставит его сказать правду? Для log-loss ожидаемая потеря

E(q,Y)=plogq(1p)log(1q).\mathbb E\,\ell(q,Y)=-p\log q-(1-p)\log(1-q).

Производная по qq равна p/q+(1p)/(1q)-p/q+(1-p)/(1-q); приравняв её нулю, получаем q=pq=p. Для Brier score (qy)2(q-y)^2

E(qY)2=p(1q)2+(1p)q2,\mathbb E\,(q-Y)^2=p(1-q)^2+(1-p)q^2,

производная 2p(1q)+2(1p)q=2(qp)-2p(1-q)+2(1-p)q=2(q-p) обращается в нуль там же. А вот средний модуль ошибки

EqY=p(1q)+(1p)q=p+q(12p)\mathbb E\,|q-Y|=p(1-q)+(1-p)q=p+q(1-2p)

линеен по qq: при p>1/2p>1/2 он падает до самого края, и честному синоптику выгодно кричать «дождь наверняка».

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Три кривые ожидаемой потери по объявленной вероятности при истинном p равном 0,7: log-loss и Brier имеют минимум ровно в 0,7, средний модуль монотонно убывает к правому краю
Рис. 57.2. Честность выгодна не всякой метрике

Истина p=0,7p=0{,}7 (золотая вертикаль). Log-loss и Brier достигают минимума ровно в точке q=0,7q=0{,}7: значения 0,6110{,}611 и 0,2100{,}210 соответственно. Средний модуль qy|q-y| — прямая, её минимум прижат к q=1q=1: метрика вознаграждает не знание, а громкость. Именно поэтому «доля верных ответов» плохо годится как обучающая цель для вероятностей.

Ченцов: почему логарифм здесь не случаен

Кажется, что строго proper правил бесконечно много (так и есть) и выбор между ними — дело вкуса. Советский математик Николай Николаевич Ченцов (1930–1992) показал, что у семейств распределений есть собственная геометрия, и она почти жёстко фиксирована. В книге «Статистические решающие правила и оптимальные выводы» (1972) он ввёл категорию статистических задач, в которой морфизмами служат марковские отображения — переходы к достаточным статистикам и огрублениям данных.

Смысл теоремы для нас прикладной. Если потребовать, чтобы мера расхождения между распределениями не зависела от того, в каких единицах и с какой детализацией записаны данные, то допустимый выбор сжимается почти до одной точки: информации Фишера из урока 46 и порождаемой ею дивергенции Кульбака — Лейблера, чьей выборочной версией и является log-loss. Логарифм в кросс-энтропии — не эстетическое предпочтение, а следствие требования инвариантности.

Почему 0/1-потеря неудобна обучению

Для линейного score s(x)s(x) и метки y{1,+1}y\in\{-1,+1\} ошибка записывается как

1{ys(x)0},\mathbf1\{y\,s(x)\le 0\},

ступенчатая функция отступа m=ysm=ys. Она почти всюду имеет нулевую производную, а в нуле — разрыв. Малое улучшение неверного score не меняет потерю до самого пересечения границы, поэтому градиентный метод из урока 22 не получает никакого направления. Более того, минимизация 0/1-потери по линейным правилам — NP-трудная задача в общем случае.

Используют суррогаты — выпуклые функции отступа:

log(m)=log(1+em),hinge(m)=max(0,1m),exp(m)=em.\ell_{\log}(m)=\log\left(1+e^{-m}\right),\qquad \ell_{\text{hinge}}(m)=\max(0,1-m),\qquad \ell_{\exp}(m)=e^{-m}.

Все три в нуле равны единице (после нормировки логистической на log2\log 2) и мажорируют ступеньку, поэтому их минимизация ограничивает сверху долю ошибок. При этом они поощряют запас: точка, классифицированная верно с отступом m=2m=2, всё ещё стоит log(1+e2)0,127\log(1+e^{-2})\approx0{,}127 ната — есть куда улучшаться. На рис. 57.3 логистическая кривая нормирована делением на log2\log 2, поэтому там та же точка читается как 0,1830{,}183; содержательно это одна и та же величина в других единицах.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Четыре кривые потери по отступу m: чёрная ступенька, синяя логистическая, зелёный hinge, красная экспонента; область отрицательных m подсвечена как ошибка
Рис. 57.3. Ступенька и три суррогата

По оси xx — правильный отступ m=ys(x)m=y\,s(x): отрицательные значения означают ошибку. Ступенька 0/1 не даёт градиента. Логистическая плавно убывает и никогда не обнуляется, hinge становится нулём сразу после m=1m=1, экспонента при m=2m=-2 стоит 7,397{,}39 и потому особенно свирепа к уверенным ошибкам — на этом свойстве построен AdaBoost, но оно же делает её чувствительной к выбросам разметки.

Лаборатория цены

Порог из прайс-листа: модель не меняется, решение — меняется

Загружается живая иллюстрация…

Список оценок модели здесь зафиксирован раз и навсегда. Сначала не трогайте калибровку и двигайте только два ползунка цены: зелёная штриховая линия теоретического порога cFP/(cFP+cFN)c_{FP}/(c_{FP}+c_{FN}) поедет вдоль оси, а красная точка эмпирического минимума будет ехать вместе с ней. Ни один вес не переобучался — переписался прайс-лист.

Затем поставьте порог вручную на 0,50{,}5 и посмотрите, сколько это стоит при несимметричных ценах. Наконец переключите калибровку на «занижает» или «завышает»: AUC не изменится ни в одном знаке — порядок объектов монотонное преобразование не трогает, — а цена при теоретическом пороге вырастет. Ранжирование и решение по деньгам — разные способности модели.

Реальный спам: три прайс-листа — три порога

Возьмём коллекцию SMS Spam Collection: 55725572 сообщения, из них 747747 спама, доля спама 0,1340{,}134. Разделим её на обучение и тест в отношении 70:3070{:}30 и обучим логистическую регрессию на бинарных признаках слов. На тесте из 16721672 сообщений (в нём 224224 спама) при пороге 0,50{,}5 получается 22 ложные блокировки и 3030 пропусков — accuracy 0,9810{,}981 при том, что «объявить всё не спамом» даёт 0,8660{,}866.

Теперь переведём ошибки в деньги. При симметричных ценах 1:11{:}1 оптимален порог 0,2240{,}224 со счётом 2424 единицы, тогда как привычные 0,50{,}5 стоят 3232. Если блокировка настоящего письма в двадцать раз дороже пропуска спама (20:120{:}1), оптимум уезжает к 0,7680{,}768: счёт 4141 против 7070 при 0,50{,}5 — переплата 2929 единиц. Если наоборот, пропуск дороже в двадцать раз (1:201{:}20), оптимальный порог падает до 0,0690{,}069 со счётом 186186, а порог 0,50{,}5 обходится в 602602 — в 3,23{,}2 раза дороже.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Три ступенчатые кривые суммарной стоимости ошибок по порогу на реальных SMS: зелёная с минимумом около 0,07, синяя около 0,22, красная около 0,77, вертикальная золотая штриховая линия отмечает порог 0,5
Рис. 57.4. Реальный SMS-спам: три прайс-листа — три оптимума

Одна и та же обученная модель, один и тот же тест. Меняется только прайс-лист, и минимум суммарной стоимости переезжает с 0,070{,}07 на 0,220{,}22 и далее на 0,770{,}77. Золотая вертикаль — «привычные 0,50{,}5»: она не совпадает ни с одним из трёх оптимумов. Ступеньки на кривых — это отдельные сообщения, меняющие сторону порога.

Калибровка отделима от ранжирования

Возьмём те же вероятности и монотонно исказим их: q=p3q=p^3. Порядок объектов не изменился ни на одну пару, поэтому AUC остался равен 0,98520{,}9852 — совпадение до двенадцатого знака. Но взвешенная ошибка калибровки выросла с 0,01240{,}0124 до 0,03120{,}0312, а главное — сломалось решение. При прайс-листе 20:120{:}1 теория предписывает порог 20/210,95220/21\approx0{,}952; на честных вероятностях он стоит 7979 единиц, на искажённых — 118118. Тот же ранжировщик, та же таблица цен, счёт хуже в полтора раза.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Слева диаграмма надёжности: синяя ломаная честных вероятностей и красная ломаная искажённых относительно диагонали; справа четыре столбца — одинаковые AUC и разная стоимость решений
Рис. 57.5. Порядок тот же, счёт другой

Слева — диаграмма надёжности по десяти корзинам. Честная модель на реальном спаме держится вблизи диагонали в населённых корзинах (взвешенная ошибка 0,0120{,}012), в редких средних корзинах она даже занижает вероятность спама. Искажение p3p^3 отжимает всю красную ломаную вверх. Справа: AUC у обеих версий одинаков до четвёртого знака, а стоимость решений при одном и том же теоретическом пороге — 7979 против 118118.

Отсюда практическое разделение обязанностей. Сначала оценивается P(yx)P(y\mid x) и проверяется калибровка — теми же приёмами, что и в уроке 31. Затем минимизируется условный риск по актуальной матрице цен. Одна калиброванная модель обслуживает и дешёвый скрининг с низким порогом, и рискованное вмешательство с высоким. Если же обучать отдельный классификатор под каждый текущий порог, изменение цены потребует нового обучения и затруднит аудит.

Квадрат, модуль и квантиль

В регрессии выбор потери — это выбор того, какую характеристику условного распределения оценивает модель. Минимум

E[(Ya)2X=x]\mathbb E\left[(Y-a)^2\mid X=x\right]

достигается в условном среднем E[YX=x]\mathbb E[Y\mid X=x], минимум E[YaX=x]\mathbb E[|Y-a|\mid X=x] — в условной медиане, а pinball-потеря

ρτ(u)=u(τ1{u<0}),u=yq,\rho_\tau(u)=u\left(\tau-\mathbf1\{u<0\}\right),\qquad u=y-q,

даёт условный квантиль уровня τ\tau. Проверим на реальных данных. Возьмём велопрокат и один срез: восемь утра рабочего дня, 496496 таких часов за два года. Спрос в этом срезе колеблется от 3131 до 839839 поездок; среднее 477,0477{,}0, медиана 463463, квантиль уровня 0,90{,}9 равен 719719.

Численная минимизация трёх потерь по константе даёт 476,8476{,}8, 462,4462{,}4 и 718,6718{,}6 — с точностью до шага сетки ровно среднее, медиану и квантиль. Ниже среднего лежит 53,6%53{,}6\% дней, ниже квантиля 0,90{,}990,3%90{,}3\%: определения работают буквально.

qEρτ(Yq)=τP(Y>q)+(1τ)P(Y<q)=0    P(Y<q)=τ.\frac{\partial}{\partial q}\,\mathbb E\rho_\tau(Y-q)= -\tau P(Y>q)+(1-\tau)P(Y<q)=0 \;\Longleftrightarrow\; P(Y<q)=\tau .
Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Сверху гистограмма реального спроса велопроката в 8 утра рабочего дня с вертикальными линиями среднего 477, медианы 463 и квантиля 719; снизу три нормированные кривые потери с минимумами в этих точках
Рис. 57.6. Разные потери выбирают разные точки распределения

Реальный спрос двугорб: рабочие дни зимой и летом образуют разные скопления. Среднее и медиана оказываются рядом (477477 и 463463), а квантиль 0,90{,}9 уходит на 719719 — в полтора раза выше. Нижняя панель: минимумы нормированных потерь стоят точно под соответствующими вертикалями. Модельный класс один и тот же — константа; смысл прогноза задаёт исключительно выбор потери.

Задача газетчика: от цены к квантилю

Пусть нехватка одной единицы товара стоит cuc_u (упущенная прибыль), а лишняя единица — coc_o (хранение). Ожидаемая суточная стоимость запаса qq

E[cumax(Yq,0)+comax(qY,0)]\mathbb E\left[c_u\max(Y-q,0)+c_o\max(q-Y,0)\right]

пропорциональна Eρτ(Yq)\mathbb E\rho_\tau(Y-q) при

τ=cucu+co,\tau=\frac{c_u}{c_u+c_o},

то есть оптимальный запас — квантиль этого уровня. Классический результат теории запасов, ровно того же вида, что и порог pp^* для классификации.

Возьмём наш велопрокат: недостача велосипеда стоит 99 рублей упущенной выручки, лишний велосипед — 11 рубль обслуживания. Тогда τ=9/10=0,9\tau=9/10=0{,}9 и оптимальный парк на этот час равен 719719 машинам. Проверим деньгами: средняя суточная стоимость при запасе «по среднему» (477477) равна 766,8766{,}8 рубля, при запасе по медиане — 820,1820{,}1, а при квантиле 0,90{,}9286,4286{,}4. Экономия относительно «разумного среднего» составляет 480,4480{,}4 рубля в день: расход падает в 2,72{,}7 раза.

Редкий класс: веса, focal и что они портят

Если мошенничество составляет 0,1%0{,}1\%, классификатор «всегда честно» получает 99,9%99{,}9\% accuracy. Стандартные приёмы: взвешенная потеря

w=w1y(p,1)+w0(1y)(p,0),\ell_w=w_1\,y\,\ell(p,1)+w_0\,(1-y)\,\ell(p,0),

focal loss (1p)γlogp-(1-p)^\gamma\log p, гасящая вклад уже лёгких примеров, и resampling, меняющий частоты в обучении.

Все три изменяют не только границу, но и шкалу. Модель, обученная на искусственно сбалансированных данных, видит другой prior, и её вероятности систематически завышены. Связь известна: если обучающая доля положительных π\pi' отличается от истинной π\pi, то в шансах

p1p=p1pπ1π1ππ,\frac{p}{1-p}=\frac{p'}{1-p'}\cdot \frac{\pi}{1-\pi}\cdot\frac{1-\pi'}{\pi'} ,

и после обучения нужно вернуть реальную базовую долю или калибровать на репрезентативной выборке — ровно тот же приём, что и в порождающей классификации.

PR-AUC часто информативнее ROC-AUC для редкого класса, потому что precision непосредственно реагирует на число ложных тревог, а доля ложноположительных в знаменателе ROC разбавлена огромным отрицательным классом. Но итоговая метрика всё равно должна быть переведена в поток решений: сколько проверок в день и сколько пропусков.

Потери для ранжирования

Иногда системе не нужна абсолютная вероятность: важно поставить релевантный документ выше нерелевантного. Pairwise-потеря сравнивает пару (i,j)(i,j) и штрафует случай, когда score хорошего объекта не выше:

pair=log(1+e(sisj)).\ell_{\text{pair}}=\log\left(1+e^{-(s_i-s_j)}\right).

Это та же логистическая функция, но от разности оценок, поэтому она инвариантна к сдвигу всей шкалы — и, как следствие, не даёт калиброванных чисел. Listwise-методы учитывают целый список и позиции: полезность первых трёх мест выше полезности сотого, поэтому NDCG дисконтирует низкие позиции весом 1/log2(1+позиция)1/\log_2(1+\text{позиция}).

Обучающий суррогат, offline-метрика ранжирования и online-действие пользователя образуют три разных слоя, которые нельзя выдавать за одну цель. Пары к тому же собираются не нейтрально: если считать положительными только клики, позиция прежней системы влияет на метку — документы ниже почти не имели шанса быть замеченными. Нужен экспериментальный показ, propensity-коррекция или осторожная модель наблюдения, иначе оптимизируется воспроизведение старого порядка.

Истинный риск и его выборочная замена

Для решающего правила ff истинный риск

R(f)=E(X,Y)P  (f(X),Y)R(f)=\mathbb E_{(X,Y)\sim P}\;\ell(f(X),Y)

усредняет потерю по будущему распределению. Мы не знаем PP и заменяем ожидание выборочным средним:

R^n(f)=1ni=1n(f(xi),yi).\widehat R_n(f)=\frac1n\sum_{i=1}^n\ell(f(x_i),y_i).

При фиксированном ff это несмещённая оценка, и закон больших чисел из урока 41 обещает сходимость. Но если то же ff выбрано по этой же выборке, оценка становится оптимистичной — почему именно и насколько, разберёт урок 58.

Полезно раскладывать риск на управляемые части. Для квадратичной потери

E[(Yf(X))2]=E[(f(X)m(X))2]+E[Var(YX)],\mathbb E\left[(Y-f(X))^2\right]= \mathbb E\left[(f(X)-m(X))^2\right]+\mathbb E\left[\mathrm{Var}(Y\mid X)\right],

где m(x)=E[YX=x]m(x)=\mathbb E[Y\mid X=x]. Второе слагаемое — неустранимый шум: никакая модель его не уменьшит. Первое — то, за что отвечает обучение. Аналогичное разложение существует и для log-loss: избыточная потеря относительно идеального предсказателя равна средней дивергенции Кульбака — Лейблера между истинным условным распределением и предсказанным.

Когда цена недифференцируема

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

Рабочая схема состоит из трёх этажей. Обучаем по гладкому суррогату (кросс-энтропия), получая вероятности. Проверяем калибровку. И только затем решаем задачу распределения ресурса: отсортировать объекты по убыванию ожидаемой выгоды cFNpicFP(1pi)c_{FN}p_i-c_{FP}(1-p_i) и брать сверху, пока не кончится квота. Такое правило совпадает с пороговым, если квота не связывает, и автоматически превращается в «порог по ёмкости лаборатории», если связывает.

Спор не с оптимизатором

Потеря — не техническая деталь оптимизатора, а место, где задача сообщает алгоритму свои ценности. Из вероятностной модели она выводится через минус логарифм правдоподобия; из прикладной постановки — через матрицу цен, и тогда порог решения равен cFP/(cFP+cFN)c_{FP}/(c_{FP}+c_{FN}), а не 0,50{,}5. Строго proper правила делают честность выгодной, теорема Ченцова объясняет, почему среди них логарифм занимает особое место, а суррогаты отступа существуют лишь потому, что у ступеньки нет градиента.

В регрессии выбор потери — это выбор точки распределения: квадрат даёт среднее, модуль — медиану, pinball — квантиль, и на реальном велопрокате разница между средним и квантилем 0,90{,}9 составила 242242 поездки и 480480 рублей в день. Разделяйте три вещи: чем обучаете, что измеряете и что делаете. Спорить, как мы видели, нужно не с оптимизатором, а с прайс-листом.

Задачи