Современный поиск стремительно эволюционирует от простого сопоставления текста к пониманию сложного мультимодального контента. В образовательном материале от DeepLearning.AI подробно разбирается концепция мультимодального поиска и систем Retrieval-Augmented Generation (RAG). На примере практических алгоритмов контрастивного обучения (Contrastive Representation Learning) авторы демонстрируют, как научить компьютер сопоставлять текстовые запросы, изображения, аудио и видеофайлы в едином векторном пространстве.
🌐 Эра мультимодальных данных: почему текстового поиска уже недостаточно 0:01
В современном цифровом мире мультимедийный контент окружает нас повсюду: от поиска любимых песен и трейлеров к фильмам до подбора товаров в интернет-магазинах. Однако традиционный текстовый поиск больше не удовлетворяет запросы пользователей, которым необходимо искать информацию в разных форматах одновременно. Мультимодальные данные — это информация, поступающая из различных источников (текст, изображения, аудио и видео), причем разные модальности часто описывают одни и те же концепции.
Например, концепт «лев» может быть представлен фотографией животного, текстовым описанием «король джунглей», видеороликом с бегущим прайдом или звуком грозного рычания. Сочетание этих модальностей дает искусственному интеллекту гораздо более глубокое понимание контекста. Увидеть и услышать рычание льва одновременно производит куда более сильное и пугающее впечатление, чем просто молчаливое наблюдение за ним; именно синергия визуального и звукового рядов объясняет, почему он считается королем джунглей.
Аналогичный подход наблюдается в том, как учатся люди. В первый год жизни ребенок, еще не умея говорить, активно познает мир через мультимодальные взаимодействия: он трогает, нюхает, пробует на вкус предметы (даже если это обычное мыло), а также смотрит и слушает. Базовые знания человечества формируются не на основе языка, а через чувственный опыт взаимодействия с окружением. Авторы утверждают, что для создания по-настоящему умного и способного искусственного интеллекта его необходимо научить мыслить мультимодально, в точности как это делают люди.
🗺️ Мультимодальные эмбеддинги и концепция единого векторного пространства 2:39
Главным инструментом для работы компьютера с разнородными данными являются мультимодальные эмбеддинги (multimodal embeddings). Они позволяют проецировать информацию разных типов в единое векторное пространство (joint embedding space). В таком пространстве вектор изображения льва окажется в непосредственной близости от векторов текстового описания, аудиозаписи рычания или видео с бегущими львами. Подобные модели способны сохранять семантическое сходство как внутри одной модальности, так и между ними. Это означает, что близкие по смыслу объекты всегда будут иметь схожие векторы, тогда как совершенно разные концепты (например, «лев» и «музыкальная труба») окажутся на значительном удалении друг от друга.
Процесс построения таких систем начинается с использования специализированных моделей, каждая из которых умеет работать только с одной модальностью (текстом, изображениями или звуком). Ключевая задача инженеров заключается в том, чтобы унифицировать эти разрозненные модели. Независимо от исходного формата данных, одинаковые смысловые концепты на выходе должны формировать близкие друг к другу векторы. Эта цель достигается с помощью технологии контрастивного обучения (contrastive representation learning).
🔄 Механика контрастивного обучения: притяжение и отталкивание векторов 4:13
Контрастивное обучение представляет собой универсальный процесс настройки эмбеддингов, применимый не только к мультимодальным системам. Его фундаментальная идея строится на использовании трех типов данных:
- Якорь (Anchor) — базовая точка отсчета, например, фраза «он чувствовал запах роз».
- Положительный пример (Positive example) — объект, семантически близкий к якорю, например, «поле благоухающих цветов».
- Отрицательный пример (Negative example) — концептуально далекий объект, например, «лев величественно зарычал».
В процессе обучения алгоритм стремится притянуть (pull) вектор положительного примера ближе к якорю и оттолкнуть (push) вектор отрицательного примера как можно дальше. Тот же принцип работает и для графических данных: если в качестве якоря взять фото немецкой овчарки, положительным примером может стать то же изображение в градациях серого, а отрицательным — снимок совы.
Для математической реализации этого процесса применяется функция контрастивных потерь (contrastive loss function). Сначала кодировщики переводят данные в векторы, затем вычисляется расстояние между ними. Задача обучения — минимизировать дистанцию до положительного примера и максимизировать до отрицательного. При переходе к мультимодальности якорем может выступать видео с львами, а примерами — текст и картинки, что заставляет модель выравнивать разные модальности в общих координатах.
📈 От CLIP к ImageBind: масштабирование подходов и математика потерь 6:23
Одной из главных сложностей контрастивного обучения является сбор достаточного количества качественных пар «якорь-пример». В исторической работе CLIP (2021 год) специалисты OpenAI элегантно решили эту проблему, сопоставив изображения с их текстовыми описаниями из интернета. В матрице пар диагональ представляла собой идеальные совпадения (положительные примеры), а любые случайные пересечения картинок и подписей вне диагонали автоматически становились отрицательными примерами.
Математически функция контрастивных потерь выглядит следующим образом. Используются функции кодирования: $f$ для перевода изображений в вектор $q$, и $G$ для перевода видео в вектор $k$. В числителе формулы находится показатель сходства между положительными примерами (например, фото льва и видео со львом), значение которого максимизируется. В знаменателе вычисляется сумма сходств со множеством отрицательных примеров (например, фото льва и котята на велосипеде), нормирующая результат в вероятность. Знак минус перед функцией потерь указывает на необходимость её минимизации, благодаря чему векторы схожих объектов сближаются, а разных — отдаляются. Модель ImageBind от Meta развила этот подход, применив его последовательно ко всем ключевым модальностям: аудио, тексту, видео и тепловым картам.
💻 Практическая реализация: пишем код для обучения модели на MNIST 8:20
Практическая часть занятия посвящена обучению нейросети на классическом датасете MNIST (изображения рукописных цифр от 0 до 9) с последующей визуализацией векторного пространства. Для работы используются библиотека машинного обучения PyTorch, а также инструменты визуализации Plotly и UMAP. Каждая цифра в MNIST имеет метку класса. В контексте контрастивного обучения, если якорем выбрана цифра «5», то другая «5» будет положительным примером, а цифры «6» или «7» — отрицательными.
Логика разделения прописана в файле mnist_dataset.py:
- При совпадении класса якоря и сравниваемого объекта элемент заносится в список положительных примеров.
- При несовпадении — отправляется в список отрицательных объектов.
Поскольку в качестве метрики близости используется косинусное сходство (cosine similarity), идеальное расстояние для положительных пар приравнивается к 1, а для отрицательных — к 0. Обучающие данные подаются в нейросеть через PyTorch DataLoaders, где размер батча (batch size) можно варьировать для анализа скорости сходимости.
Архитектура используемой нейросети включает:
- Два сверточных слоя (convolutional layers) для извлечения визуальных признаков цифр.
- Два полносвязных линейных слоя (feed-forward linear layers) для преобразования признаков в финальные 64-мерные векторные представления.
🔬 Анализ результатов: PCA, UMAP и «эффект медузы» 14:45
По умолчанию вычисления запускаются на CPU, но при наличии переключаются на GPU/CUDA. Для градиентного спуска настраивается оптимизатор, функция контрастивных потерь и планировщик (scheduler). Полный цикл обучения занимает около 2–3 минут на одну эпоху, поэтому авторы предлагают загрузить уже готовую модель, прошедшую 100 эпох. График функции потерь показывает, что кривая стабилизируется в районе 20-й эпохи, а основные изменения происходят на первых 5–10 этапах.
Поскольку человек не способен воспринимать 64-мерное пространство, применяется метод главных компонент (PCA) для снижения размерности до 3D. На интерактивном графике Plotly видно, что из-за использования косинусного сходства эмбеддинги цифр выстраиваются в форме лучей (спиц), расходящихся из центра, а не в виде округлых кластеров. Это объясняется тем, что косинусное расстояние учитывает угол между векторами, в отличие от евклидова, минимизирующего линейную близость. Из-за сильного сжатия с 64 до 3 измерений некоторые векторы (например, цифры 2 и 4) могут казаться смешанными под определенным углом обзора, но общая структура лучей сохраняется.
Для более точной двухмерной проекции применяется алгоритм UMAP с обязательным указанием параметра metric='cosine'. В результате точки группируются в отчетливые кластеры, напоминающие по форме медуз («jellyfish-like pattern»). По шутливому замечанию авторов, здесь глубокое обучение (deep learning) пересекается с глубоководным («deep sea»). Если же запустить UMAP с евклидовой метрикой по умолчанию, данные выстроятся в хаотичные переплетенные линии, напоминающие «теорию струн», что исказит реальную картину векторного пространства.
🔮 Итоги и перспективы мультимодального поиска 22:03
Финальная демонстрация наглядно показывает эволюцию распределения векторов за 100 эпох: изначально хаотично перемешанные точки постепенно расходятся по своим направлениям, стягивая схожие цифры и отталкивая разные. Этот наглядный эксперимент подтверждает работоспособность методологии контрастивного обучения.
Полученные знания закладывают фундамент для создания полноценных мультимодальных поисковых систем и RAG. В следующем модуле программы планируется разбор интеграции обученных мультимодальных моделей с векторными базами данных для векторизации видеопотоков и выполнения комплексных поисковых запросов через текст, изображения и видео.