Редактирование и deepfake используют те же генеративные механизмы, что реставрация старых плёнок и кино. Безопасность начинается не с одного детектора, а с честного вопроса: кто меняет файл, что известно проверяющему, насколько редка подделка и что произойдёт после ошибки. Одно число на выходе классификатора не отвечает ни на один из этих вопросов.

Улика, которой почти нет

Представьте редакцию, куда приходит видео. Оно выглядит настоящим. Редактор загружает его в детектор, тот выдаёт 0,830{,}83. Что дальше? Если считать это вероятностью подделки, придётся объяснить, откуда взялась вероятность: на каких файлах детектор учили, что случилось с файлом по дороге, часто ли вообще в этом потоке встречаются подделки. Мы весь урок будем разбирать, как из числа 0,830{,}83 получить осмысленное действие — и почему чаще всего правильное действие звучит «нужна проверка», а не «фейк».

Все опыты этого урока проведены на одном настоящем снимке — той самой фотографии енота из урока о зрительной коре, 576×768576\times768 пикселей. Мы не берём готовый deepfake-датасет: он был бы для школьного класса и тяжёл, и юридически неудобен. Вместо этого мы честно берём реальное изображение и применяем к нему три реальных обрабатывающих конвейера, каждый из которых оставляет тот же тип следа, что и настоящие генеративные модели. Это модельный эксперимент — но каждое число в нём измерено, а не придумано.

Маска задаёт, что можно изменить

Начнём с редактирования. Пусть xx — изображение, а m{0,1}H×Wm\in\{0,1\}^{H\times W} равна единице в редактируемой области. Результат x^\widehat x обязан сохранять известную часть:

(1m)x^=(1m)x,(1-m)\odot\widehat x=(1-m)\odot x ,

а внутри маски — соответствовать условию cc (текстовому запросу, образцу) и контексту. В диффузионном inpainting из урока 86 это условие реализуется буквально: на каждом обратном шаге известные пиксели подмешиваются из зашумлённого оригинала,

xt1    mx^t1+(1m)qt(x),x_{t-1}\;\leftarrow\;m\odot\widehat x_{t-1}+(1-m)\odot q_t(x),

где qt(x)q_t(x) — оригинал, зашумлённый до уровня tt. Модель «дорисовывает» только дырку, всё остальное приходит из исходника.

Маска — это контракт. И, как всякий контракт, он нарушается в мелком шрифте. Ни один реальный редактор не пользуется жёсткой единичной маской: край подделки был бы виден как ножницами вырезанный. Вместо mm берут мягкую версию α=Gσm\alpha=G_\sigma * m (размытие гауссианой) и склеивают

x^=αg+(1α)x,\widehat x=\alpha\odot g+(1-\alpha)\odot x ,

где gg — сгенерированное содержимое. Мягкий край выходит за границу mm ровно на несколько σ\sigma. А затем поверх всего кадра прогоняют «гармонизацию» — чуть подтягивают яркость и цвет, чтобы вставка не выделялась. Гармонизация не знает про маску: она трогает каждый пиксель.

Что показывает карта разностей

Мы проделали это на снимке: маска — эллипс, занимающий 4,5%4{,}5\% пикселей; заполнение — сдвинутый фрагмент того же кадра; перьевание — гауссиана с σ=6\sigma=6; гармонизация — умножение на 1,0081{,}008 и сдвиг на 0,0040{,}004. Дальше просто считаем карту d=maxcx^cxcd=\max_c|\widehat x_c-x_c|.

Перьевание само по себе изменило 1,5%1{,}5\% пикселей вне маски — но эти полтора процента лежат не где попало: в девятипиксельной полосе сразу за контуром изменены 98,2%98{,}2\% пикселей, а максимальное отклонение вне маски достигает 76,476{,}4 уровня яркости из 255255. Это не «шум округления», это видимая правка за пределами заявленной области. После гармонизации хотя бы на один уровень отличаются 99,8%99{,}8\% пикселей вне маски.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Четыре панели: исходная фотография енота, белый эллипс маски на чёрном фоне, отредактированный снимок и карта модуля разности, где яркое пятно совпадает с маской, а зелёный контур маски показывает утечку правки наружу
Рис. 87.1. Маска, результат правки и карта разностей на настоящем снимке

