Модуль 26. Воспроизведение¶
Чему вы научитесь в этом модуле
- Различать три уровня воспроизведения: перезапуск кода, переписывание по статье, повтор на новых данных.
- Видеть «пробел воспроизводимости» — то, что метод требует, а статья умолчала.
- Задавать авторам точный вопрос, на который можно ответить одной строкой конфига.
- Определять успех правильно: попадание в утверждение, а не в точное число.
- Собирать всё в одно действие — проверить чужой результат самому.
Время: около двух недель. Пререквизиты: модуль 24, модуль 25, модуль 7 и модуль 1.
Ноутбук: открыть в Colab · notebooks/26-reproduction.ipynb
Зачем нужен этот модуль¶
Модуль 24 научил проверять статью на бумаге, модуль 25 показал, что ни рецензия, ни лидерборд правоту не гарантируют. Остаётся единственная настоящая проверка — воспроизвести результат самому. Не «прошло рецензию», не «наверху лидерборда», а «я взял статью, запустил и получил то же — или не получил».
Это выпускной навык курса. Всё, что было до этого, — база, шум, честное сравнение, чтение статьи — здесь собирается в одно действие.
Три уровня¶
Перезапуск авторского кода — самый слабый уровень, и он проваливается чаще, чем принято думать: не та версия пакета, потерянный файл данных, недоступный чекпойнт. Переписывание по статье — настоящая проверка: именно здесь выясняется, что метод держится не на идее из аннотации, а на десятке умолчаний. Повтор на новых данных или условиях — самый сильный уровень: он проверяет не конкретное число, а то, что эффект вообще существует за пределами одной таблицы.
Пробел воспроизводимости¶
Между «методом» из статьи и работающим кодом лежит пробел: то, что метод требует, а статья не написала. Гиперпараметры «подобраны на валидации» — но не сказано какие именно. Данные «предобработаны стандартно» — но не сказано как. Оценка «по протоколу» — но не сказано, по какому конкретно. Каждое такое умолчание — ступень вниз от заявленного числа.
Голая реализация по тексту статьи даёт 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.
Что содержится внутри:
- Пробел воспроизводимости: голая реализация против заявленного числа. Добавляем недостающие детали по одной и наблюдаем, как копия входит в полосу шума.
- Критерий успеха: две копии — одна в полосе, другая нет. Показываем, почему «в полосе» — это успех, а «точно как в статье» — недостижимая и ненужная цель.
- Когда не воспроизводится: заявка, которой на честной базе просто нет. Никакие детали не закрывают пробел, потому что закрывать нечего.
Часть 2. Собственное воспроизведение¶
Возьмите небольшой результат из статьи — с открытым кодом или без.
- Сформулируйте центральную заявку одним предложением: что именно необходимо воспроизвести.
- Что в статье не написано настолько подробно, что приходится додумывать? Составьте список умолчаний.
- Реализуйте минимальное ядро, сравните с честной базой на своих зёрнах. Попали в полосу шума?
- Если нет — какой детали не хватает и как бы вы спросили авторов одной строкой?
- Каким был бы честный вывод: воспроизведено, воспроизведено частично или не воспроизведено?
Задание¶
- Смоделируйте пробел воспроизводимости: базовое качество плюс вклад нескольких «деталей». Постройте, как копия приближается к заявленному числу по мере их добавления.
- Задайте полосу успеха (± шум из модуля 1) и покажите две копии — попавшую и не попавшую. Обоснуйте вердикт для каждой.
- Смоделируйте невоспроизводимую заявку (истинного эффекта нет) и покажите, что добавление деталей не закрывает пробел.
- Сравните критерий «успех как точное число» и «успех как полоса» и покажите, почему первый отвергает даже верные воспроизведения.
- Напишите шаблон минимального воспроизводимого вопроса к авторам по конкретной недостающей детали.
Проверка усвоения¶
- Почему воспроизведение — единственная настоящая проверка?
- Назовите три уровня воспроизведения и что каждый из них проверяет.
- Что такое пробел воспроизводимости и из чего он складывается?
- Что считать успехом воспроизведения, а что — нет?
- Почему воспроизводят заявку, а не точное число?
- Как задать авторам вопрос, на который легко ответить?
- С каким модулем рифмуется «успех — это попадание в утверждение»?
Что дальше¶
Вы умеете проверить одну статью до конца — воспроизведением. В модуле 27 — как делать это не разово, а постоянно: чтение как практика, источники, фильтры, заметки, как не утонуть в потоке и не отстать. А затем — выпускная работа: взять статью, вышедшую после начала вашего обучения, и воспроизвести её центральную заявку.
Воспроизведение — единственная проверка, которая не верит на слово: не «прошло рецензию» и не «наверху лидерборда», а «я запустил и получил то же». Успех — это попадание в утверждение в пределах шума, а не совпадение до последней цифры.
Принцип
Между методом из статьи и работающим кодом всегда лежит пробел из умолчаний, и закрыть его — и есть проверка. Результат, который не переживает переписывания по статье, не воспроизведён, как бы уверенно он ни был заявлен.