Train и eval в ARC-AGI-2 — это разные распределения

в 13:29, , рубрики: AGI, ARC Prize, arc-agi, бенчмарки, валидация, воспроизводимость, критерий Колмогорова-Смирнова, машинное обучение, сдвиг распределения, статистика

Train и eval в ARC-AGI-2 лежат в разных распределениях

Если вы замеряете прогресс своего солвера на случайной подвыборке из train, вы замеряете его не на том наборе. Медианная задача train занимает 100 клеток на выходе, у медианной задачи eval их 225. Два и более тестовых входа требуют 6.9 процента задач train и 40.8 процента задач eval. Расхождение держится по всем шести структурным осям, которые я померил, и переживает поправку на множественные сравнения.

Дальше идёт распределительное сравнение обоих публичных наборов ARC-AGI-2, отпечатки файлов, на которых оно сделано, и подмножество из train, подобранное под eval по структуре. CSV со списком задач в конце.

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

Train и eval в ARC-AGI-2 — это разные распределения - 1

1. Что уже известно и кем

Это не разоблачение. Разница между наборами не скрывается, о ней написано в документации.

Страница руководства ARC Prize говорит прямо:

the public training set consists of simpler tasks whereas the public evaluation set is roughly the same level of difficulty as the private test set

То есть публичный train состоит из задач попроще, а публичный eval примерно того же уровня, что закрытый тест. На странице ARC-AGI-2 train помечен как Uncalibrated, а все три оценочных набора как Calibrated.

Количественное сравнение тоже уже публиковалось, но для предыдущего поколения бенчмарка. Работа H-ARC (arXiv:2409.01374), собравшая решения 1393 человек по 800 задачам ARC-AGI-1, приводит:

An independent samples t-test confirmed that output grid size (number of grid cells) is significantly larger on average in the evaluation set (M = 235.1, SD = 246.7) than in the training set (M = 136.2, SD = 164.9), t(798) = 6.81, p < .001

Там же измерено человеческое: train решается людьми в 76.2 процента случаев, eval в 64.2.

Подмножество, подобранное под eval, тоже уже просили. Ronan Killian McGovern в arXiv:2511.02886, раздел 4.7:

it would have been highly useful to have an ARC AGI II training split of 120 tasks in the same distribution as the public eval and semi-private eval set

На русском про ARC писали немного. Татьяна Шаврина в 2020 году приводила структурные числа корпуса, пересказанные из статьи Шолле, без разбиения по наборам. Никита Зелинский в том же году разбирал подходы к решению. Распределительного сравнения наборов ARC-AGI-2 я не нашёл.

Чего, по моему поиску, опубликовано не было: распределительная статистика вместо средних на корпусе ARC-AGI-2 в его нынешнем составе 1000 на 120; две оси, которых нет ни у H-ARC, ни в публичных ноутбуках; и собственно готовое подмножество. Если такая работа есть и я её пропустил, киньте ссылку в комментарии, я добавлю её в текст.

2. Что такое задача ARC-AGI-2

Одна задача состоит из нескольких демонстрационных пар «вход, выход» и одного или нескольких тестовых входов, для которых нужно построить выход. Сетка до 30 на 30 клеток, до 10 цветов. Публичных наборов два: train на 1000 задач и eval на 120.

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

Train и eval в ARC-AGI-2 — это разные распределения - 2

3. На каких файлах и как считалось

Наборы обновляются. В мае 2025 в eval прошла серия коммитов, убирающих первый тестовый индекс у части задач, и снимок, скачанный до и после, даёт разные числа. Поэтому отпечатки обязательны.

arc-agi_training_challenges.json
  sha256 779eaba89790ebad9af02514a7efc0aefaf2cf8236f046a31bbf8b9ec48f20f5
  4 010 050 байт, 1000 задач

arc-agi_evaluation_challenges.json
  sha256 e7c62a4bd211867c6b538f66b8013b81f299663c82ca062f49a52bf439d6e4e8
  984 679 байт, 120 задач

