Джереми Ховард в MIT: главные эвристики разработки нейросетей

MIT OpenCourseWare 8,5 тыс. 1 ч 15 мин 11 мин 11.02.2026
Главное

В рамках образовательного курса MIT OpenCourseWare состоялась лекция, посвященная практическим аспектам, эвристикам и «хакам» в области глубокого обучения. Лектор Джереми Ховард представил альтернативный взгляд на разработку нейросетевых систем, где эмпирический опыт практиков зачастую опережает строгие академические теории. В материале разбираются ключевые приемы оптимизации пайплайнов, методы работы с данными и ловушки, в которые часто попадают разработчики.

🛠️ Введение в «хакинг» глубокого обучения 0:12

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

В качестве основы для лекции были использованы материалы Эвана Шелхамера (Evan Shelhamer), создателя некогда популярного фреймворка Caffe, а также публикации из блога Андрея Карпати (Andrej Karpathy). Несовершенство классических подходов Ховард иллюстрирует известным исследованием, в котором нейросеть смогли переобучить на абсолютно случайные метки. С точки зрения классической статистики (например, размерности Вапника — Червоненкиса), обобщающая способность в таком случае должна стремиться к нулю, однако на практике глубокие сети успешно обобщают данные. Именно на таком чисто прикладном подходе к программированию систем, где математика вторична, и строится философия курсов вроде fast.ai.

👁️ Станьте другом каждому пикселю: важность анализа данных 2:57

Один из главных принципов работы с искусственным интеллектом лектор формулирует через историю взаимоотношений ученых Алёши Эфроса (Alyosha Efros) и его ментора Джитендры Малика (Jitendra Malik). Когда молодой Эфрос приносил графики с тридцатипроцентной точностью или необъяснимыми скачками лосса, Малик требовал прекратить показывать сухую статистику и призывал буквально «стать другом каждому пикселю». Ховард считает этот призыв универсальным: в музыке нужно дружить с каждой нотой, в химии — с каждой молекулой.

В качестве негативного примера Ховард приводит разбор системы диагностики рака груди по снимкам грудной клетки. Первоначальная модель показала феноменальную точность в 99%, однако проверка выявила скрытый дефект. Оказалось, что нейросеть анализировала не саму ткань, а маркировочную букву «R» в углу снимка. Эта буква указывала на конкретную больницу, куда направляли исключительно тяжелых пациентов с подтвержденной злокачественной опухолью. Возникла ложная корреляция, из-за которой модель полностью провалилась на независимых тестах в других медицинских учреждениях.

Лектор настоятельно рекомендует всегда визуализировать не только кривую потерь (loss curve), но и промежуточные результаты. При обучении генеративно-состязательных сетей (GAN) для создания изображений кошек график потерь может выглядеть хаотично, однако визуальный анализ сгенерированных сэмплов сразу выявляет периодические осцилляции. Аналогично, в личном опыте Ховарда при симуляции игры «хищник — жертва» для цифровых муравьев вознаграждение агентов внезапно вышло на плато. Только взглянув на визуализацию, удалось понять, что муравьи просто падали набок и застревали, что было невозможно определить по одной лишь кривой лосса.

📊 Препроцессинг и проверка распределений 9:36

Для предотвращения системных сбоев Ховард советует детально изучать распределение входных и выходных данных, а также отслеживать дисбаланс классов. Если в обучающей выборке 99% случаев составляют доброкачественные опухоли, система может просто слепо выдавать один и тот же ответ и демонстрировать высокую точность, фактически игнорируя входные параметры.

Одной из самых распространенных ошибок в студенческих проектах лектор называет некорректный препроцессинг данных. Разработчик может предполагать, что изображения нормализованы в диапазоне от 0 до 1, тогда как библиотека загружает их как бесзнаковые 8-битные целые числа (uint8) от 0 до 255. Если применить к такому массиву жесткое отсечение (clamping) до единицы, вся полезная информация превратится в массив нулей и единиц.