Маска занимает 4,5%4{,}5\% кадра, но вне её контура изменено 99,8%99{,}8\% пикселей. Карта разностей усилена в шесть раз: снаружи изменения почти невидимы глазу и при этом прекрасно измеримы. Зелёный контур — заявленная граница правки.

Личность и всё остальное

Замена лица устроена как разделение признаков. Из кадра-донора берут личность, из кадра-приёмника — позу, свет и мимику:

zid=Eid(xA),zattr=Eattr(xB),x^=G(zid,zattr).z_{\mathrm{id}}=E_{\mathrm{id}}(x_A),\qquad z_{\mathrm{attr}}=E_{\mathrm{attr}}(x_B),\qquad \widehat x=G\bigl(z_{\mathrm{id}},z_{\mathrm{attr}}\bigr).

Разделение всегда неполно: кодировщик личности хранит и возраст, и освещение, кодировщик атрибутов — черты лица. Проверяют результат косинусной близостью в пространстве системы распознавания,

cos(f(x^),f(xA))=f(x^),f(xA)f(x^)f(xA),\cos\bigl(f(\widehat x),f(x_A)\bigr) =\frac{\langle f(\widehat x),f(x_A)\rangle}{\|f(\widehat x)\|\,\|f(x_A)\|},

но это лишь означает, что обманута конкретная модель ff — та же логика, что в уроке об атаках. Никакой «художественной души» перенос стиля не переносит: он согласует статистики признаков. Этическая часть от этого не становится проще. Любое использование узнаваемого человека требует согласия и понимания, где это будет распространяться.

Юм писал о чудесах, но сформулировал принцип, к которому мы вернёмся дважды: вес свидетельства нужно сравнивать не с самим собой, а с тем, насколько удивительно утверждение. Редкая подделка — это и есть «чудо» в его смысле.

След генератора живёт в спектре

Теперь — детекция. Возьмём три конвейера, каждый из которых реально встречается внутри генеративных моделей:

  • апсемплинг ×2 — уменьшение вдвое и бикубическое возвращение к исходному размеру (декодеры почти всех генеративных архитектур собирают картинку из низкого разрешения);
  • сглаживание + зерно — гауссово размытие с σ=0,9\sigma=0{,}9 и добавка нормального шума с σ=0,012\sigma=0{,}012 (декодер сглаживает, поверх кладут синтетическую «плёнку»);
  • перерезкость — нерезкое маскирование с весом 0,90{,}9 (пайплайны часто подкручивают высокие частоты, чтобы выглядело «чётко»).

Все три меняют не содержание, а статистику частот. Признаком возьмём радиальный спектр мощности: для фрагмента 64×6464\times64 считаем модуль преобразования Фурье (с окном Ханна, как в уроке о спектрограммах),

P(u,v)=F{(ppˉ)w}(u,v)2,P(u,v)=\bigl|\mathcal F\{(p-\bar p)\cdot w\}(u,v)\bigr|^2 ,

усредняем по кольцам одинакового радиуса и логарифмируем:

φk=log10Pk1Kj=1Klog10Pj,K=24.\varphi_k=\log_{10}\overline{P}_k-\frac{1}{K}\sum_{j=1}^{K}\log_{10}\overline{P}_j , \qquad K=24 .

Вычитание среднего убирает общую яркость и контраст фрагмента: остаётся только форма спектра. На верхних шести кольцах апсемплинг отличается от оригинала в среднем на 0,680{,}68 порядка, а перерезкость — на 0,150{,}15. Спектр не врёт: уменьшение вдвое буквально выбрасывает высокие частоты, и никакая интерполяция их не возвращает.

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

Средний радиальный спектр по 187187 фрагментам верхней половины снимка. Область высоких частот выделена. Апсемплинг обрушивает хвост, перерезкость его приподнимает, сглаживание с зерном занимает промежуточное положение. Именно эти 2424 числа и получает наш классификатор.

Детектор, который выучил один генератор

Обучаем логистическую регрессию на признаках φ\varphi:

s(φ)=σ(wφ+b),σ(z)=11+ez.s(\varphi)=\sigma\bigl(w^\top\varphi+b\bigr),\qquad \sigma(z)=\frac{1}{1+e^{-z}} .

