Урок 4. Турнир «настрой детектор»
Урок 4. Турнир «настрой детектор»: ROC своими ногами
Паспорт урока
| Параметр | Значение |
|---|---|
| Место в модуле | RFCurtain, урок 4 из 5 — кульминация модуля |
| Длительность | 90 мин (турнир требует полного времени) |
| Возраст | 13–16 |
| Оборудование | Платы на реальной дистанции, rf_curtain.py, кнопка судьи (MARK) |
| Предварительные знания | Уроки 1–3; BeaconRadio урок 7 (ROC) — желательно |
| Предмет | Статистика, теория принятия решений |
Образовательные цели
| № | Цель | Блум | Миллер | Чем доказывается |
|---|---|---|---|---|
| 4.1 | Настраивать классификатор по компромиссу ошибок | оценивать | делает | Турнирная таблица с обоснованием |
| 4.2 | Объяснять роль ground truth в измерении качества | понимать | знает как | Ответ: откуда известна правда |
| 4.3 | Обосновывать выбор рабочей точки по цене ошибки | оценивать | показывает как | Аргументация порогов для сценария |
| 4.4 | Использовать запись для разбора конкретных промахов | применять | делает | Найденная по replay причина промаха |
Сценарий (90 минут)
| Время | Блок | Что делает педагог | Что делают ученики |
|---|---|---|---|
| 0–5 | Выдача рубрики | Раздаёт критерии турнира | Читают |
| 5–15 | Калибровка | Три записи по 2 минуты | Снимают эталонные данные |
| 15–25 | Подготовка | Команды выбирают пороги | Анализируют записи, решают |
| 25–55 | Турнир | Судит, считает | Играют обе роли по очереди |
| 55–70 | Разбор по replay | Ведёт анализ промахов | Ищут причины |
| 70–82 | Подведение итогов | Считает результат + метод | Защищают свой выбор |
| 82–90 | Анти-режим | Финальная демонстрация | Наблюдают |
Блок 1. Выдача рубрики (0–5 мин)
Победителем становится не тот, кто поймал всё. Порог «в пол» ловит любое движение и звенит непрерывно — это не победа, а бесполезная система.
Оценка складывается из двух частей:
Результат: попадания − 2 × ложные
Метод (рубрика Д, документ 2): обоснование выбора порогов · понимание компромисса · использование записи для разбора.
Итог = результат + метод. Команда, выигравшая по очкам, но выбравшая пороги наугад, проигрывает команде с меньшим счётом и осмысленным обоснованием.
Блок 2. Калибровка (5–15 мин)
Прежде чем настраивать, нужно понять, как выглядят данные на вашей площадке.
Три записи по 2 минуты
| Запись | Что происходит | Зачем |
|---|---|---|
| 1. Пусто | никого рядом с лучом | увидеть уровень шума и дрейф фона |
| 2. Штатные пересечения | проходы шагом, судья жмёт MARK на каждом | увидеть типичную глубину просадки |
| 3. Провокации | пробежка рядом, взмахи, качание ветки — без пересечения | увидеть, что даёт ложные срабатывания |
Что извлечь из записей
«Посмотрите на запись “пусто”: какой там разброс? Это ваш уровень шума. Порог ниже него — гарантия непрерывных ложных тревог.
Посмотрите на запись пересечений: какая типичная глубина просадки? Порог выше неё — гарантия пропусков.
Ваш порог должен лежать между этими величинами. Насколько ближе к каждой границе — ваше решение.»
Блок 3. Правила турнира (15–25 мин)
Роли
Две команды, каждая играет обе роли по очереди:
| Роль | Задача |
|---|---|
| Охрана | выбирает пороги (--drop-db, --sigma-db), защищает периметр |
| Нарушители | 10 попыток пересечь любым способом + 5 провокаций без пересечения |
| Судья (педагог) | жмёт MARK только на реальных пересечениях |
Что засчитывается
| Событие | Как считается |
|---|---|
| MARK был, тревога сработала | попадание |
| MARK был, тревоги нет | пропуск |
| MARK не было, тревога сработала | ложная тревога |
| MARK не было, тревоги нет | верное молчание |
Разрешённые способы нарушителей
Шагом, бегом, ползком, боком, медленно, у самой антенны, у края зоны. Запрещено: касаться оборудования, заходить за антенны.
Роль судьи и ground truth
Кнопка MARK — это ground truth. Она фиксирует, что произошло на самом деле, независимо от того, что решил детектор.
Без неё посчитать попадания и пропуски невозможно: можно лишь любоваться графиками и ощущать, что «вроде работает». Это ровно тот принцип, который вводился в BeaconRadio, урок 7.
Судья должен быть беспристрастен и нажимать кнопку одинаково для обеих команд. Стоит проговорить это вслух: качество эксперимента зависит от качества разметки.
Блок 4. Турнир (25–55 мин)
Порядок
- Команда 1 — охрана, выбирает и записывает пороги с обоснованием;
- Команда 2 — 15 попыток (10 пересечений + 5 провокаций);
- Подсчёт результата;
- Смена ролей, повтор;
- Сравнение.
Турнирная таблица
| Команда 1 | Команда 2 | |
|---|---|---|
| Пороги (drop / sigma), дБ | ||
| Обоснование выбора | ||
| Попаданий из 10 | ||
| Пропусков | ||
| Ложных тревог из 5 | ||
| Счёт (попадания − 2 × ложные) |
Что делает педагог во время турнира
- Следит за беспристрастностью разметки;
- Фиксирует реплики команд для последующего разбора («мы поставили пониже, чтобы точно поймать» — материал для обсуждения компромисса);
- Не подсказывает оптимальные пороги.
Блок 5. Разбор по записи (55–70 мин)
Главный инструмент урока
«Закройте окно программы — в консоли будет путь к CSV-логу. Запустите
python3 rf_curtain.py --replay <лог>. Теперь вы можете проигрывать турнир заново, останавливаться и разбираться.»
Задание командам
Найти в записи конкретные моменты:
| Что искать | Вопрос |
|---|---|
| Свой пропуск | почему признак не дошёл до порога? |
| Свою ложную тревогу | что вызвало срабатывание? |
| Самое глубокое срабатывание | чем этот проход отличался? |
Типичные находки
| Находка | Объяснение |
|---|---|
| Пропущен быстрый пробег | окно медианы 0,5 с не успело среагировать на событие длительностью 0,3 с |
| Пропущен проход у самой антенны | зона Френеля там узкая (урок 1) — тело перекрывает меньшую долю |
| Ложная от махания руками | второй признак (кипение) сработал, хотя пересечения не было |
| Ложная в начале записи | база ещё не прогрелась |
Методическая ценность replay. Живой график хорош для демонстрации, но разбор возможен только по записи — там можно остановиться, вернуться и ткнуть пальцем в конкретный момент.
Этот принцип переносится на любую экспериментальную работу: пишите сырые данные всегда, даже если сейчас смотрите вживую. Восстановить незаписанное невозможно.
Блок 6. Подведение итогов (70–82 мин)
Защита выбора порогов
Каждая команда отвечает:
- Почему выбрали именно эти пороги?
- Что показала калибровочная запись?
- Где на кривой «ложные ↔ пропуски» находится ваша точка?
- Как бы вы изменили пороги, если бы это была настоящая охрана склада? А детская площадка?
Построение ROC по точкам класса
Свести на доске точки всех команд в осях «доля пойманных — доля ложных»:
доля пойманных
▲
100% ┤ ● К2 (порог низкий: поймали всё, но 4 ложных)
│ ● К1
│ ● К3 (порог высокий: 6 из 10, зато 0 ложных)
│
0% ┼───────────────────► доля ложных
0% 100%«Каждая точка — чья-то настройка. Соединив их, вы получили кривую компромисса. Никто не попал в левый верхний угол — он недостижим. Вы только что построили ROC-кривую своими ногами.»
Ключевой вывод
Идеального порога не существует. Есть осознанный выбор точки на кривой, и определяет его цена ошибки в конкретном сценарии:
| Сценарий | Что дороже | Куда смещать |
|---|---|---|
| Охрана склада с ценностями | пропуск | вниз (чувствительнее) |
| Датчик на детской площадке | ложные (замучают) | вверх |
| Финишные ворота эстафеты | пропуск | вниз |
Именно это ученики уже формулировали в BeaconRadio, урок 7 — теперь они прожили это руками.
Блок 7. Финальная демонстрация (82–90 мин)
Анти-режим
Запустить --no-freeze и попросить ученика встать в луч. Через минуту тревога снимется сама (урок 3).
«Это самая запоминающаяся ошибка проекта. Вы могли бы её не заметить, если бы просто проверяли систему проходами. Обнаружить её позволяет только сценарий, о котором заранее подумали.»
Мораль модуля
«Вы прошли полную лестницу: от физики зоны Френеля до настройки классификатора по измеренному качеству. Это, без громких слов, введение в машинное обучение — только признаки и пороги выбирали вы, а не алгоритм обучения. Всё остальное — то же самое.»
Практические задачи (домашние)
Уровень A (13–14 лет)
A1. Почему победителем турнира не считается команда, поймавшая все 10 пересечений?
Ответ
Потому что поймать всё можно, поставив порог очень низко — но тогда система будет звенеть на любое движение поблизости. Такая охрана бесполезна: ей перестанут верить. Победитель — тот, кто нашёл лучший компромисс между попаданиями и ложными тревогами.
A2. Что такое кнопка MARK и зачем она нужна?
Ответ
Это отметка судьи о том, что пересечение действительно произошло — ground truth. Без неё невозможно посчитать, сколько детектор поймал и сколько пропустил: не с чем сравнивать его решения.
A3. Зачем нужны провокации без пересечения?
Ответ
Чтобы измерить ложные тревоги. Детектор, который никогда не ошибается на настоящих проходах, но звенит на каждое движение рядом, не годится — а без провокаций это не проявится.
Уровень B (14–15 лет)
B1. Команда получила 10 попаданий и 4 ложные тревоги. Другая — 7 попаданий и 0 ложных. Кто победил по формуле счёта?
Решение
Команда 1: 10 − 2 × 4 = 2. Команда 2: 7 − 2 × 0 = 7.
Побеждает вторая команда. Формула штрафует ложные тревоги вдвое — это отражает реальность охранных систем: система, которой перестали верить из-за ложных срабатываний, бесполезна даже при высокой чувствительности.
B2. Почему проход у самой антенны сложнее обнаружить, чем в середине трассы?
Ответ
Потому что радиус зоны Френеля у антенны существенно меньше, чем в середине (0,56 м против 0,93 м на трассе 10 м — расчёт урока 1). Но при этом плотность энергии там выше и прямой путь короче, поэтому относительное влияние тела на суммарный сигнал меньше — просадка получается слабее.
B3. Как бы вы изменили пороги для охраны склада с ценностями? Обоснуйте.
Ответ
Сместил бы в сторону чувствительности (понизил порог просадки, понизил порог σ). Обоснование: цена пропуска — украденные ценности — существенно выше цены ложной тревоги, которая означает лишь проверку охранником.
Но не в крайность: при потоке ложных тревог охрана начнёт их игнорировать, и пропуск вернётся уже на уровне человека («усталость от тревог» — BeaconRadio, урок 7).
Уровень C (15–16 лет)
C1. Постройте по данным турнира ROC-кривую класса и определите, какая настройка ближе к оптимуму для сценария «охрана периметра школы ночью».
Разбор
Ученик должен: (1) нанести точки всех команд в осях «доля пойманных — доля ложных»; (2) описать форму кривой; (3) выбрать точку под сценарий.
Для школы ночью: ложные тревоги вызывают выезд сторожа или охранной службы — это дорого и приводит к недоверию. Пропуск ночного вторжения тоже дорог. Оптимум — в средней части кривой, ближе к балансу.
Важно, чтобы ученик заметил: оптимум зависит от того, есть ли дешёвая проверка. Если рядом камера, можно смещаться в чувствительность (проверка бесплатна). Если выезд наряда — надо быть строже.
Это ровно та логика, что в BeaconRadio, урок 7 (пред-тревога как дешёвая проверка).
C2. Предложите способ улучшить детектор так, чтобы сместить всю кривую вверх, а не двигаться по ней.
Разбор
Движение по кривой — это лишь перераспределение между двумя ошибками. Чтобы улучшить обе метрики, нужна новая информация:
- Третий признак (SNR, длительность, форма провала) — новая независимая информация;
- Два луча крест-накрест — событие, подтверждённое обоими, почти наверняка настоящее;
- Направленные антенны — сужают чувствительный объём, повышая контраст (урок 1);
- Более частый опрос — быстрые пробеги перестанут проскакивать;
- Проверка последовательности — настоящий проход даёт характерную форму, случайная помеха нет.
Ключевая мысль: сдвинуть кривую можно только добавив информацию или улучшив измерение. Подкрутка порогов перемещает точку по той же кривой.
Это тот же вывод, что в BeaconRadio, урок 7, где пред-тревога добавляла источник информации.
C3. Спроектируйте протокол испытаний, дающий доказательные цифры качества детектора для конкурсной работы.
Разбор
Необходимые элементы:
- Ground truth: судья с кнопкой плюс видеозапись для разрешения спорных случаев;
- Выборка: не менее 30 пересечений и 30 провокаций (по 15 в турнире — мало для статистики);
- Разнообразие: разные люди (рост, комплекция), способы (шаг, бег, ползком), точки пересечения (у антенны, в середине), условия (сухо, дождь, разное время суток);
- Слепота настройки: пороги фиксируются до испытания и не подстраиваются по ходу — иначе это подгонка под выборку;
- Фиксация условий: дистанция, высота антенн, мощность, версия прошивки;
- Метрики с погрешностью: доверительный интервал для доли, а не одно число;
- Контрольная серия в другой день для проверки воспроизводимости.
Типичная ошибка школьных работ: настраивать пороги и измерять качество на одних и тех же данных. Это даёт завышенный результат — фактически проверка того, как хорошо подогнаны параметры, а не как работает метод.
Готовая методическая часть конкурсной работы — см. документ 5 экспертизы.
Ответы на вопросы, которые прозвучат
| Вопрос ученика | Как отвечать |
|---|---|
| «А можно поставить порог так, чтобы ловить всё без ложных?» | Попробуйте — и посмотрите на калибровочные записи. Провокации дают отклик, сравнимый с медленным проходом. Разделить их порогом невозможно |
| «Судья ошибся с кнопкой — это считается?» | Да, и это честно: качество разметки — часть эксперимента. В настоящих исследованиях для этого ведут видеозапись |
| «Почему ложные штрафуются вдвое?» | Потому что в охранных системах ложные тревоги обходятся дорого и разрушают доверие. Коэффициент отражает приоритет; для другой задачи он был бы другим |
| «Мы поставили пороги наугад и выиграли» | По очкам — возможно. По методу — нет: обоснование оценивается отдельно. Случайная удача не воспроизводима, а нам нужна воспроизводимость |
| «Это правда похоже на машинное обучение?» | Да, структурно это то же самое: признаки, классификатор, измерение качества, компромисс. Отличие в том, что параметры подобрали вы, а не алгоритм |
Раздаточный лист (для печати)
Урок 4. Турнир «настрой детектор»
Часть 1. Калибровка (три записи по 2 минуты)
Запись Что наблюдал Типичные значения Пусто уровень шума σ ≈ ____ дБ, дрейф ____ Пересечения глубина просадки ____ дБ Провокации что даёт отклик ____________ Мой выбор порогов и ОБОСНОВАНИЕ:
drop = ____ дБ, потому что __________________________
sigma = ____ дБ, потому что _________________________
Часть 2. Турнирная таблица
Команда 1 Команда 2 Пороги (drop / sigma) Попаданий из 10 Пропусков Ложных из 5 Счёт = попадания − 2 × ложные Часть 3. Разбор по replay
Что искал Момент в записи Причина Мой пропуск Моя ложная тревога Часть 4. Моя точка на ROC
Доля пойманных: ____ % · Доля ложных: ____ %
Как бы я изменил пороги для:
охраны склада → ___________________________________
детской площадки → ________________________________
Главный вывод турнира:
__________________________________________________
Домашнее задание
Обязательная часть
Врайтап по рубрике А. Обязательные пункты: выбранные пороги с обоснованием, результат, найденная по записи причина одного промаха.
Уровень A
Найти три системы, где ложная тревога обходится дороже пропуска, и три, где наоборот. Объяснить разницу.
Уровень B
По данным своего турнира посчитать долю пойманных и долю ложных, нанести точку на график. Предположить, куда сместится точка при снижении порога на 1 дБ.
Уровень C
Разработать протокол испытаний детектора для конкурсной работы (не менее 30 событий, разнообразие условий, слепая настройка). Оформить как методику.
Итог урока: что записать в журнал
Вывод урока 4
- Ground truth (кнопка судьи) обязателен: без него качество детектора невозможно измерить.
- Калибровка на своей площадке первична: цифры из документации — стартовые, истинные снимаются измерением.
- Идеального порога не существует — есть выбор точки на кривой «ложные ↔ пропуски».
- Победитель — не поймавший всё, а нашедший лучший компромисс: счёт учитывает двойной штраф за ложные.
- Метод оценивается наравне с результатом: пороги наугад не засчитываются даже при удачном исходе.
- Replay — главный инструмент разбора: живой график для демонстрации, запись для анализа.
- Сместить всю кривую вверх можно только новой информацией (признак, второй луч, антенна), а не подкруткой порогов.
Связь с курсом
| Что родилось на этом уроке | Где станет инструментом |
|---|---|
| Практика настройки классификатора | Выпускной проект, конкурсные работы |
| Ground truth и протокол испытаний | Документ 5 (конкурсные работы) |
| ROC руками | BeaconRadio урок 7 (теория), любая работа с детекторами |
| «Пишите сырые данные всегда» | Вся экспериментальная работа |
Чек-лист педагога перед уроком
- Платы на реальной дистанции (6–15 м), высота ~1 м, антенны вертикально
- Проверено: RSSI не лучше −60 дБм (иначе линк слишком «жирный», контраст упадёт)
- Кнопка MARK на RX работает, отметки видны в логе
- Проведён инструктаж по ТБ, площадка безопасна (главный риск — споткнуться о стул с платой)
- Рубрика Д выдана до турнира
- Заготовлены бланки турнирной таблицы
- Место на доске для сводной ROC-кривой класса