Шесть признаков на задачу, все из демонстрационных пар:

  • площадь входа и площадь выхода, как произведение медианной высоты на медианную ширину по парам задачи

  • число различных цветов на входе и на выходе, медиана по парам

  • число демонстрационных пар

  • число тестовых входов

Отдельно оговорю определение площади, потому что на нём легко разойтись. Произведение медианной высоты на медианную ширину не равно медиане площадей. Величины расходятся на 23.5 процента задач train и 35.0 процента eval. Я использую первое, и повторить это можно по коду в репозитории.

4. Сдвиг есть, и он распределительный

Средние сравнивать мало: они прячут форму. Ниже накопленные распределения по каждой оси, и статистика Колмогорова-Смирнова, которая меряет максимальное расхождение между ними.

Train и eval в ARC-AGI-2 — это разные распределения - 3

Ось

Медиана train

Медиана eval

KS

p (Манн-Уитни)

Тестовых входов

1

1

0.339

3.95e-30

Площадь входа

114

324

0.436

6.26e-24

Площадь выхода

100

225

0.384

4.82e-17

Цветов на входе

3

5

0.331

7.30e-14

Цветов на выходе

3

4

0.276

5.14e-09

Демонстраций

3

3

0.125

2.83e-03

Шесть признаков дают шесть проверок, и на них нужна поправка. По методу Холма при уровне 0.05 выживают все шесть, включая самую слабую: скорректированное p для числа демонстраций равно 2.83e-03.

Здесь нужна оговорка, иначе её сделают за меня. Колонка p в таблице выше это Манн-Уитни, а KS стоит рядом как мера величины расхождения. Это две разные проверки, и на слабейшей оси они расходятся в выводе. При n=1000 и 120 критическое значение KS на уровне 0.05 равно 0.131, а число демонстраций даёт 0.125, то есть сам критерий Колмогорова-Смирнова совпадение здесь не отвергает, его p равно 6.33e-02. На остальных пяти осях оба критерия согласны, и запас там огромный.

Та же ось выделяется ещё раз. По пяти признакам eval крупнее, а по числу демонстраций мельче: в среднем 2.98 против 3.23. Задачи eval крупнее и разноцветнее, но примеров к ним дают чуть меньше.

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

Train и eval в ARC-AGI-2 — это разные распределения - 4

5. Где сдвиг живёт на самом деле

Две оси заслуживают отдельного разговора, потому что их, насколько я нашёл, не мерили.

Начну с числа тестовых входов. Это сильнейший разрыв из всех шести, p = 3.95e-30.

Тестовых входов

train

eval

1

931

71

2

63

46

3

5

3

4

1

0

Два и более выхода требуется от 6.9 процента задач train и 40.8 процента задач eval. Хи-квадрат 127.3, p = 1.59e-29.

Практическое следствие прямое. Задача с двумя тестовыми входами засчитывается только если оба выхода верны. Если ваш пайплайн отлаживался на train, он в 93 процентах случаев видел задачи с одним ответом, а на eval такие задачи составляют 59 процентов. Это разная арифметика итогового скора, и она не про то, насколько хитрее правило.

Train и eval в ARC-AGI-2 — это разные распределения - 5

Теперь входная сторона задачи. Все известные мне сравнения смотрят на выход. Между тем по входу расхождение сильнее: KS 0.436 против 0.384. Медианная площадь входа 114 клеток в train и 324 в eval, почти троекратно.

Это меняет то, где искать причину. Дело не в том, что от солвера просят построить большее полотно. Ему и на вход подают почти втрое больше материала, и разбирать этот материал тяжелее по одному только объёму.

6. Подмножество: как построено и чем оно не является

Раз наборы разные, напрашивается вопрос: можно ли собрать из train подвыборку, которая по структуре похожа на eval, и валидироваться на ней.

Можно. Метод простой: стандартизуем признаки по статистикам train, для каждой задачи eval берём ближайшую задачу train в этом пространстве, без повторов.

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