Данные делим не случайно, а по географии снимка: верхняя половина — обучение (187187 фрагментов), нижняя — контроль (187187 фрагментов). Случайное деление пересекающихся фрагментов было бы утечкой того же сорта, что соседние кадры одного видео в уроке про train и test.

Качество меряем площадью под ROC-кривой — вероятностью того, что случайная подделка получит оценку выше случайного оригинала:

AUC=Pr(s(φF)>s(φR)).\mathrm{AUC}=\Pr\bigl(s(\varphi^{F})>s(\varphi^{R})\bigr).

На своём генераторе получается 0,940{,}94, 0,950{,}95 и 0,820{,}82. Похоже на успех — пока не проверишь на чужом.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Матрица три на три с числами ROC-AUC: на диагонали 0.94, 0.95 и 0.82 на зелёном фоне, вне диагонали значения 0.31, 0.18, 0.32, 0.29, 0.07 и 0.67 на оранжевом и красном фоне
Рис. 87.3. Матрица переноса: чему учили против того, что проверяем

Строка — генератор, на котором учили; столбец — генератор, на котором проверяли. Диагональ великолепна, среднее вне диагонали — 0,310{,}31, худшая клетка — 0,070{,}07. Значение сильно ниже 0,50{,}5 означает, что детектор уверенно переворачивает ответ: чужие подделки он считает более настоящими, чем настоящие фрагменты.

Клетка 0,070{,}07 заслуживает отдельного взгляда. Детектор, обученный ловить перерезкость, знает: «много высоких частот — подделка». Апсемплинг делает ровно обратное, и все его подделки уезжают в зону «настоящее». Это не случайность и не невезение: детектор выучил направление, а не факт синтеза.

Двух генераторов тоже мало

Естественная надежда: обучим на нескольких генераторах — модель поймёт общее. Проверяем схемой leave-one-generator-out: учим на двух, тестируем на третьем,

AUC^LOGO=1Gg=1GAUC(fg,Dg).\widehat{\mathrm{AUC}}_{\text{LOGO}} =\frac{1}{G}\sum_{g=1}^{G}\mathrm{AUC}\bigl(f_{-g},\,\mathcal D_g\bigr).

Результат: от 0,070{,}07 до 0,240{,}24. Не просто «хуже» — систематически ниже монетки. Обобщения не произошло совсем.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Парные столбики для трёх генераторов: синие столбики около 0.94, 0.95 и 0.82, красные столбики leave-one-generator-out около 0.07, 0.21 и 0.24, пунктир на уровне 0.5
Рис. 87.4. Свой генератор против незнакомого: столбики ROC-AUC

Синий столбик — детектор видел этот генератор при обучении. Красный — тот же детектор, обученный на двух других генераторах, встречает третий впервые. Пунктир — уровень случайного угадывания. Обучение на двух генераторах не породило понятия «синтетичность вообще».

Принцип Керкгоффса — про шифры, но он же задаёт правильную планку для детектора. Считайте, что противник знает вашу модель, ваш обучающий набор и ваш порог. Тогда «мы не публикуем детектор, поэтому его не обойдут» перестаёт быть аргументом, а обещание «наш детектор ловит deepfake» превращается в проверяемое «наш детектор ловит вот эти четыре генератора после вот этих преобразований».

Мессенджер смывает улику

Файл почти никогда не доходит до проверяющего в первозданном виде. Его пересылают, пережимают, делают скриншот, переснимают с экрана. Прогоним наши данные через настоящий JPEG-кодек с разным качеством и посмотрим на AUC детектора на своём же генераторе.

Для апсемплинга: 0,9050{,}905 при качестве 9595 и 0,6720{,}672 при качестве 3030. Мы не меняли ни модель, ни генератор — только положили файл в мессенджер.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Три кривые ROC-AUC против качества JPEG от 95 до 30 по убыванию, все три снижаются с колебаниями, пунктирная линия уровня монетки на 0.5
Рис. 87.5. Как пережатие в мессенджере съедает качество детектора

Ось качества направлена от лучшего к худшему. Кривые падают немонотонно: JPEG не просто «стирает» след, он подменяет его собственным следом квантования, и иногда это случайно помогает. Полагаться на такое везение нельзя.

Редкость важнее точности