Ховард предлагает простое правило: проверять формат данных необходимо непосредственно перед строкой выполнения прямого прохода модели (model.forward). Исторические библиотеки, такие как DeCAF или Caffe (предшественники PyTorch), часто преподносили сюрпризы: DeCAF переворачивал картинки вверх ногами, а Caffe переставлял цветовые каналы из формата RGB в BGR из-за старых конвенций OpenCV. В результате предобученная модель могла называть спелую ягоду черникой просто потому, что красный канал интерпретировался как синий.

Для автоматизации контроля Ховард использует простую функцию inspect_data, которую внедряет в ключевые участки кода. Данная функция должна выводить базовые метрики тензора:

Стандартизация данных (вычитание среднего и деление на корень из дисперсии) позволяет избавиться от зависимости от единиц измерения. По словам лектора, это делает модель инвариантной к масштабу: геопространственные данные будут обрабатываться одинаково эффективно независимо от того, указаны они в метрах или дюймах. Другим популярным методом является нормирование в жесткий диапазон от 0 до 1 путем вычитания минимума и деления на разность между максимумом и минимумом. Однако Ховард предупреждает, что независимое масштабирование по осям может быть опасным, если физический смысл координат должен оставаться неизменным.

🌌 Опасности малых размерностей и магия больших пространств 19:56

Человеческая интуиция сформирована трехмерным физическим миром, поэтому многомерные пространства кажутся нам аномальными. Как утверждает Джереми Ховард, в контексте Deep Learning все обстоит с точностью до наоборот: в низких размерностях математика ведет себя странно, а в высоких — становится простой и понятной. Например, многомерное гауссово распределение напоминает мыльный пузырь, где почти вся вероятность сосредоточена в тонкой полосе вокруг поверхности сферы.

Различия между методами нормализации RMS-norm и LayerNorm (стандарт для трансформеров) практически стираются в пространствах высокой размерности. Однако в двумерном пространстве LayerNorm из-за вычитания среднего лишает вектор одной степени свободы, а RMS-norm урезает еще одну, из-за чего выходные данные дегенерируют всего в две точки вместо одномерного многообразия.

Похожие проблемы возникают и с пакетной нормализацией (Batch Norm), которая некорректно работает при малом размере батча. Лектор поделился личным курьезом из времен разработки известного проекта Pix2Pix: в одном из базовых сценариев он случайно установил размер батча равным 1. В результате Batch Norm просто вычитал значение элемента из самого себя, превращая данные в ноль. Ошибка была исправлена, но Ховард вынес важное эмпирическое правило:

Для предотвращения скрытых ошибок при изменении формы тензоров лектор советует использовать уникальные числа для каждого измерения на этапе тестирования архитектуры. Если все размерности сделать одинаковыми (например, 64), код успешно выполнится даже при ошибочной перестановке осей, и баг останется незамеченным. Использование разных чисел гарантированно вызовет ошибку несовпадения форм. Также критически важно следить за приведением типов: приведение стандартизированного тензора с отрицательными значениями к типу uint8 мгновенно уничтожит часть данных, так как этот тип не поддерживает знак «минус».

🔄 Инструменты трансформации тензоров и аугментация данных 27:23

Постоянные операции изменения формы тензоров (reshape, permute, flatten, unsqueeze) составляют до половины кода на PyTorch и часто превращаются в кошмар для разработчика. Лектор признается, что сам не всегда помнит, упорядочивает ли стандартный reshape данные по строкам или по столбцам (в PyTorch по умолчанию используется непрерывное расположение по строкам — row-contiguous). Чтобы упростить этот процесс, Ховард рекомендует использовать библиотеку einops и ее универсальную функцию rearrange, которая описывает трансформации в виде понятных текстовых строк.

Вторая фундаментальная техника — аугментация данных. Существует академическое течение «геометрического глубокого обучения» (Geometric Deep Learning), сторонники которого призывают заменять искусственное искажение выборки проектированием инвариантных архитектур. Однако, по мнению Ховарда, для хорошего инженера-практика этот совет неверен. Аугментация значительно проще в реализации, интуитивно понятна и, главное, не зависит от архитектуры. Ее можно применять даже к обычным полносвязным перцептронам (MLP) без усложнения графа вычислений.

