В лекции Стэнфордского университета в рамках престижного курса Stanford CS231N ассистент-профессор Вашингтонского университета Ранджай Кришна подробно разбирает тектонический сдвиг в области компьютерного зрения — переход от узкоспециализированных систем к универсальным мультимодальным базовым моделям. Исследователь объясняет принципы работы фундаментальных архитектур вроде CLIP и CoCa, анализирует их скрытые ограничения, а также представляет собственную разработку Molmo, созданную в соавторстве с институтом ИИ Аллена. В центре повествования — глубинная философия работы с данными, механизмы интеграции визуальных токенов в большие языковые модели и концепция «визуального программирования», меняющая представление об агентах ИИ.
🌐 Смена парадигмы: от специализированных систем к базовым моделям 0:05
Долгое время развитие компьютерного зрения строилось вокруг создания изолированных моделей под конкретные прикладные задачи. Процесс разработки таких систем традиционно состоял из стандартной цепочки действий:
- Сбор и разметка специализированного набора данных, разделенного на обучающую и тестовую выборки.
- Обучение конкретной архитектуры под узкую задачу — например, классификацию картинок или генерацию подписей (image captioning).
- Оценка качества работы модели на фиксированном тестовом датасете.
Однако в последние годы индустрия переживает фундаментальный сдвиг в сторону разработки так называемых базовых моделей (foundation models). Ключевая идея этого подхода заключается в предварительном обучении (pre-training) нейросети на колоссальных массивах разнородных данных. В ходе этого процесса модель приобретает широкий спектр общих навыков, которые впоследствии можно адаптировать (fine-tune) под индивидуальные нужды пользователя с минимальными затратами ресурсов.
В качестве хрестоматийного примера такой архитектуры Ранджай Кришна приводит текстовые модели семейства GPT. Изначально обученная на веб-страницах из дампа Common Crawl, базовая модель способна быстро перестраиваться на решение математических задач, символьный логический вывод или викторины. Главное преимущество базового подхода — для адаптации к новой задаче требуется ничтожно малое количество размеченных данных, а в ряде случаев можно обойтись и вовсе без них.
В текстовом домене революцию базовых моделей запустили архитектуры ELMo и BERT, за которыми последовали современные GPT и T5. В рамках текущей лекции Stanford Online фокус смещается на мультимодальные системы. По мнению Ранджая Кришны, хотя в научном сообществе до сих пор нет консенсуса относительно единого строгого определения базовой модели, их ключевыми признаками остаются робастность, универсальность, гигантское число параметров и использование методов самообучения (self-supervised learning).
✂️ Технология CLIP: коннектор между текстом и пикселями 4:10
Первым успешным шагом на пути создания базовых моделей для классификации изображений стало применение методов контрастивного самообучения (contrastive self-supervised learning). В качестве технологического фундамента этой идеи выступает алгоритм SimCLR. Его суть сводится к максимизации схожести векторов представлений для разных аугментаций одного и того же изображения (например, двух вариаций фотографии кошки) и одновременному отталкиванию векторов совершенно разных объектов (кошки и собаки). Цель такого обучения — сделать латентное пространство признаков настолько инвариантным, чтобы модель могла легко распознать концепт кошки, даже если ей покажут карандашный набросок или искажённый силуэт.
Мультимодальный подход развивает эту идею, внедряя текстовые описания непосредственно в визуальное репрезентативное пространство. Разработанная компанией OpenAI в 2021 году модель CLIP (Contrastive Language-Image Pre-training) реализует этот принцип на практике. Архитектура CLIP состоит из двух независимых компонентов:
- Визуальный кодировщик (image encoder), обрабатывающий пиксели изображения.
- Текстовый кодировщик (text encoder), преобразующий ассоциированные с картинкой фразы в векторную форму.
Модель обучается на парах «изображение-текст», собранных из интернета. В рамках одного мини-батча нейросеть решает симметричную контрастивную задачу. С одной стороны, максимизируется близость вектора конкретного изображения к вектору его родного текстового описания (числитель функции потерь) при одновременном минимизации близости ко всем остальным текстам в батче (знаменатель функции потерь). С другой стороны, оптимизируется обратная задача — текст должен идеально матчиться со своим изображением и отталкиваться от чужих.
После завершения масштабного этапа предобучения разработчики могут использовать CLIP в классическом двухэтапном режиме. Из модели извлекается визуальный кодировщик, поверх него надстраивается простой линейный слой (linear probe), который затем дообучается на целевом наборе данных для классификации или детекции объектов. Как демонстрирует статистика лектора, добавление всего одного линейного классификатора поверх CLIP приводит к резкому скачку качества распознавания на множестве тестовых выборок.
🎯 Практическая магия Zero-Shot классификации 9:50
Самым привлекательным свойством CLIP оказалась возможность её полноценного использования «из коробки» (zero-shot) вообще без какого-либо дообучения весов на целевых задачах. В текстовых моделях процесс адаптации тривиален, поскольку любая задача там формулируется как автодополнение текста. У CLIP механизма автодополнения нет, но инженеры OpenAI применили изящный трюк с использованием текстового кодировщика в качестве динамического ориентира для классификации.
Алгоритм zero-shot классификации с помощью CLIP выглядит следующим образом:
- Все названия целевых классов из нового датасета (например, «самолёт», «собака», «птица») пропускаются через текстовый кодировщик.
- На выходе формируется набор эталонных текстовых векторов для каждого текстового класса.
- При поступлении нового изображения оно кодируется визуальным эмбеддером в один вектор.
- С помощью алгоритма поиска ближайших соседей (1-nearest neighbor) вычисляется косинусное сходство между вектором картинки и всеми текстовыми векторами классов. Класс с максимальным показателем сходства признается верным ответом.
Поскольку CLIP обучался на живых предложениях из интернета, кодирование изолированных одиночных слов (например, просто слова «собака») даёт не самые оптимальные эмбеддинги. Исследователи выяснили, что если обернуть название класса в контекстный шаблон — промпт вида «A photo of a [class]» («Фотография [класса]»), то точность распознавания на эталонном датасете ImageNet мгновенно возрастает на 1.3%.
Чтобы выжать из архитектуры максимум, на практике применяется метод ансамблирования промптов (prompt ensembling). Инженеры генерируют десятки разнообразных шаблонов (например, «a photo of a dog», «a drawing of a dog», «a cropped photo of a dog»), получают векторы для каждого варианта, а затем вычисляют их среднее арифметическое значение. Этот усреднённый вектор и становится финальным эталоном класса для поиска ближайшего соседа.
Ранджай Кришна подчёркивает, что подлинная сила CLIP раскрывается на наборах данных со сложным распределением признаков. В качестве примера приводится датасет ObjectNet, где привычные объекты сфотографированы в крайне необычных ракурсах и локациях (например, гнилой банан, брошенный на грязный пол). Обычные сверточные сети, годами тренируемые на ImageNet, полностью проваливают этот тест, так как привыкли видеть объекты в идеальных условиях. CLIP справляется с ObjectNet без потери качества. По мнению спикера, это объясняется тем, что интернет-тексты содержат колоссальный объем сопутствующей структурной информации о форме, цвете и взаимосвязях объектов, что даёт модели мощную дополнительную супервизию.
⚖️ Архитектурная эволюция: от CLIP к гибридной модели CoCa 17:29
Коммерческий успех оригинальной CLIP был обеспечен радикальным масштабированием. Разработчики OpenAI отказались от классических ResNet в пользу трансформерной архитектуры ViT (Vision Transformer) с 307 миллионами параметров. Вместо 1.2 миллиона картинок из ImageNet модель обучили на базе из 400 миллионов пар «изображение-текст», собранных из открытой сети.
В 2022 году компания Google представила развитие этой концепции — модель CoCa (Contrastive Captioner). Разработчики CoCa сохранили базовую структуру CLIP с контрастивной функцией потерь между визуальным и текстовым кодировщиками, но добавили к ней полноценный текстовый декодер. Этот декодер принимает высокоуровневые признаки из визуального эмбеддера через механизм перекрестного внимания (cross-attention) и обучается генерировать связную текстовую подпись к картинке.
Логика создания CoCa опирается на гипотезу о том, что простая констатация факта наличия объекта на фото требует меньше когнитивных усилий от нейросети, нежели её развернутое текстовое описание. Задача captioning заставляет модель вычленять более глубокие и детализированные паттерны в пикселях. На практике CoCa показала превосходство над CLIP, продемонстрировав в среднем 10-процентный прирост точности на различных модификациях ImageNet. Профессор Кришна называет появление CoCa исторической поворотной точкой: именно в этот момент исследовательское сообщество окончательно забросило классическое обучение с учителем (supervised learning) для визуальных моделей и полностью сфокусировалось на самообучении на неразмеченных интернет-данных.
⚠️ Скрытые изъяны CLIP и ловушка «тяжёлых негативов» 20:07
Несмотря на очевидные плюсы (высокая скорость инференса, открытый словарь понятий, легкость масштабирования), CLIP страдает от фундаментальных ограничений. В частности, модель абсолютно не обладает чувством композициональности (compositionality). Она не видит разницы между изображениями, описываемыми фразами «кружка в траве» и «трава в кружке» — для неё это идентичные объекты.
Причина этого кроется в математической природе контрастивного обучения, успешность которого напрямую завязана на размер батча. Если размер батча мал, то негативные примеры внутри него оказываются слишком тривиальными. Сравнивая картинку кошки с картинкой грузовика, модель учится лишь поверхностным признакам. Чтобы заставить CLIP различать тонкие сущности (например, породу вельш-корги от других видов корги), необходимы гигантские батчи — порядка 32 000 элементов, обрабатываемые параллельно на сотнях GPU. Только тогда внутри одного шага оптимизации модель столкнется с так называемыми «тяжёлыми негативами» (hard negatives) — объектами, которые очень похожи друг на друга, но имеют разные текстовые описания.
Лаборатория Ранджая Кришны создала серию бенчмарков (Winoground, CREPE, ARO) для детального тестирования этой проблемы. Пытаясь исправить ситуацию, мировое ИИ-сообщество целый год активно развивало подходы со специальным искусственным конструированием батчей, насыщенных «тяжёлыми негативами». Однако команда Кришны опубликовала опровергающее исследование, доказавшее наличие парадоксального эффекта:
«По какой-то причине, которую мы до сих пор не понимаем с теоретической точки зрения, целенаправленное обучение на жёстких негативных примерах приводит к тому, что модель начинает буквально "забывать" базовую семантику языка, катастрофически теряя в способности к генерализации на новые распределения данных».
В числе прочих критических недостатков CLIP лектор выделяет:
- Полное отсутствие заземления (grounding): модель понимает, что на картинке есть человек, переходящий дорогу, но понятия не имеет, в каких конкретно координатах кадра он находится.
- Предел масштабирования данных: даже 5 миллиардов картинок из интернета не способны покрыть редкие специфические кейсы и медицинские или технические домены.
🤖 Визуально-языковые модели: интеграция зрения в архитектуру LLM 25:54
Примерно с конца 2022 года начался расцвет нового класса систем — мультимодальных языковых моделей (Vision-Language Models, VLM). Исторически концепция зародилась ещё в 2019 году в проекте ViLBERT, но те ранние архитектуры опирались на устаревшие рекуррентные сети LSTM. Современный ренессанс VLM связан с переносом логики авторегрессионного предсказания следующего токена на визуальные данные.
Классическая большая языковая модель работает в однородном текстовом пространстве: получая последовательность токенов (например, «Cats are so...»), она рассчитывает распределение вероятностей для генерации следующего слова («cute»). Чтобы превратить LLM в мультимодальную систему, необходимо представить входящее изображение в виде аналогичной последовательности визуальных токенов, бесшовно встроив их в общий контекст.
Одним из первых успешных опенсорсных проектов такого рода стала модель LLaVA. Для токенизации изображений её авторы задействовали предобученный визуальный кодировщик CLIP. Картинка нарезается на локальные патчи, каждый из которых проходит через слои трансформера CLIP. На выходе формируется набор векторов для каждого патча и один итоговый вектор токена классификации (CLS token).
Эмпирические исследования показали важную деталь: финальный CLS token CLIP, оптимизированный под глобальное текстовое сопоставление, теряет мелкую пространственную геометрию кадра. Поэтому в современных VLM разработчики берут признаки с предпоследнего слоя (penultimate layer) кодировщика CLIP. Эти признаки содержат в себе детальную информацию о взаимном расположении объектов в пространстве кадра. Полученные визуальные токены пропускаются через простейший линейный слой-коннектор, который осуществляет проекцию размерностей из визуального пространства в текстовое скрытое пространство LLM, после чего языковая модель может вести полноценный текстовый диалог по содержанию картинки.
🦩 Глубокая интеграция Flamingo и многовитковый диалог 35:30
Альтернативный, более сложный путь интеграции модальностей продемонстрировала компания Google в модели Flamingo. В отличие от LLaVA, где визуальные токены просто подаются на вход LLM наряду с текстом, инженеры Google внедрили зрение непосредственно внутрь каждого внутреннего слоя языковой модели. При этом базовые веса текстовой LLM и визуального кодировщика остаются полностью замороженными (frozen).
Для реализации этой схемы в архитектуру Flamingo были добавлены два новых обучаемых компонента:
- Модуль
Perceiver Sampler: он принимает сырые признаки из визуального кодировщика и осуществляет их адаптивное понижение размерности (downsampling), формируя фиксированное небольшое число визуальных токенов для экономии вычислительной памяти слоев. - Блоки
GATED X-atten(Gated Cross-Attention): они врезаются в каждый слой LLM непосредственно перед слоями стандартного текстового self-attention.
Внутри блока GATED X-atten текстовые токены выполняют роль запросов (Queries), которые извлекают нужную информацию из визуальных токенов (Кеуs и Values) через механизм перекрестного внимания. На выходе из слоя cross-attention разработчики применили важный математический стабилизатор — нелинейную активацию в виде гиперболического тангенса ($tanh$) с обучаемым весовым коэффициентом, выполняющим роль гейта (ворот). Изначально этот коэффициент равен нулю, что позволяет огромной предобученной LLM на старте мультимодального обучения вообще «не замечать» новые визуальные слои и не разрушать свои базовые языковые навыки, плавно наращивая внимание к картинкам по мере обучения.
Данные для Flamingo готовятся в виде длинных интерливированных (чередующихся) последовательностей изображений и текстов. Чтобы модель при генерации описания конкретной собаки не отвлекалась на веса стоящей рядом фотографии кошки, авторы разработали строгую схему маскирования внимания (handcrafted masking scheme). Во время инференса, как отмечает Ранджай Кришна, для оптимизации скорости системы применяется кэширование прошлых ключей и значений (KV-caching), благодаря чему пользователю не нужно повторно прогонять всю историю диалога при каждом новом вопросе. Такой подход наделил Flamingo способностью к многовитковому контекстному обучению (in-context learning) — модели достаточно показать 2-3 примера в формате «картинка -> вопрос -> решение», чтобы она уловила логику и выполнила аналогичное задание для нового изображения без обновления весов.
🚀 Феномен Molmo: как 700 тысяч качественных пар победили миллиардные датасеты 41:06
Описывая текущее состояние индустрии VLM, профессор Кришна указывает на критическую проблему, ставшую главным драйвером его личных научных изысканий. На рынке коммерческих API доминируют закрытые проприетарные гиганты (GPT-4o, Gemini 1.5 Pro, Claude 3.5 Sonnet), демонстрирующие точность визуального понимания на уровне 75-80%. В то же время классические открытые академические модели (такие как базовая LLaVA) стагнировали на отметке в 43%.
Многие разработчики заявляют о выпуске «открытых» производительных моделей (например, Qwen от Alibaba или InternVL), однако Ранджай Кришна прямо называет их псевдооткрытыми:
«Эти модели получены методом дистилляции знаний из коммерческих GPT и Gemini. Мы как открытое научное сообщество фактически не знали, как воспроизвести такие результаты с нуля. Если завтра OpenAI закроет доступ к своим API, мы потеряем возможность создавать сильные VLM».
В качестве ответа на этот вызов лаборатория Кришны совместно с институтом ИИ Аллена создала семейство моделей Molmo. Проект придерживается принципа абсолютной открытости: в публичный доступ выложены не только веса (open weights), но также исходный код (open code) и весь тренировочный и оценочный датасет (open data).
Флагманская 7-миллиардная модель Molmo-7B способна эффективно работать на одном потребительском GPU. В ходе масштабного слепого пользовательского тестирования, включившего 870 участников и 325 000 попарных сравнений ответов, Molmo заняла второе место в мире по рейтингу Elo, уступив GPT-4o всего один пункт и обойдя по качеству генерации Gemini 1.5 Pro от Google и Claude 3.5 от Anthropic.
Секрет феноменального успеха Molmo кроется не в усложнении архитектуры, а в радикальной смене философии сбора данных. В то время как крупные корпорации обучают свои VLM на огромных массивах из 6 миллиардов низкокачественных пар картинок и подписей, скачанных роботами из интернета, Molmo была обучена всего на 700 000 примеров.
Интернет-описания картинок по своей природе случайны и субъективны (incidental data): пользователь пишет под фото свои эмоции, но почти никогда не перечисляет фактическое содержимое кадра. Команда Molmo потратила два года на проведение тщательных полевых исследований по сбору данных. Ассистенты-разметчики детально описывали форму, размеры, материалы, текстуру и точные взаимные координаты объектов. Сбор данных осуществлялся не в печатном виде, а через запись голоса: устная речь естественным образом разрушает жесткие лингвистические стереотипы (максимы Грайса), заставляя людей проговаривать очевидные пространственные нюансы, которые они никогда бы не стали вводить на клавиатуре.
🎯 Локализация объектов и архитектура Segment Anything (SAM) 51:05
Главная отличительная черта Molmo — её способность «заземлять» (grounding) свои ответы на уровне конкретных пикселей. Отвечая на вопрос типа «Сколько лодок на причале?», модель не просто выдает цифру, подверженную галлюцинациям, а генерирует точечные координатные маркеры на каждую посчитанную лодку. Это позволяет использовать её в интерфейсных задачах (например, по команде «кликни на меню настроек» модель выдает точную точку для курсора) и в робототехнике для наведения манипуляторов на предметы. Модель успешно справляется с изображениями любого переменного разрешения благодаря интеграции адаптивных позиционных эмбеддингов по аналогии с Pix2Struct.
Развивая тему генерации пространственных масок, Ранджай Кришна обращается к модели SAM (Segment Anything Model), представленной компанией Meta в 2023 году. SAM проектировалась как универсальная базовая модель для задач попиксельной сегментации любых произвольных объектов.
При создании архитектуры SAM инженерам пришлось решать фундаментальную проблему визуальной двусмысленности (ambiguity). Если пользователь ставит точку на изображении ножниц и просит выдать маску, неясно, что именно он имеет в виду: все ножницы целиком, только пластиковые кольца ручек или одно металлическое лезвие. Чтобы нивелировать эту неопределенность и не штрафовать нейросеть в процессе обучения за несовпадение с субъективной логикой разметчика, архитектура SAM генерирует на один входящий промпт сразу три альтернативные маски на разных уровнях гранулярности (детализации). Для расчета функции потерь выбирается та маска, которая максимально близка к эталону конкретного кадра, а остальные две маски не штрафуются.
Конструктивно SAM состоит из трех ключевых модулей:
- Тяжелый визуальный кодировщик изображений.
- Гибкий кодировщик промптов (prompt encoder), переводящий текстовые указания, координаты точек или рамки детекции (bounding boxes) в векторную форму.
- Легковесный декодер масок, осуществляющий финальное предсказание контуров объекта.
Поскольку в открытом доступе масштабных датасетов для сегментации не существовало, авторы SAM применили итеративный цикл разметки «модель-в-контуре» (model-in-the-loop). На первом этапе разметчики вручную размечали базовые контуры, на них обучалась первая версия ИИ, затем эта модель генерировала черновые маски для новых миллионов изображений, а люди лишь оперативно корректировали ошибки. В результате авторам удалось расширить мировой объем сегментационных масок в 400 раз, создав беспрецедентный массив качественных данных для обучения базовой модели.
🔗 Парадигма чейнинга и «визуальное программирование» 1:00:24
В финальной части лекции профессор Вашингтонского университета вводит слушателей в область чейнинга (chaining) — объединения нескольких базовых моделей в программные цепочки для решения сверхобразных задач, непосильных одиночным архитектурам. В качестве ментального эксперимента Кришна демонстрирует четыре изображения редких птиц и музыкальных инструментов, названия которых отсутствуют в обучающей выборке CLIP, из-за чего модель гарантированно ошибается при прямой zero-shot классификации.
Однако, если подключить к процессу большую текстовую модель GPT, способную сгенерировать подробные энциклопедические описания внешнего вида этих редких объектов из интернета, эти текстовые маркеры можно передать в CLIP в качестве уточняющих шаблонов. Такой симбиоз текстовой эрудиции и визуального сопоставления позволяет безошибочно классифицировать даже самые узкоспециализированные объекты.
Данная концепция легла в основу парадигмы «визуального программирования» (Visual Programming), ярким представителем которой является проект VisProg, удостоенный награды Best Paper на конференции CVPR. Логика VisProg строится следующим образом:
- Пользователь задает сложный составной вопрос по картинке (например: «Правда ли, что на левом и правом изображениях в общей сложности находится шесть человек и две лодки?»).
- Языковая модель (GPT) выступает в роли интеллектуального агента. Она не пытается угадать ответ сама, а генерирует исполняемый Python-код.
- Внутри этого кода прописываются последовательные вызовы различных специализированных ИИ-инструментов, доступных в системе: запуск детектора лиц, вызов локального счетчика объектов, логические математические операции сложения.
- Сгенерированный скрипт автоматически исполняется на сервере, аккумулируя промежуточные результаты работы узких моделей, и выдает пользователю итоговый верифицированный ответ.
Главным недостатком чейнинга на текущий момент остается колоссальная вычислительная стоимость (compute cost). Разработчикам приходится отправлять дорогие запросы к API языковых моделей, а затем последовательно загружать в память GPU тяжелые специализированные сетки.
В завершение дискуссии Ранджай Кришна отмечает, что главным фронтиром исследований ИИ является попытка дистиллировать (сжать) все эти разрозненные агентские цепочки шагов внутрь единых сквозных архитектур. Также ведется активная работа над созданием автономных верификаторов, способных проверять точки заземления моделей перед выводом ответа пользователю, что должно окончательно решить проблему галлюцинаций в мультимодальных системах будущего.