Теперь главный арифметический сюжет урока. Пусть чувствительность Pr(+F)=0,90\Pr(+\mid F)=0{,}90, специфичность Pr(R)=0,95\Pr(-\mid R)=0{,}95, а доля подделок в потоке π=Pr(F)=0,01\pi=\Pr(F)=0{,}01. По формуле Байеса из урока 42:

Pr(F+)=Pr(+F)Pr(F)Pr(+F)Pr(F)+Pr(+R)Pr(R)=0,90,010,90,01+0,050,99=0,154.\Pr(F\mid+)=\frac{\Pr(+\mid F)\Pr(F)} {\Pr(+\mid F)\Pr(F)+\Pr(+\mid R)\Pr(R)} =\frac{0{,}9\cdot0{,}01}{0{,}9\cdot0{,}01+0{,}05\cdot0{,}99} =0{,}154 .

Из 1000010\,000 файлов подделок 100100; детектор найдёт 9090 и пропустит 1010; из 99009\,900 настоящих ошибочно пометит 495495. Тревог будет 585585, и 84,6%84{,}6\% из них — ложные. Тот же детектор при 10%10\% подделок даёт PPV=0,667\mathrm{PPV}=0{,}667, при 30%30\%0,8850{,}885. Детектор не менялся. Менялся мир.

В форме шансов это выглядит короче. Отношение правдоподобия

LR+=Pr(+F)Pr(+R)=sens1spec=0,90,05=18,\mathrm{LR}_+=\frac{\Pr(+\mid F)}{\Pr(+\mid R)} =\frac{\mathrm{sens}}{1-\mathrm{spec}}=\frac{0{,}9}{0{,}05}=18 ,

и апостериорные шансы получаются умножением априорных:

Pr(F+)Pr(R+)=LR+Pr(F)Pr(R)=181990,18.\frac{\Pr(F\mid+)}{\Pr(R\mid+)} =\mathrm{LR}_+\cdot\frac{\Pr(F)}{\Pr(R)} =18\cdot\frac{1}{99}\approx0{,}18 .

Шансы 0,180{,}18 — это и есть 0,1540{,}154 в вероятностях. Восемнадцатикратное усиление свидетельства не спасает, когда априорные шансы один к девяноста девяти. Это ровно Юм: удивительное утверждение требует свидетельства пропорциональной силы.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Слева блок-схема из 10000 файлов с ветвями 100 подделок и 9900 настоящих, далее 90 TP, 10 FN, 495 FP и 9405 TN; справа три кривые PPV против доли подделок для разных значений специфичности
Рис. 87.6. Дерево из десяти тысяч файлов и кривая PPV по редкости подделок

Слева видно знаменатель: среди 585585 тревог истинны только 9090. Справа — та же арифметика как функция редкости: чтобы при чувствительности 0,900{,}90 и специфичности 0,950{,}95 хотя бы половина тревог была верной, нужна доля подделок π=(1spec)/(sens+1spec)=5,26%\pi^\ast=(1-\mathrm{spec})/(\mathrm{sens}+1-\mathrm{spec})=5{,}26\%.

Порог — решение о цене, а не о вероятности

Порог tt выбирают не «по умолчанию 0,50{,}5», а из ожидаемой цены ошибок:

C(t)=cFNπ(1TPR(t))+cFP(1π)FPR(t).C(t)=c_{\mathrm{FN}}\,\pi\,\bigl(1-\mathrm{TPR}(t)\bigr) +c_{\mathrm{FP}}\,(1-\pi)\,\mathrm{FPR}(t).

Минимум по tt существует и обычно не равен половине. На наших измеренных оценках при π=0,01\pi=0{,}01, cFP=1c_{\mathrm{FP}}=1, cFN=20c_{\mathrm{FN}}=20 оптимум достигается при t=0,61t^\ast=0{,}61 с ценой 203203 условных единицы на 1000010\,000 файлов; порог 0,50{,}5 даёт 298298. Разница почти в полтора раза — из ничего, просто из выбора числа.

Теоретически это правило Байеса: помечать файл, если апостериорные шансы превышают отношение цен,

Pr(Fs)Pr(Rs)  >  cFPcFN.\frac{\Pr(F\mid s)}{\Pr(R\mid s)}\;>\;\frac{c_{\mathrm{FP}}}{c_{\mathrm{FN}}} .

