Саймон Корнблит (Simon Kornblith), исследователь из GoogleAI и один из авторов прорывной работы SimCLR, прошел путь от изучения мозга обезьян в MIT до анализа «внутренностей» кремниевых нейросетей. В этом глубоком техническом интервью он объясняет, почему современные архитектуры часто страдают от избыточности, как правильно «готовить» самообучение (self-supervised learning) и почему язык Julia может быть эффективнее Python для машинного обучения.
🧠 От нейробиологии к нейросетям: почему кремний понятнее углерода 22:13
Саймон Корнблит начал свою карьеру как нейробиолог, стремясь понять природу сознания и механизмы формирования внутреннего представления внешнего мира . Проведя семь лет в MIT, работая с обезьянами, он пришел к выводу, что прогресс в этой области крайне медленен из-за технических ограничений .
Основные трудности нейробиологии, по мнению гостя:
- Ограниченность данных: Крайне сложно записывать активность всех нейронов в живом организме одновременно .
- Невозможность манипуляций: В биологическом мозге нельзя произвольно менять «архитектуру» или «функцию потерь», чтобы увидеть результат .
- Шум: Данные МРТ-сканирования крайне зашумлены, а время сканирования каждого пациента ограничено .
Саймон Корнблит утверждает, что переход в Machine Learning (ML) был логичным шагом: в искусственных нейросетях исследователь имеет полный доступ ко всем весам и активациям, система полностью детерминирована, что делает её более подходящим объектом для фундаментального изучения интеллекта . При этом гость призывает не впадать в антропоморфизм: хотя нейросети вдохновлены биологией, они не работают в точности как мозг . В частности, мозг не использует обратное распространение ошибки (backprop) в чистом виде, хотя может реализовывать некие схожие принципы .
📊 Метрика CKA: как сравнить «представления» внутри моделей 1:52
Одной из главных заслуг Саймона Корнблита стала разработка метода сравнения слоев нейросетей — Centered Kernel Alignment (CKA). До этого исследователи пытались использовать канонический корреляционный анализ (CCA), но он давал точность всего около 1.4% при попытке сопоставить соответствующие слои в двух сетях с разной инициализацией .
Суть метода CKA:
- Матрица сходства примеров: Вместо того чтобы сравнивать активации нейронов напрямую (которые могут быть перемешаны), строится матрица того, насколько похожи разные примеры (изображения) друг на друга с точки зрения конкретного слоя .
- Инвариантность: Полученная матрица (Gram matrix) позволяет сравнивать слои даже в сетях с разной архитектурой или разным количеством нейронов .
- Нормализация: Метрика нормализуется так, чтобы изменение масштаба признаков не влияло на итоговый показатель сходства (от 0 до 1) .
Саймон отмечает, что использование RBF-ядер (ядерных функций) в CKA особенно полезно для трансформеров, так как позволяет модели игнорировать глобальные расстояния между далекими примерами, фокусируясь на локальной структуре .
🧊 «Блочность» и патологии глубоких сетей 3:00
Используя CKA, Саймон Корнблит обнаружил феномен «блочности» (blockiness) в матрицах сходства . Когда на визуализации видны большие квадраты вдоль диагонали, это означает, что репрезентации в последовательных слоях перестают эволюционировать — они становятся идентичными друг другу.
Ключевые выводы исследования:
- Избыточная параметризация: Появление блоков — признак того, что сеть «насытилась» и перестала уточнять признаки .
- Возможность удаления слоев: Саймон утверждает, что слои внутри таких блоков можно удалять из сети практически без потери точности, так как они не несут новой информации .
- Предел глубины: В сетях без остаточных связей (ResNets) точность начинает падать именно в тот момент, когда в анализе CKA появляются эти блоки .
📉 Влияние функции потерь на архитектуру признаков 6:56
В своей работе «What's in a Loss Function for Image Classification» Саймон Корнблит исследовал, как разные лосс-функции (Softmax, MSE, Label Smoothing) влияют на то, чему учится сеть.
Результаты оказались неожиданными:
- Правило двух третей: Функция потерь влияет только на последнюю треть сети (ближе к выходу). Первые две трети слоев обучаются практически идентичным «общим» признакам вне зависимости от того, используете вы Softmax или среднеквадратичную ошибку [7:09, 43:29].
- Парадокс переноса знаний: По мнению Корнблита, существует обратная корреляция между точностью на ImageNet и эффективностью переноса знаний (transfer learning) . Лосс-функции, дающие рекордную точность, заставляют предпоследний слой слишком сильно разделять классы ImageNet, что делает признаки слишком узкоспециализированными .
- Преимущества стандартного Softmax: Он оставляет классы менее разделенными, сохраняя в признаках информацию, полезную для других задач .
🖼️ SimCLR: Рецепт эффективного самообучения 50:48
Проект SimCLR (Simple Framework for Contrastive Learning) доказал, что нейросети могут учиться на изображениях без меток так же эффективно, как и с ними . В основе лежит контрастивное обучение: мы берем одно изображение, делаем из него два разных «вида» (augmentations) и заставляем сеть понять, что это один и тот же объект, одновременно «отталкивая» его от всех остальных картинок в батче .
Золотой рецепт SimCLR от Саймона Корнблита:
- Две критические аугментации: Случайная обрезка (crop) и агрессивное искажение цвета (color distortion) . Без искажения цвета сеть просто учит цветовые гистограммы, что является «читерством» и не дает понимания объектов .
- Проекционная голова (Projection Head): MLP-слой поверх основного энкодера. Для финальных задач этот слой отбрасывается, так как он слишком специализируется на задаче контрастивного обучения, а признаки на слой ниже — более универсальны .
- Размер батча: В оригинальном SimCLR использовался батч из 4096 изображений, что давало 8190 «негативных» примеров для сравнения .
Саймон выражает скепсис по поводу использования GAN для аугментации данных. По его мнению, GAN не создает новых данных, а лишь иначе кодирует существующие индуктивные смещения (inductive biases). Простые геометрические аугментации эффективнее, так как в них человек напрямую вкладывает знание о семантической эквивалентности [1:25:34, 1:26:39].
🧪 SimCLR v2 и дистилляция знаний 1:15:11
Вторая версия фреймворка сфокусировалась на задаче полуавтоматического обучения (semi-supervised), когда размеченных данных очень мало (например, 1% или 10%).
Эффективный пайплайн SimCLR v2:
- Этап 1: Обучение гигантской модели (ResNet-152, в 3 раза шире стандартной) без меток .
- Этап 2: Тонкая настройка (fine-tuning) на небольшом количестве размеченных данных.
- Этап 3: Дистилляция. Гигантская модель становится «учителем», размечая весь массив неразмеченных данных для маленькой модели-«ученика» (например, ResNet-50) .
Этот подход позволяет маленькой модели достичь точности, сопоставимой с обучением на полном наборе данных с учителем .
🚀 Будущее: Видео и язык Julia 1:13:41
Саймон считает, что следующим прорывом станет обучение на видео . В видео информация о границах объектов заложена в их движении: то, что движется вместе, скорее всего, является одним объектом. Главным препятствием здесь остается вычислительная сложность обработки множества кадров одновременно .
В завершение беседы Корнблит объясняет свою приверженность языку Julia для исследований :
- Скорость: Julia позволяет писать код, который работает так же быстро, как C, без необходимости использовать Cython или Numba .
- Множественная диспетчеризация (Multiple Dispatch): Это позволяет эффективно работать со сложными структурами данных, например, разреженными матрицами, выбирая нужный метод на лету без потери производительности .
- Прощание с ООП: По мнению Саймона, объектно-ориентированный подход Python, где функции «привязаны» к данным, не идеален для ML. Julia предлагает разделение структур данных и функций, что более естественно для математических вычислений .