AN-1. Предел данных: ошибка P2 против шума цели
Вопрос плана docs/plan/ann2.md §2: ошибка сети P2 (U-Net + FiLM, runs/2026-10-03_p2b) — неумение сети или шум самой цели
(у несошедшихся решений цель — среднее снимков 500…1000, они колеблются)? Ответ: (б), дело в сети; цель не шумит.
Метод и границы применимости
- Метрика — как оценка P2 (
pilotnn/evaluate.py): ветер с нагревом на 60 м над рельефом (линейно между 50 и 75 м), клетки области без 5 клеток у края, ошибка = |Δ(u, v)|; ρ = ошибка / u_ref, u_ref = max(0,3; 0,15·|V|), у несошедших не меньшеlate_spread60_p90. Сеть —main/ckpt/best.pt, пересчитана заново (код пилота, без правки); числа таблиц 1–2 — медиана по случаям от медианы/p90 по клеткам случая (в отчёте P2 — по пулу клеток группы: конв. 0,624 / нс 0,423 на (г) против 0,711 / 0,414 здесь у уверенно сошедшихся / нс по этой метрике — порядок тот же). - Что сохранено в данных: у несошедших terrain-случаев только скаляр
late_spread60_p90(p90 по клеткам RMS снимков вокруг среднего); снимков нет, историй невязок в наборе нет. Поэтому 56 случаев набора terrain (45 отложенных (г), 11 обучающих; 23 нс, 33 сошедших) пересчитаны решателем (snaps.py, тот жеair3dи условия, предел 1000 итераций) с сохранением всех снимков каждые 10 итераций и без остановки по сходимости (допуски 0): траектория до остановки та же, поэтому у сошедшихся видно, что будет после неё. Воспроизведение цели набора из снимков: максимум |Δ| = 0,008 м/с (округление float16) на всех 56 случаях. Время решателя — 12–22 с на случай. - Модель: ветер и «шум» — только внутри решателя air3d (единственная физика в плане); «шум цели» здесь — отличие цели от того, что дал бы тот же решатель при дальнейших итерациях или при микросдвиге условий. Что решатель сам неточен относительно атмосферы — вне вопроса. Выборка 56 случаев мала для хвостов; ранжирование мест не делалось.
1. Что видно по всем наборам (ошибка P2, без снимков)
Пересчёт по клеткам, out/tables.md (все наборы; n — случаев; ошибка — м/с на 60 м; ρ — медиана / p90 по клеткам, медиана по случаям):
| набор / класс | n | U10 мед | ошибка мед. по случаям | ρ мед / p90 | разброс цели p90, мед. (нс) |
|---|---|---|---|---|---|
| (г) отложенные горы / все | 720 | 3,77 | 0,597 | 1,09 / 2,66 | 0,444 |
| (г) / уверенно сошедшиеся | 540 | 4,78 | 0,711 | 1,12 / 2,76 | — |
| (г) / сошлись поздно (it ≥ 300) | 44 | 1,79 | 0,416 | 1,32 / 2,94 | — |
| (г) / несошедшиеся | 136 | 1,11 | 0,414 | 0,87 / 1,78 | 0,444 |
| (а) новые условия П6 / все | 531 | 3,99 | 0,616 | 1,19 / 2,84 | 0,321 |
| обучающие (выборка 600) / все | 600 | 3,73 | 0,496 | 0,94 / 2,35 | 0,434 |
| обучающие / уверенно сошедшиеся | 469 | 4,67 | 0,563 | 1,05 / 2,54 | — |
| обучающие / несошедшиеся | 97 | 1,12 | 0,339 | 0,74 / 1,55 | 0,434 |
Один и тот же U10, разные классы (отложенные горы + новые условия П6; ошибка, мед.): U10 0–2 — сошедшиеся уверенно 0,295 (n = 98), нс 0,396 (n = 196); 2–4 — 0,470 (248) против 0,590 (39); 4–6 — 0,737 (273); ≥ 6 — 1,035 (313). Ошибка растёт с ветром в 3,5 раза (0,30 → 1,04) там, где цель заведомо не шумит (сошедшиеся), а несошедшие при том же U10 хуже сошедших лишь на ≈ 0,1 м/с (в ρ их спасает разброс в знаменателе). Связь ошибки с ветром среди сошедших: r = 0,78 с U10; число итераций до сходимости при фиксированном U10 даёт малую добавку (МНК: ошибка ≈ −0,56 + 0,13·U10 + 0,14·ln iters). Между местами (г) корреляция ошибки с долей несошедших случаев места: r = −0,02. У несошедших корреляция ошибки с собственным разбросом: r = −0,03 (n = 325), с U10: +0,68.
Сеть не подгоняет даже обучающие: ошибка на обучающих сошедших 0,563 против 0,711 на отложенных (80 %) при том, что цель у них детерминирована.
2. Снимки решателя на 56 случаях (out/snap_tables.md)
Все числа — по клеткам области на 60 м, затем медиана по случаям группы (м/с).
| группа | n | U10 мед | ошибка P2 мед. | σ снимков (11, как набор) p90 клеток | σ мед. клеток | шум цели: среднее 11 против 51 снимков, мед. / p90 | отход цели от среднего 500…1000, мед. / p90 | отход от состояния через +100 итераций, мед. |
|---|---|---|---|---|---|---|---|---|
| не сошлись за 1000 (нс) | 23 | 1,32 | 0,355 | 0,426 | 0,251 | 0,009 / 0,022 | — | — |
| сошлись, итераций до сходимости < 300 | 27 | 4,46 | 0,590 | 0 | 0 | 0 | 0,003 / 0,011 | 0,002 |
| сошлись, итераций ≥ 300 | 6 | ≈ 1 | 0,345 | 0,126 | 0,028 | 0,002 / 0,008 | 0,023 / 0,110 | 0,025 |
- Сошедшиеся (27 из 33 — быстро, 30–100 итераций): состояние на итерации сходимости совпадает с состоянием через 10…100 итераций и со средним 500…1000 с точностью 0,003 м/с (p90 0,011). Ошибка P2 в них 0,59 — в 12 раз (медиана отношения по случаям; 10-й–90-й процентили 7–71) больше отхода цели. Доля квадрата ошибки, которую мог бы объяснить шум цели: ≈ 10⁻⁵.
- Несошедшие: мгновенные состояния колеблются (σ клеток, медиана 0,25 м/с; p90 клеток — 0,43, это число набора), но цель — среднее 11 снимков и она стабильна: от среднего 51 снимка (все 10-итерационные снимки 500…1000) отличается на 0,009 м/с (p90 0,022). Ошибка P2 в 24 раза (медиана; 9–73) больше шума цели; доля квадрата ошибки ≈ 10⁻³. Ошибка относительно мгновенных снимков 0,45 (медиана по случаям), относительно цели 0,355: сеть ближе к среднему, чем к любому снимку, как и должно быть. Лишь у несошедших при U10 < 2 мгновенный разброс σ (0,25) сравним с ошибкой (отношение ошибка/σ: медиана 1,4, 10-й процентиль 0,8) — это граница для того, кто захочет предсказывать мгновенный снимок; цель-среднее её не несёт.
- Обучающие и отложенные из выборки: 0,43 (n = 11) и 0,40 (n = 45) — выборка мала для этого сравнения; полное сравнение — таблица 1.
3. Чувствительность цели к сдвигу условий (12 случаев, out/perturb_tables.md)
Нижняя граница «непредсказуемости» цели для сети, которая видит те же входы: решение заново при U10 × 1,02 и при направлении +1° (путь набора terrain, цель — как в наборе).
| n | ошибка P2 мед. | сдвиг цели при U10 × 1,02: мед. / p90 | при +1°: мед. / p90 | |
|---|---|---|---|---|
| несошедшиеся | 5 | 0,367 | 0,065 / 0,162 | 0,055 / 0,111 |
| сошедшиеся | 7 | 0,417 | 0,084 / 0,111 | 0,069 / 0,122 |
Отклик цели гладкий и пропорционален ветру (U10 6,5 м/с: 0,28 м/с на 2 %; U10 ≈ 1 м/с: 0,014–0,08); у случая 0,41 м/с ошибки сдвиг 0,02–0,03. Ошибка P2 ≥ 4 раз больше сдвига в среднем по группе и в 10–30 раз — на медленных случаях. Исключение: t_0073_001 (U10 6,5, обучающий) — ошибка 1,48, сдвиг 0,28 (5 раз). Статус «сошёлся/нет» при сдвиге менялся у 1 случая из 12 (t_0343_002: при U10 × 1,02 решение сошлось, исходное и при +1° — нет).
Вывод
Вариант (б): ошибка ≫ разброса цели. Три независимых оценки шума цели — дрейф сошедшегося состояния (0,003 м/с), шум среднего у несошедших (0,009 м/с),
отклик на сдвиг условий на 2 % и 1° (0,02–0,28 м/с) — на 1–3 порядка меньше ошибки P2 (0,26–1,5 м/с). Остальные подтверждения: ошибка на сошедших случаях,
где цели не шумят совсем, не меньше, чем на несошедших; ошибка растёт с ветром почти пропорционально (≈ 17–30 % от |V|), не с долей несошедших мест; сеть недообучена и на обучающих
(0,56 против 0,71); P3E8 (обучение только на уверенно сошедшихся, air_nn_p3/p3/p3e8.md) не дал выигрыша на уверенных (0,707 против 0,703). Предел данных (шум цели) P2 не ограничивает;
«чинить цель» (весы, отбор, иное усреднение) выигрыша не даст. Предел — архитектура, постановка или объём обучения (напомним: кривая 25→300 мест без полки, −7 % на удвоение).
Для ρ: у сошедших случаев знаменатель u_ref = max(0,3; 0,15·|V|) — допуск критерия, а не измеренный шум (его оценка 0,003 м/с); ρ ≈ 1,1 означает «ошибка ≈ допуск 0,3…0,15|V|», не «ошибка ≈ погрешность решателя». Если ρ нужен как мера заменимости, допуск стоит переопределить от физической погрешности решателя (отдельное решение).
Что не проверено
- Выборка 56 (снимки) и 12 (сдвиг) — не весь набор; хвосты и места не оценивались; сдвиги только двух видов (U10, направление), не температура/время суток.
- Сеть при возмущённых входах не прогонялась: сравнение — сдвиг цели против ошибки на невозмущённом входе.
- Решатель детерминирован (одна траектория на условия); «шум» от иной инициализации/зерна не рассматривался.
- Шум самого решателя относительно физики атмосферы (точность модели, сетка 400 м) — вне вопроса AN-1.
Воспроизведение
tools/research/ann2/README.md (команды по шагам; venv пилота; решатель под замком GPU — dp job --lock gpu). Таблицы и json — tools/research/ann2/out/
(cells_cases.json, tables.md, snap_cases.json, snap_tables.md, perturb_cases.json, perturb_tables.md); снимки — /home/greg/air_nn_data/ann2/an1/snaps (361 МБ, локально).