Для калиброванного детектора условие сводится к сравнению ss с числом cFP/(cFP+cFN)c_{\mathrm{FP}}/(c_{\mathrm{FP}}+c_{\mathrm{FN}}) — и вся сложность переезжает в слово «калиброванного».

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Слева U-образная кривая ожидаемой цены с минимумом при пороге 0.61, справа три гистограммы оценок: настоящие фрагменты у нуля, свой генератор у единицы, незнакомый генератор тоже у нуля
Рис. 87.7. Цена как функция порога и распределения оценок трёх видов файлов

Слева: цена ошибок при отношении цен 2020 к 11 и доле подделок 1%1\%, минимум при t=0,61t^\ast=0{,}61. Справа: средняя оценка настоящих фрагментов 0,050{,}05, подделок своего генератора 0,8930{,}893, подделок незнакомого генератора 0,0060{,}006. Все 100%100\% незнакомых подделок названы настоящими, причём с оценкой ниже 0,10{,}1.

Лаборатория порога

Порог детектора, редкость подделок и смена генератора

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

Начните со «своего генератора» и порога 0,50{,}5: при доле подделок 1%1\% картина уже неприятная. Теперь двигайте долю подделок вниз, к десятым долям процента, — и следите не за чувствительностью, а за нижней полосой: доля верных тревог тает на глазах. Затем зафиксируйте порог и меняйте отношение цен: золотая штриховая линия tt^\ast поедет влево, когда пропуск дорог, и вправо, когда дорого ложное обвинение.

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

И наконец переключитесь на «незнакомый генератор». Кривые слипаются, PPV падает почти до нуля при любом пороге. Никакая настройка порога не лечит сдвиг: порог — это выбор точки на кривой, а сдвиг меняет саму кривую.

Уверенно и мимо

Хуже всего то, что под сдвигом детектор не сомневается. Средняя оценка незнакомых подделок — 0,0060{,}006: он не «затрудняется», он уверенно объявляет их настоящими. Значит, отбор по уверенности («отвечаем только там, где модель уверена») здесь не спасает — уверенность тоже сдвинулась.

Калибровка означает, что заявленная вероятность совпадает с частотой:

Pr(Fs(x)=p)=pдля всех p[0,1].\Pr\bigl(F\mid s(x)=p\bigr)=p\quad\text{для всех }p\in[0,1].

Меру расхождения считают по корзинам:

ECE=b=1Bnbnybsb.\mathrm{ECE}=\sum_{b=1}^{B}\frac{n_b}{n}\Bigl|\overline{y}_b-\overline{s}_b\Bigr| .

На своём генераторе у нас ECE=0,041\mathrm{ECE}=0{,}041 — прилично. На чужом — 0,4680{,}468. Никакое температурное шкалирование, настроенное на старой валидации, это не чинит: изменилась физика артефактов, а не масштаб логитов.

Как честно делить данные

Из наших опытов следуют правила, которые не выглядят как правила, пока не потеряешь на них полгода.

Делить данные надо не по кадрам, а по источникам. Соседние кадры одного видео почти одинаковы, и случайное деление даёт утечку: тест уже видели. Делить следует по исходным видео, по людям и по генераторам — а лучше по времени, где тест создан позже обучения. Мы у себя разделили снимок по половинам именно поэтому: фрагменты с шагом 3232 при размере 6464 перекрываются, и случайное деление было бы самообманом.

Точность на тесте нужно сопровождать интервалом. Для n=187n=187 фрагментов и доли верных p^\widehat p ширина нормального интервала

p^±z0,975p^(1p^)n\widehat p\pm z_{0{,}975}\sqrt{\frac{\widehat p\,(1-\widehat p)}{n}}

при p^=0,9\widehat p=0{,}9 даёт около ±0,043\pm0{,}043 — то есть различие между 0,900{,}90 и 0,930{,}93 на такой выборке неразличимо. Аккуратнее считать по Уилсону, как в уроке о доверительных интервалах.

Водяные знаки и подписи: русская школа

Раз пиксельная детекция ломается на каждом новом генераторе, естественно двигаться в другую сторону: не угадывать по картинке, а связывать файл с его происхождением. Это две разные технологии.