📈 Усложнение задач и рандомизация доменов 33:36

Демонстрируя три различных графика кривой потерь, Ховард отмечает, что идеальный лосс должен снижаться плавно и постепенно. Слишком быстрое падение графика до плоского плато указывает на то, что задача для модели оказалась чересчур простой, а вычислительные ресурсы (FLOPS) тратятся вхолостую. По мнению лектора, цель разработчика — не просто минимизировать лосс через обратное распространение ошибки, а постоянно усложнять саму выборку до тех пор, пока нейросети не придется извлекать из нее нетривиальные паттерны.

В робототехнике этот подход известен как рандомизация доменов (domain randomization) и применяется для переноса навыков из симуляции в реальный мир (sim-to-real). Если обучать робота захвату блоков при неизменном освещении и цвете объектов, он мгновенно сломается в реальной комнате. Искусственное зашумление среды увеличивает время обучения, но гарантирует устойчивость модели к внешним изменениям.

Ховард приводит в пример проект OpenAI по управлению кубиком с помощью роботизированной руки. Инженеры компании не только меняли визуальные текстуры, но и рандомизировали физические параметры, включая силу тяжести. Лектор объясняет, что это делалось не ради подготовки робота к полету на Марс, а для компенсации погрешностей реальных акселерометров. С добавлением шума процесс потребовал в 10 раз больше времени обучения (симулированных лет), но обеспечил феноменальную надежность. Ховард резюмирует: высокая точность на этапе обучения указывает на избыточную простоту задачи; разработчик должен сознательно делать среду сложнее для улучшения обобщающей способности.

🧩 Смена парадигмы: от алгоритмов к данным 41:47

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

Для иллюстрации важности контекста лектор приводит интерактивный тест на угадывание слов из классических романов. Предсказать второе слово в предложении крайне трудно, но по мере удлинения фразы задача становится тривиальной (как в случае с романом «Моби Дик» и фразой «Call me Ishmael»). Ховард утверждает, что чем больше информации подается на вход модели, тем проще становится задача прогнозирования.

В математическом выражении нейросеть моделирует условную вероятность $P(Y|X)$. Если входной вектор $X$ содержит мало информации, пространство вариантов $Y$ огромно и содержит массу неопределенностей. Обычные функции потерь (например, $L_2$-loss для регрессии) выдают лишь усредненную точечную оценку и не умеют работать со сложными распределениями. По словам Ховарда, главный инженерный хак современности заключается в том, чтобы насытить $X$ таким объемом контекста, при котором функция распределения схлопнется в детерминированную дельта-функцию.

Именно этот принцип привел к революции в генерации изображений по тексту. В 2019 году модели могли генерировать только стандартизированные лица, поскольку пытались моделировать распределение $Y$ без внешних подсказок $X$. Современные системы (DALL-E, Stable Diffusion, Midjourney) способны создавать любые сюжеты, так как они обучены на простых гауссовых распределениях, жестко обусловленных гигантским текстовым описанием.

Один из слушателей привел контрпример из сферы страховых технологий (insurance tech): при разработке систем детектирования автомобильных аварий на базе смартфонов инженеры столкнулись с тем, что алгоритмы Apple Crash Detection ложно срабатывали на американских горках. При этом на 1 миллион миль пробега приходится всего около 5 реальных аварий, и слепое увеличение датасета до 8 терабайт не решает проблему редких классов. Ховард согласился, что масштаб — это лишь прокси для разнообразия и покрытия выборки. Для решения проблемы с аттракционами необходимо передавать в модель геолокационный или ситуационный контекст, снижающий априорную вероятность аварии в парке развлечений.

⚖️ Принцип простоты и масштабирование 53:09

