Загружаем научный разбор
Подготавливаем текст, источники и редакционные примечания без изменения разметки страницы.
Подготавливаем текст, источники и редакционные примечания без изменения разметки страницы.
Автор: Казачкин Даниил Михайлович · Обновлено
Как превратить два распределения детектора в правило решения и почему оно меняется при редких сигналах или дорогих пропусках. Проверяемый расчёт на Python.
# От фотонных отсчётов к решению
Измерительный прибор возвращает число. Приложению требуется действие: обнаружен сигнал или нет. Между этими двумя шагами находится правило решения. Даже при неизменных аппаратуре и данных оно может зависеть от частоты события и последствий ошибки. Это знакомая задача статистики, возникающая и в квантовых измерениях, и в обычных классификаторах.
Общий физический контекст различения состояний даёт обзор Barnett и Croke. Здесь мы решаем более узкую классическую задачу после фиксированного измерения. Мы не подбираем оптимальный квантовый измеритель и не утверждаем достижение фундаментальной границы различения.
Пусть p0[n] — вероятность отсчёта n при отсутствии сигнала, p1[n] — при его наличии. Зададим априорную вероятность сигнала pi. Ещё нужны две цены: стоимость ложного срабатывания и стоимость пропуска. В учебном примере правильные решения имеют нулевую стоимость, а оба распределения полностью перечислены.
Если выбрать «сигнал», вклад в ожидаемые потери для отсчёта n будет (1 − pi) × p0[n] × costFP. Если выбрать «нет сигнала», получим pi × p1[n] × costFN. Выбираем меньшую величину. При равных частотах и ценах это сводится к сравнению p1[n] и p0[n]. При равенстве нужен явный договор; в коде ниже выбирается отсутствие сигнала.
p0 = [0.8, 0.2]
p1 = [0.3, 0.7]
def decision(prior, false_positive_cost=1, false_negative_cost=1):
return [
(1 - prior) * a * false_positive_cost < prior * b * false_negative_cost
for a, b in zip(p0, p1)
]
def risk(rule, prior, false_positive_cost=1, false_negative_cost=1):
fp = sum(p for p, signal in zip(p0, rule) if signal)
fn = sum(p for p, signal in zip(p1, rule) if not signal)
return (1 - prior) * fp * false_positive_cost + prior * fn * false_negative_cost
for prior, miss_cost in ((0.5, 1), (0.01, 1), (0.01, 100)):
rule = decision(prior, false_negative_cost=miss_cost)
print(rule, round(risk(rule, prior, false_negative_cost=miss_cost), 3))Получим [False, True] с риском 0,25; [False, False] с риском 0,01; затем снова [False, True], но с риском 0,498. Последние числа выражены в разных условиях цены ошибки, поэтому сравнивать их как обычную точность нельзя.
Во втором сценарии событие настолько редко, что при равной цене ошибок всегда говорить «нет» оптимально для заданных распределений. Это не универсальный совет для реального прибора. Именно поэтому нужно заранее сформулировать ущерб от пропуска: третий сценарий показывает, как его увеличение меняет решение.
Если сигнал встречается раз в сто измерений, система, всегда отвечающая «нет», имеет точность 99%. При этом она пропускает каждый сигнал. Для контроля такого поведения храните отдельно долю ложных срабатываний среди отсутствующих сигналов и долю пропусков среди присутствующих. Тогда изменение частоты событий не скрывает изменение качества обнаружения.
Для практического приложения также важна уверенность в самих p0 и p1. Если они оценены по десяти наблюдениям, ноль в таблице не обязательно означает физически невозможный исход. Оценивание распределений и применение готового правила — разные этапы. Учебный код предполагает, что вероятности уже известны, и не решает задачу их статистической оценки.
Если детектор выдаёт значения вне сохранённого диапазона, требуется обработка хвоста. Нельзя молча отбросить такие отсчёты и пересчитать проценты: это меняет протокол. Один вариант — отдельный исход переполнения с собственной вероятностью. Другой — увеличение диапазона модели после анализа физики детектора.
Сохраните версии калибровки и время измерений. Изменившийся прибор может делать старые распределения неверными. Обзор Quantum sensing описывает измерительный контекст; предлагаемая здесь практика журналирования — наш инженерный вывод.
Для дальнейшей самостоятельной проверки переберите все четыре правила для двух исходов и убедитесь, что выбранное действительно минимизирует заданный риск. Затем добавьте третий исход. Это небольшой исчерпывающий тест, который полезнее утверждения «алгоритм кажется разумным». Связь с научной постановкой обсуждается в [различении и оценивании](/research/quantum-detection-versus-estimation), а связь с ПО — в [карте задач разработчика](/research/quantum-sensing-software-impact).
Авторский русскоязычный разбор ЯдроКода с первичными источниками. Учебные примеры и инженерные предположения отделены от результатов исследований. Не перевод и не перепечатка.
Таблицы, код и синтетические данные созданы для этого материала. Иллюстрации, код и экспериментальные данные авторов исследований не переносятся.