Цифровой водяной знак встраивается в контент генератором: слабый, но структурированный сигнал, который переживает пересжатие и обрезку. Ключевая величина — вероятность ложного обнаружения знака в файле, который его не содержит; она должна быть считаемой и малой, порядка 10610^{-6}, иначе знак превращается в ещё один ненадёжный детектор.

Подпись происхождения (стандарт C2PA и родственные) — криптографическая подпись утверждений об источнике и истории редактирования. Она не доказывает, что сцена была на самом деле: подписать можно и постановку. Зато она позволяет заметить изменение после захвата и предъявить цепочку.

Российская школа подошла к этому кругу задач со стороны теории информации. Владимир Иванович Коржик (Санкт-Петербургский университет телекоммуникаций), специалист по помехоустойчивому кодированию, с конца 1990-х годов строил стеганографические системы как задачу передачи по каналу с активным противником: сколько бит можно надёжно спрятать, если противник знает алгоритм и вправе искажать контейнер. В 2002 году вышла книга В. Г. Грибунина, И. Н. Окова и И. В. Туринцева «Цифровая стеганография» — первая отечественная монография, где водяные знаки и аутентификация изображений разбирались вместе, как единая задача защиты подлинности. Взгляд «канал с противником» ровно тот, что нам нужен: стойкость знака описывается не точностью на тесте, а пропускной способностью при заданном уровне искажений — величиной, которую можно посчитать заранее, а не измерить постфактум на очередном датасете.

Карточка свидетельств вместо приговора

Соберём всё вместе. Разумная проверка не сворачивает свидетельства в одно число сразу, а собирает карточку: статус подписи происхождения, результат поиска водяного знака, пиксельный балл с интервалом, временные признаки, аномалии метаданных, независимые источники о событии.

Если считать свидетельства условно независимыми при этой гипотезе — сильное допущение, но оно даёт полезный ориентир, — их логарифмы правдоподобия складываются:

logPr(FE1,,Ek)Pr(RE1,,Ek)=logπ1π+j=1klogLRj.\log\frac{\Pr(F\mid E_1,\dots,E_k)}{\Pr(R\mid E_1,\dots,E_k)} =\log\frac{\pi}{1-\pi}+\sum_{j=1}^{k}\log \mathrm{LR}_j .

Отсюда видно и главное ограничение: если два «независимых» детектора обучены на одном и том же наборе генераторов, их отношения правдоподобия коррелированы, и сумма завышает уверенность. Независимость свидетельств — это утверждение, которое нужно проверять, а не предполагать.

Правильный вопрос здесь не «настоящее ли это видео», а «какое действие предпринять при таком наборе свидетельств и такой цене ошибки». Ответ на него приблизителен — и полезен. Точный ответ на первый вопрос недостижим.

Что говорить вслух

Формулировки — часть инженерии. Детектор оценивает файл, а не намерение автора, и не располагает сведениями о том, кто и зачем этот файл сделал. Поэтому итоговая фраза для пользователя звучит как «обнаружены признаки, требующие проверки», а не «человек сфальсифицировал видео».

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

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

Флаг только начинает проверку

Соберём урок в четыре утверждения, каждое из которых мы измерили.

Правка определяется маской, условием и допуском вне маски — и этот контракт нарушается тише, чем кажется: у нас маска в 4,5%4{,}5\% кадра обернулась изменением 99,8%99{,}8\% пикселей снаружи.

Детекция синтеза — задача под сдвигом. Детектор, дающий AUC=0,94\mathrm{AUC}=0{,}94 на своём генераторе, даёт 0,070{,}07 на чужом и при этом не сомневается: все незнакомые подделки он назвал настоящими с оценкой ниже 0,10{,}1.

Редкость важнее точности. При 1%1\% подделок 84,6%84{,}6\% тревог ложны, и никакое улучшение чувствительности этого не меняет — работать надо со специфичностью и с базовой частотой.

Порог — экономическое решение, а не свойство модели: t=0,61t^\ast=0{,}61 против 0,50{,}5 дало цену 203203 против 298298. Дальше — происхождение, подписи, независимые источники и человек, а вывод системы формулируется как приглашение к проверке. В следующем уроке те же вопросы придётся задавать видео, где к пикселям добавляются время и трёхмерная согласованность сцены.

Задачи