Главный закон моделирования, по мнению Ховарда, звучит лаконично: делайте проще. Простые модели легче собирать, отлаживать, масштабировать и анализировать теоретически. Опираясь на бритву Оккама, лектор утверждает, что самая простая модель, способная описать данные, всегда будет наилучшей. Он призывает студентов не бороться за последний 1% точности на бенчмарках путем усложнения архитектуры. Метод, очищенный от лишних надстроек, в долгосрочной перспективе окажется более жизнеспособным и окажет большее влияние на индустрию.

В практической разработке популярность инструмента важнее его пиковой производительности. Ховард дает прикладной совет: при поиске готового решения нужно смотреть не на верхние строчки лидербордов (leaderboards), а на количество звезд и форков на GitHub. Оптимальный выбор — это наиболее производительная модель из тех, что набрали более 10 000 звезд на GitHub. Проекты вроде AlphaFold 2 доказывают, что использование качественных предобученных моделей позволяет «стоять на плечах гигантов» и экономить ресурсы.

Еще один элегантный хак — сведение новой задачи к уже решенной. Десять лет назад Ховард участвовал в проекте по колоризации черно-белых снимков. Вместо сложной регрессии по предсказанию непрерывных значений цвета для каждого пикселя, авторы квантовали цветовое пространство на дискретные классы и представили их в виде one-hot векторов. С помощью сверточной сети, скользящей по изображению, задача колоризации превратилась в стандартную попиксельную классификацию через Cross-Entropy лосс. Softmax-регрессия оказалась гораздо выразительнее обычной регрессии наименьших квадратов, так как она способна моделировать произвольные распределения вероятностей. Базовый рецепт успеха на сегодня: перевести данные в one-hot векторы, свести цель к классификации, запустить оптимизатор Adam и архитектуру Transformer.

🛑 Чего следует избегать и как завершать проекты 1:04:10

Лектор призывает полностью отказаться от использования пакетной нормализации (Batch Norm) в пользу Layer Norm. По мнению Ховарда, Batch Norm создает губительную зависимость между размером батча и динамикой обучения. Различное поведение слоя во время обучения и тестирования, а также колоссальные накладные расходы на коммуникацию между нодами при распределенных вычислениях делают его устаревшим.

Вместо этого Ховард предлагает опираться на триаду масштабирования: наращивать объемы данных, увеличивать ширину и глубину модели и продлевать время вычислений. Во время работы над проектом колоризации лектор вместе с коллегой уехал на месяц на побережье Франции, оставив запущенный базовый алгоритм работать на GPU. Спустя две недели они обнаружили великолепный результат, превзошедший все хитрые архитектурные модификации. Эту концепцию называют «горьким уроком» (the bitter lesson): масштаб и время вычислений решают больше, чем изящный дизайн алгоритмов.

При этом Ховард напоминает правило автора «Маленького принца» Антуана де Сент-Экзюпери: совершенство достигается не тогда, когда нечего добавить, а когда нечего отнять. Успешный инженерный цикл должен выглядеть так: добавлять компоненты, пока система не заработает, а затем безжалостно удалять лишнее, пока она не начнет ломаться.

В завершение лектор дал несколько кратких рекомендаций:

Deep Learning похож на кулинарию, где успех зависит от выверенного баланса специй, а не от слепого упования на один модный ингредиент вроде механизма внимания (Attention) или функций активации ReLU.

💬 Цитаты

«Станьте другом каждому пикселю.»

Джереми Ховард 04:17

«Высокая точность на этапе обучения указывает на избыточную простоту задачи.»

Джереми Ховард 41:30

«Совершенство достигается не тогда, когда нечего добавить, а когда нечего отнять.»

Джереми Ховард 1:08:50
👥 Спикер
📚 Упомянутые книги
🔗 Упомянутые сайты и проекты
📖 Термины
Batch Norm
Метод пакетной нормализации активаций нейросети, зависящий от размера батча.
Layer Norm
Метод нормализации активаций внутри одного слоя, независимый от размера батча.
einops
Библиотека для гибкого и наглядного манипулирования размерностями тензоров.
Domain Randomization
Метод случайного изменения параметров среды в симуляции для повышения устойчивости модели в реальном мире.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект Джереми Ховард Deep Learning PyTorch fast.ai