8.8 KiB
Findings — логарифмическая замена переменной (линия NEXT_PAPER_logarithmic.md)
Пред-регистрация: PREREG_logarithmic_2026-09-20.md. Здесь — то, что установлено, в порядке
установления. Числа только с Linux (libm).
0. Базовое состояние воспроизведено (2026-09-20, сервер)
pytest tests/ -q→ 665 passed, 9 skipped, 364.91 s.verify_article.py→ «every number stated in the paper matches the sweep data» (все 72 числа).- 🟡 Несоответствие документации: README обещает «490 tests», фактически 674. README не правлю — он описывает опубликованный артефакт; расхождение зафиксировано здесь.
- 🟡 На сервере не было ни одного
*.json:sweep_full.json(1 349 222 байта) залит с ноутбука, иначе проверки, сверяющие статью с данными, молча пропускаются (те самые 9 skipped).
1. 🔴 Два гейта допуска НЕСОВМЕСТИМЫ в строгой формулировке — установлено ВЫВОДОМ, без прогона
Шаг метода: step = (1 − S(|f|/sc))·(far − x), sc = |slope|·|far − x|.
Гейт G1 — c, s выводятся из скобки; гейт G2 — на узких скобках преобразование тождественно
до округления, то есть требует |x − c| / s → 0 при сжатии скобки.
выбор единицы s (все беспараметрические) |
узкая скобка | широкая скобка |
|---|---|---|
s = |f(c)|/|f'(c)| — ньютоновская длина (пред-регистрированный кандидат) |
у простого корня |x−c| ~ |f|/|f'| ~ s, отношение → O(1), тождественности НЕТ |
марш есть |
s = w₀ — исходная ширина скобки (датум задачи) |
|x−c|/w₀ → 0, тождественность есть |
|x−c|/w₀ ≤ 1 ⇒ снова почти тождественность, марша НЕТ |
u = log|x−c| — без единицы вовсе |
режима тождественности нет и x = c не определено |
марш есть |
s = |x−c| — самомасштабируемая |
мультипликативный шаг отличается от аддитивного во втором порядке O((Δ/(x−c))²) ⇒ строгой тождественности НЕТ |
марш есть |
Вывод: ни одна доступная беспараметрическая единица не удовлетворяет G1 и строгому G2 одновременно. Это свойство постановки, а не деталь реализации.
Что из этого следует содержательно: марш требует отношения расстояний, а тождественность —
абсолютной шкалы; одно преобразование не может быть одновременно масштабно-свободным и
масштабно-привязанным. Заодно это объясняет, почему cbrt «работал случайно»: он берёт фиксированную
долю скобки, то есть отношение, и потому марширует — но фиксирует показатель 1/3 как константу, чего
метод себе позволить не может.
Развилка, вынесенная Валерию (решение не моё):
- A — оставить G2 строгим ⇒ линия закрывается сейчас, по выводу; отрицательный результат постановки, сам вывод сохранён.
- B — заменить G2 на его же измеримое чтение из пред-регистрации (L2: «на APS-154 суммарная цена не растёт»), реализовать самомасштабируемый режим и мерить; строгая тождественность была лишним обещанием, а не требованием протокола статьи.
Ослабление пред-регистрированного гейта после его провала — приём, которым легко обмануть себя, поэтому он делается только по явному решению, и оба варианта записаны здесь заранее.
Решение Валерия: вариант B — G2 заменён измеримым G2′, единица s = xtol зафиксирована выводом
(поправка 1 пред-регистрации).
2. 🔴 Измерено: логарифмический марш НЕ платит. Линия закрывается
Режим реализован как space="log" в pure_root (по умолчанию "x", опубликованный тракт
побитово не тронут — пиннится тестом); свип 126 конфигураций × 199 задач по тому же протоколу
(sweep_full.evaluate, тот же XTOL/MAXFEV/ACC, провал = полный бюджет, проверка границы 2× на
каждом прогоне), результат в своём файле sweep_log.json. Сравнение — по-наборно, правилом статьи,
и внутри семейства сторожей, несущих гарантию.
| проверка | цель | измерено | вердикт |
|---|---|---|---|
| G2′ цена на APS-154 не растёт | ≤ 2806 | 6940 | 🔴 FAIL — в 2.5 раза дороже |
| L3 Chandrupatla-45 ≤ 2857 | 2857 | 3115 | 🔴 FAIL |
| два набора вместе | < 6026 | 10 414 | 🔴 FAIL |
| L1 широкие скобки дешевле ≥2× | ≥2× | 4516 → 3115 = 1.45× | 🔴 FAIL |
| решено | ≥193/199 | 193/199 | 🟢 PASS |
гарантия 2⌈log₂(w/xtol)⌉+3 |
не нарушена | over2x = 0 во всех конфигурациях |
🟢 PASS |
Лучшие конфигурации: APS — log.ratio_soft.derived.step/safe 6940 (153/154); CHA —
log.ratio_soft.derived.credit 3115 (40/45). Опубликованное x-пространство: APS
pure.ratio.derived3.none 2806, CHA pure.sqrt.bracket.project 4516.
Содержательный итог. Механизм сработал в предсказанную сторону: на широких скобках марш
действительно дешевле (4516 → 3115), то есть мультипликативное движение — правильный диагноз
регима. Но цена на каноническом наборе выросла в 2.5 раза, а это ровно тот трейд, на котором
закончились все четыре прежние попытки (NEXT_PAPER_logarithmic.md §«что уже пробовали»). Теперь он
измерен и для логарифмической замены: пятая попытка провалилась тем же способом, и это, а не
числа, — главный вывод линии.
Что теперь ЗАПРЕЩЕНО повторять (пятый пункт к прежним четырём): глобальная замена переменной с
единицей xtol — APS 6940 против 2806, CHA 3115 против цели 2857. Локальное переключение между
пространствами по наблюдаемому признаку закрыто отдельно: это пункт 2-4 прежних запретов (детекторы
режима), все провалены.
Открытым остаётся только одно направление, и оно не про похожесть: разрыв на CHA закрывает
Chandrupatla-1997 (2423 против наших 4516) при нуле настроечных констант, то есть существующий
алгоритм уже делает то, чего мы добиваемся, и объяснение его преимущества — отдельная задача
(качество пробы, stage4_why.py), а не новая шкала шага.