Перейти к содержанию

Модуль 26. Воспроизведение

Чему вы научитесь в этом модуле

  • Различать три уровня воспроизведения: перезапуск кода, переписывание по статье, повтор на новых данных.
  • Видеть «пробел воспроизводимости» — то, что метод требует, а статья умолчала.
  • Задавать авторам точный вопрос, на который можно ответить одной строкой конфига.
  • Определять успех правильно: попадание в утверждение, а не в точное число.
  • Собирать всё в одно действие — проверить чужой результат самому.

Время: около двух недель. Пререквизиты: модуль 24, модуль 25, модуль 7 и модуль 1. Ноутбук: открыть в Colab · notebooks/26-reproduction.ipynb

Зачем нужен этот модуль

Модуль 24 научил проверять статью на бумаге, модуль 25 показал, что ни рецензия, ни лидерборд правоту не гарантируют. Остаётся единственная настоящая проверка — воспроизвести результат самому. Не «прошло рецензию», не «наверху лидерборда», а «я взял статью, запустил и получил то же — или не получил».

Это выпускной навык курса. Всё, что было до этого, — база, шум, честное сравнение, чтение статьи — здесь собирается в одно действие.

Три уровня

1 · перезапуск кода авторов повторяемость — слабее всего 2 · переписать по статье воспроизводимость — настоящая проверка 3 · повтор на новых данных переносимость — сильнее всего проверяет меньше проверяет больше

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

Пробел воспроизводимости

Между «методом» из статьи и работающим кодом лежит пробел: то, что метод требует, а статья не написала. Гиперпараметры «подобраны на валидации» — но не сказано какие именно. Данные «предобработаны стандартно» — но не сказано как. Оценка «по протоколу» — но не сказано, по какому конкретно. Каждое такое умолчание — ступень вниз от заявленного числа.

Голая реализация по тексту статьи даёт 79.0 — до заявленных 89.0 далеко. Включайте недостающие детали по одной: препроцессинг, гиперпараметры, точный протокол оценки, усреднение по зёрнам. Копия подтягивается вверх и в какой-то момент входит в зелёную полосу — шум вокруг заявленного числа. Именно в этот момент происходит успех.

Что считать успехом

Успех воспроизведения — не совпадение до последней цифры. Ваши 88.5 против заявленных 89.0 — это успех: разница меньше шума из модуля 1, эффект того же знака и того же порядка, утверждение подтвердилось. А вот 84.0 — это провал: заявленный прирост не воспроизвёлся, и не важно, насколько красиво он был описан в статье.

Успех воспроизведения — это попадание в утверждение, а не в число. Поэтому воспроизводить надо не «точность 89.0», а центральную заявку: «метод даёт заметный прирост над честной базой, переживающий смену зерна». Если это подтвердилось в пределах полосы шума — результат воспроизведён.

Как спрашивать авторов. Когда деталь не удаётся найти ни в статье, ни в коде, авторов спрашивают — коротко и конкретно. Не «не работает, помогите», а «в разделе 4.2 указан lr, но не расписание; вы использовали cosine или step?». Вопрос, на который можно ответить одной строкой конфига, получает ответ охотно. Это тот же тон, что в правилах участия организации: минимальный воспроизводимый вопрос уважает время того, кто отвечает.

Воспроизведение — это проверка цитат из модуля 22, развёрнутая на целую статью. Там вы не верили утверждению, пока оно не указывало на строку в источнике; здесь вы не верите заявке, пока её число не подтверждается кодом, который вы запустили сами. И «попасть в утверждение, а не в точную цифру» — тот же принцип: подтверждается заявка в пределах шума из модуля 1, а не последняя цифра после запятой.

Практическая часть

Часть 1. Работа с ноутбуком

Откройте notebooks/26-reproduction.ipynb. Только numpy и matplotlib.

Что содержится внутри:

  1. Пробел воспроизводимости: голая реализация против заявленного числа. Добавляем недостающие детали по одной и наблюдаем, как копия входит в полосу шума.
  2. Критерий успеха: две копии — одна в полосе, другая нет. Показываем, почему «в полосе» — это успех, а «точно как в статье» — недостижимая и ненужная цель.
  3. Когда не воспроизводится: заявка, которой на честной базе просто нет. Никакие детали не закрывают пробел, потому что закрывать нечего.

Часть 2. Собственное воспроизведение

Возьмите небольшой результат из статьи — с открытым кодом или без.

  1. Сформулируйте центральную заявку одним предложением: что именно необходимо воспроизвести.
  2. Что в статье не написано настолько подробно, что приходится додумывать? Составьте список умолчаний.
  3. Реализуйте минимальное ядро, сравните с честной базой на своих зёрнах. Попали в полосу шума?
  4. Если нет — какой детали не хватает и как бы вы спросили авторов одной строкой?
  5. Каким был бы честный вывод: воспроизведено, воспроизведено частично или не воспроизведено?

Задание

  1. Смоделируйте пробел воспроизводимости: базовое качество плюс вклад нескольких «деталей». Постройте, как копия приближается к заявленному числу по мере их добавления.
  2. Задайте полосу успеха (± шум из модуля 1) и покажите две копии — попавшую и не попавшую. Обоснуйте вердикт для каждой.
  3. Смоделируйте невоспроизводимую заявку (истинного эффекта нет) и покажите, что добавление деталей не закрывает пробел.
  4. Сравните критерий «успех как точное число» и «успех как полоса» и покажите, почему первый отвергает даже верные воспроизведения.
  5. Напишите шаблон минимального воспроизводимого вопроса к авторам по конкретной недостающей детали.

Проверка усвоения

  1. Почему воспроизведение — единственная настоящая проверка?
  2. Назовите три уровня воспроизведения и что каждый из них проверяет.
  3. Что такое пробел воспроизводимости и из чего он складывается?
  4. Что считать успехом воспроизведения, а что — нет?
  5. Почему воспроизводят заявку, а не точное число?
  6. Как задать авторам вопрос, на который легко ответить?
  7. С каким модулем рифмуется «успех — это попадание в утверждение»?

Что дальше

Вы умеете проверить одну статью до конца — воспроизведением. В модуле 27 — как делать это не разово, а постоянно: чтение как практика, источники, фильтры, заметки, как не утонуть в потоке и не отстать. А затем — выпускная работа: взять статью, вышедшую после начала вашего обучения, и воспроизвести её центральную заявку.

Воспроизведение — единственная проверка, которая не верит на слово: не «прошло рецензию» и не «наверху лидерборда», а «я запустил и получил то же». Успех — это попадание в утверждение в пределах шума, а не совпадение до последней цифры.


Принцип

Между методом из статьи и работающим кодом всегда лежит пробел из умолчаний, и закрыть его — и есть проверка. Результат, который не переживает переписывания по статье, не воспроизведён, как бы уверенно он ни был заявлен.