Поэтому проверка построена так:

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

  2. Половина eval, 60 задач, используется для подбора. Вторая половина, 60 задач, откладывается и подбором не видится вообще.

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

Результат:

Ось

KS случайного train

KS подобранного

Участвовал в подборе

Площадь выхода

0.362

0.150

да

Цветов на выходе

0.284

0.083

да

Демонстраций

0.159

0.083

да

Площадь входа

0.459

0.167

нет, контроль

Цветов на входе

0.348

0.200

нет, контроль

Тестовых входов

0.248

0.217

нет, контроль

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

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

Ещё одна проверка, шумовой пол. Может быть, любая подвыборка из 60 задач случайно окажется ближе к eval, просто из-за размера. Взял 2000 случайных подвыборок того же размера и померил их KS по площади выхода до отложенной половины: медиана 0.367, пятый перцентиль 0.283. Подобранная даёт 0.150. Ни одна из 2000 случайных не подошла к eval так же близко.

Train и eval в ARC-AGI-2 — это разные распределения - 6
Train и eval в ARC-AGI-2 — это разные распределения - 7

7. Индекс сложности я проверил против людей, и он не прошёл

Здесь я обязан испортить собственную историю.

После такой таблицы тянет свернуть шесть признаков в один индекс сложности и объявить eval сложнее. Я так и сделал в первой версии, а потом проверил этот индекс против того, как задачи решают живые люди, по данным H-ARC.

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

Train и eval в ARC-AGI-2 — это разные распределения - 8

Проверка этого раздела не закончена: числа по H-ARC я взял из литературы и должен пересчитать сам на их опубликованных данных, прежде чем публиковать. До этого раздел идёт без конкретных значений.

Что из этого следует для всего текста: слово «сложнее» я из него убрал. Наборы структурно разные, и это измерено. Сложнее ли eval для солвера, отдельный вопрос, на который структурные признаки ответа не дают.

8. Чего это измерение не даёт

Прямым списком, чтобы не пришлось вычитывать между строк.

  • Оно ничего не говорит о закрытом тесте. Мерялись два публичных файла.

  • Оно не предсказывает решаемость. Структура и трудность расходятся, см. предыдущий раздел.

  • Оно никого не обвиняет в сокрытии. Документация описывает разницу открытым текстом.

  • Оно не даёт готового рецепта поднять скор. Подмножество делает вашу оценку честнее, а не выше.

  • Признаки описывают геометрию и палитру, но не природу правила. Задача может быть маленькой и при этом требовать неочевидного преобразования.

  • Подбор ведётся по трём осям из шести, и ось числа тестовых входов он почти не чинит.

  • В eval всего 120 задач, и все интервалы на такой выборке широкие.

  • Результаты привязаны к конкретному снимку файлов, отпечатки приведены выше, наборы обновляются.

9. Как применить это к своим данным

Тот же приём переносится на любую задачу, где обучение и оценка собирались разными людьми, в разное время или по разным критериям. Четыре шага.

  1. Опишите каждый объект несколькими структурными признаками, которые видны без разметки: размер, разнообразие, количество частей, объём входа.

  2. Сравните распределения признаков между обучением и оценкой критерием на распределениях, а не по средним. Средние прячут форму.

  3. Если признаков несколько, поправьте уровень значимости на множественность. Шесть проверок дают шесть шансов случайно найти разницу.

  4. Если сдвиг есть, соберите подвыборку обучения, похожую на оценку, и проверьте её на отложенной части оценки и на признаках, по которым не подбирали. Без этих двух проверок подбор доказывает сам себя.

Ошибаются обычно на четвёртом шаге.

10. Артефакты

  • CSV с подобранным подмножеством: список идентификаторов задач train и их признаки.

  • Код, считающий все числа этого текста, включая отпечатки файлов и шумовой пол.

Если найдёте ошибку в расчётах, напишите в комментариях, поправлю в тексте и укажу, кто поправил.

Автор: xodarev

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js