Статья о революционной архитектуре, которая изменила подход к компьютерному зрению
С появлением статьи "Attention Is All You Need" закончилось доминирование рекуррентных нейронных сетей (Recurrent Neural Network — RNN). Поскольку трансформеры показывают лучшие результаты на практике по сравнению с RNN, давайте разберёмся, что они собой представляют и как работают в области компьютерного зрения.
Искусственный интеллект (ИИ) прошёл долгий путь от философских размышлений до революционных технологий, которые сегодня меняют наш мир. Эта история полна взлётов и падений, прорывов и разочарований, но в итоге привела нас к эпохе, когда ИИ стал неотъемлемой частью повседневной жизни.
Античность: Мифы об искусственных существах (Талос, Пигмалион)
Средневековье: Алхимические попытки создания гомункулов
XVII-XVIII века: Механические автоматы и философские размышления о мышлении
1854: Джордж Буль создаёт булеву алгебру
1936: Алан Тьюринг разрабатывает концепцию машины Тьюринга
1943: Уоррен МакКаллок и Уолтер Питтс создают первую математическую модель нейрона
Рисунок 1: Детальная временная линия развития ИИ с 1940-х годов
1950: Алан Тьюринг публикует статью "Computing Machinery and Intelligence"
Формулирует знаменитый тест Тьюринга
Ставит вопрос: "Могут ли машины думать?"
Закладывает теоретические основы ИИ
Официальное рождение ИИ как научной дисциплины
Организаторы: Джон МакКарти, Марвин Мински, Натаниэль Рочестер, Клод Шеннон
Впервые использован термин "Artificial Intelligence"
Оптимистичные прогнозы: решение проблем ИИ за 10 лет
Рисунок 2: Ключевые вехи в истории развития ИИ
1951: Кристофер Стрейчи создаёт программу для игры в шашки 1956: Артур Сэмюэл разрабатывает программу, которая учится играть в шашки 1958: Джон МакКарти создаёт язык программирования LISP 1959: Артур Сэмюэл вводит термин "машинное обучение"
Фрэнк Розенблатт создаёт перцептрон:
Первая практическая нейронная сеть
Способность к обучению на примерах
Большие надежды на будущее нейронных сетей
1965: DENDRAL — первая экспертная система для анализа химических соединений 1966: ELIZA — первый чат-бот, имитирующий психотерапевта
1969: Марвин Мински и Сеймур Паперт публикуют "Perceptrons"
Показывают ограничения простых перцептронов
Критика приводит к сокращению финансирования нейронных сетей
Вычислительные ограничения
Недостаток данных
Переоценка возможностей ранних методов
Сокращение государственного финансирования
1980: R1/XCON — экспертная система для конфигурации компьютеров DEC
Экономия миллионов долларов в год
Доказательство коммерческой ценности ИИ
Системы, основанные на знаниях
Логическое программирование (Prolog)
Японский проект "Компьютеры пятого поколения"
Ограничения экспертных систем
Сложность поддержки и масштабирования
Провал японского проекта
Очередное сокращение финансирования
1986: Обратное распространение ошибки возрождает интерес к нейронным сетям 1995: Владимир Вапник разрабатывает метод опорных векторов (SVM) 1997: IBM Deep Blue побеждает Гарри Каспарова в шахматах
Доступность больших объёмов данных
Рост вычислительных мощностей
Развитие статистических методов машинного обучения
Рисунок 3: Временная линия развития глубокого обучения
ImageNet 2012: AlexNet Алекса Крижевского
Революция в компьютерном зрении
Доказательство эффективности глубоких нейронных сетей
Начало эры глубокого обучения
Рисунок 4: AlexNet как поворотный момент в истории ИИ
2011: IBM Watson побеждает в телевикторине Jeopardy! 2012: Прорыв глубокого обучения (AlexNet) 2014: Генеративно-состязательные сети (GANs) — Ян Гудфеллоу 2016: AlphaGo побеждает Ли Седоля в игре Го 2017: Архитектура Transformer ("Attention Is All You Need")
GPU: параллельные вычисления
Большие данные: интернет, социальные сети
Алгоритмы: улучшенные архитектуры нейронных сетей
Облачные вычисления: доступность ресурсов
2018: BERT от Google — революция в понимании языка 2019: GPT-2 от OpenAI — мощная генеративная модель 2020: GPT-3 — 175 миллиардов параметров
Ноябрь 2022: Запуск ChatGPT
100 миллионов пользователей за 2 месяца
ИИ становится массовым явлением
Начало новой эры взаимодействия человека с ИИ
Март 2023: GPT-4
Мультимодальные возможности
Значительное улучшение качества
Прохождение профессиональных экзаменов
2023:
Qwen от Alibaba
Claude 2 от Anthropic
LLaMA 2 от Meta
Bard от Google
Midjourney V5 — революция в генерации изображений
2024:
GPT-4o — омни-модель с голосом и зрением
Claude 3 — новые возможности анализа
Gemini Ultra — конкуренция с GPT-4
Языковые модели: GPT-4, Claude, Gemini
Переводчики: Google Translate, DeepL
Ассистенты: ChatGPT, Bard, Bing Chat
Генерация изображений: DALL-E, Midjourney, Stable Diffusion
Медицинская диагностика: анализ рентгенов, МРТ
Автономные автомобили: Tesla, Waymo
Qwen-Omni: анализ изображений и текста
GPT-4V: анализ изображений и текста
CLIP: связь изображений и текста
DALL-E 3: генерация по текстовым описаниям
Текущее состояние:
Рынок ИИ: $150+ миллиардов (2024)
Прогноз на 2030: $1.8 триллиона
Ежегодный рост: 35-40%
🔄 Циклы развития: периоды оптимизма сменялись разочарованиями 📈 Экспоненциальный рост: особенно в последние 15 лет 🤝 Междисциплинарность: успех требует объединения разных областей 💡 Неожиданные прорывы: многие достижения были непредсказуемы 🌍 Глобальное влияние: ИИ меняет все сферы жизни
Мы находимся в уникальный момент истории, когда ИИ:
Достиг практической полезности в большинстве областей
Стал доступен миллионам людей
Продолжает стремительно развиваться
Ставит перед человечеством новые вопросы и вызовы
История ИИ продолжается, и мы все являемся её свидетелями и участниками. Следующие годы обещают быть не менее захватывающими, чем весь предыдущий путь развития искусственного интеллекта.
Трансформеры — это модель глубокого обучения, использующая механизм самовнимания (self-attention), который по-разному взвешивает значимость каждой части входных данных. Они используются в основном в области обработки естественного языка (Natural Language Processing — NLP) и компьютерного зрения (Computer Vision — CV).
Трансформеры, как и RNN, предназначены для обработки последовательных входных данных (например, естественного языка) с применением к таким задачам, как перевод и суммирование текста. Однако, в отличие от RNN, трансформеры обрабатывают весь вход одновременно. Механизм внимания определяет контекст для любой позиции во входной последовательности.
Параллелизация: обработка всех элементов последовательности одновременно
Долгосрочные зависимости: эффективное моделирование связей между удалёнными элементами
Масштабируемость: возможность обучения на больших объёмах данных
Универсальность: применимость к различным типам данных
В этой статье мы не будем подробно обсуждать трансформеры, которые произвели революцию в NLP. Наша цель — рассмотрение трансформеров в компьютерном зрении с примерами и практическими задачами.
В NLP цель нейроязыковых моделей состоит в том, чтобы создать векторные представления (embeddings), которые кодируют как можно больше информации о семантике слова в тексте. Эта семантика не ограничивается определением слова — на самом деле многие слова сами по себе бессмысленны, если мы не знаем контекста, к которому они принадлежат.
В предложении «Трансформеры эффективны, потому что они быстрые» векторное представление слова «они» будет бессмысленным, если не учитывать, что оно относится к «трансформерам».
Оптимальные модели должны уметь отображать эти зависимости между словами даже при работе с большими текстами, где эти слова могут быть удалены друг от друга на значительное расстояние. Модель с такой способностью может кодировать долгосрочные зависимости. Трансформеры способны находить эти зависимости между словами эффективно.
В частности, LSTM (Long Short Term Memory) и GRU (Gated Recurrent Unit) были популярными RNN, способными кодировать богатую семантику слов в тексте. Они работают последовательно, обрабатывая по одному токену за раз и сохраняя «память» всех токенов, обработанных моделью.
Рисунок 5: Развёрнутая во времени архитектура RNN
Последовательная обработка: невозможность параллелизации
Проблема исчезающих градиентов: сложность обучения долгосрочных зависимостей
Ограниченная память: потеря информации при обработке длинных последовательностей
Вычислительная неэффективность: медленное обучение на больших данных
Эти RNN могут хранить токены «в памяти» благодаря своим компонентам «ворот» (gates) — элементам, которые используют нейронные сети, чтобы определить, какую информацию следует хранить, какую информацию следует отбрасывать и какую информацию следует обновлять каждый раз, когда обрабатывается новый токен.
Архитектура этих моделей делает их устойчивыми к взрывающимся и исчезающим градиентам, что является общей проблемой в RNN. Это позволяет им отслеживать довольно длинные зависимости между элементами в последовательности. Однако последовательная обработка токенов и опора на хранение их информации в памяти не подходят, когда зависимости действительно далеки.
Свёртки популярны в задачах компьютерного зрения из-за их эффективности и масштабируемости при обучении с использованием графических процессоров. Точно так же, как 2D-свёртки могут извлекать признаки из изображения, эти модели используют 1D-фильтры для извлечения информации из текстов, которые представлены в виде 1D-последовательности.
Рисунок 6: Общая архитектура свёрточной нейронной сети
Ограниченное рецептивное поле: сложность захвата долгосрочных зависимостей
Фиксированные фильтры: неадаптивность к различным контекстам
Иерархическая обработка: необходимость глубоких сетей для больших рецептивных полей
Локальность: фокус на локальных паттернах, а не глобальных связях
Рецептивное поле в этих типах CNN зависит от размера их фильтров и количества используемых свёрточных слоёв. Увеличение значения этих гиперпараметров увеличивает сложность модели, что может привести к исчезновению градиентов или даже невозможности обучения моделей.
Трансформеры появились в 2017 году как простой и масштабируемый способ получения результатов SOTA при машинном переводе. Вскоре они были применены к другим задачам NLP, став новым SOTA для нескольких бенчмарков (таких как GLUE, SQuAD или SWAG).
Рисунок 7: Общая архитектура Transformer
Механизм внимания: способность фокусироваться на релевантных частях входа
Параллельная обработка: одновременная обработка всех элементов последовательности
Масштабируемость: эффективное обучение на больших данных
Универсальность: применимость к различным задачам
Обычно эти модели обучают в больших версиях и настраивают их для различных задач, поэтому они полезны даже при недостатке данных. Производительность этих моделей, даже с миллиардами параметров, кажется, не достигает предела. Чем крупнее модель, тем точнее результаты и тем интереснее новые возможности, которые демонстрирует модель (см. GPT-3).
То, что трансформеры хорошо показали себя в языковых моделях, не гарантировало их успех в других областях — это нужно было проверить. Для этого необходимо было создать Vision Transformer, используя архитектуру энкодера трансформера с наименьшим количеством возможных модификаций, и применить его к задачам классификации изображений.
Классификация изображений связана с присвоением метки класса входному изображению. Например, как вы можете видеть на схеме ниже, мы предсказываем класс «Собака» для нашего входного изображения, поскольку оно имеет наивысший показатель достоверности после применения softmax.
Предобработка: нормализация и изменение размера изображения
Извлечение признаков: получение векторного представления
Классификация: применение классификатора для получения вероятностей
Постобработка: выбор класса с максимальной вероятностью
Vision Transformers (ViT) обучаются на достаточно больших объёмах данных (> 100M изображений) с гораздо меньшими вычислительными ресурсами (в четыре раза меньше), чем современные CNN (ResNet), и при переносе на несколько средних или небольших тестовых наборов для распознавания изображений достигают отличных результатов.
Рисунок 8: Детальная архитектура Vision Transformer
Чтобы лучше понять архитектуру, давайте разделим её на 3 основных компонента:
Встраивание (Embedding)
Энкодер трансформера
Голова MLP
На этом этапе мы разделяем входное изображение на участки (patches) фиксированного размера [P, P] и линейно сглаживаем их путём объединения каналов.
Рисунок 4: Процесс разбиения изображения на патчи и их встраивание
Входное изображение: x ∈ ℝ^(H×W×C)
Размер патча: P×P
Количество патчей: N = HW/P²
Сплющенный патч: x_p ∈ ℝ^(N×(P²·C))
Линейная проекция: z_0 = [x_class; x_p E] + E_pos
где:
E ∈ ℝ^((P²·C)×D)
— матрица встраивания патчей
E_pos ∈ ℝ^((N+1)×D)
— позиционное встраивание
x_class
— обучаемый токен класса
Разбиение на патчи: изображение делится на неперекрывающиеся квадратные участки
Линейная проекция: каждый патч преобразуется в вектор фиксированной размерности
Токен класса: добавляется специальный токен для агрегации информации
Позиционное кодирование: сохраняет информацию о пространственном расположении
Трансформеры не способны запоминать порядок или последовательность входов. Если патчи изображения переупорядочиваются, значение исходного изображения теряется. Следовательно, мы добавляем позиционное встраивание к нашим линейно встроенным патчам изображения, чтобы отслеживать последовательность.
Предположим, у нас есть входное изображение размером 224×224×3 :
Размер патча: 16×16
Количество патчей: N = (224/16)² = 196
Размерность встраивания: D = 768
Итоговая размерность: [197, 768] (196 патчей + 1 токен класса)
Архитектура энкодера трансформера аналогична той, что упоминалась в статье «Attention Is All You Need». Он состоит из нескольких стеков одинаковых блоков.
Рисунок 9: Детальная архитектура блока энкодера трансформера
Блок энкодера:
├── Layer Normalization
├── Multi-Head Self-Attention
├── Residual Connection
├── Layer Normalization
├── Feed-Forward Network
└── Residual Connection
Рисунок 10: Механизм Multi-Head Attention
Основным компонентом блока Multi-Head Attention является Scaled Dot-Product Attention:
Attention(Q, K, V) = softmax(QK^T / √d_k)V
где:
Q (Queries) — запросы
K (Keys) — ключи
V (Values) — значения
d_k — размерность ключей
Линейные проекции: Q = XW_Q
, K = XW_K
, V = XW_V
Скалярное произведение: QK^T
Масштабирование: деление на √d_k
Softmax: нормализация весов внимания
Взвешенная сумма: умножение на значения V
MultiHead(Q, K, V) = Concat(head_1, ..., head_h)W^O
где head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)
Масштабированное скалярное произведение внимания применяется h раз (обычно h = 8), чтобы получить h голов внимания. Эти головы внимания объединяются и проходят через плотный слой.
Когда у нас есть вектор контекста C, нас интересует только токен контекста c_0
для целей классификации. Этот токен контекста проходит через голову MLP для получения окончательного предсказания.
MLP Head:
├── Layer Normalization
├── Linear Layer (D → num_classes)
└── Softmax (для вероятностей)
Предобучение: MLP с одним скрытым слоем и нелинейностью
Тонкая настройка: один линейный слой
Процесс обучения Vision Transformer разделён на два основных этапа:
Рисунок 11: Процесс предварительного обучения и тонкой настройки ViT
ImageNet-1K (1.3M изображений)
ImageNet-21K (14M изображений)
JFT-300M (300M изображений)
Оптимизатор: Adam
Размер пакета: 4096
Уменьшение веса: 0.1
Расписание обучения: линейное затухание
Модель | Слои | Скрытая размерность | Головы MHA | Параметры |
---|---|---|---|---|
ViT-Base/16 | 12 | 768 | 12 | 86M |
ViT-Large/16 | 24 | 1024 | 16 | 307M |
ViT-Huge/14 | 32 | 1280 | 16 | 632M |
После предварительного обучения модели настраиваются на целевых наборах данных:
Оптимизатор: SGD с импульсом
Размер пакета: 512 (ViT-L/16), 518 (ViT-H/14)
Скорость обучения: адаптивная
Регуляризация: dropout, стохастическая глубина
Малые данные (ImageNet-1K): CNN превосходят ViT
Средние данные (ImageNet-21K): сопоставимая производительность
Большие данные (JFT-300M): ViT превосходят CNN
Модель | Top-1 Accuracy | Параметры | TPU-дни |
---|---|---|---|
BiT-L/16 | 87.5% | 928M | 9943 |
Noisy Student | 88.4% | 480M | - |
ViT-L/16 | 87.8% | 307M | 2443 |
ViT-H/14 | 88.6% | 632M | 2500 |
Вычислительная эффективность: в 4 раза меньше ресурсов
Масштабируемость: лучшая производительность на больших данных
Универсальность: хорошие результаты на разных задачах
Vision Transformer показывает отличные результаты на разнообразном наборе задач VTAB-1k (19 задач по 1000 примеров каждая):
Natural: естественные изображения (CIFAR, Caltech101, DTD, Oxford Flowers, Oxford Pets, SVHN, SUN397)
Specialized: специализированные данные (Camelyon, EuroSAT, Resisc45, Retinopathy)
Structured: структурированные данные (Clevr/count, Clevr/distance, DMLab, KITTI, dSpr/loc, dSpr/ori, SmallNORB/azi, SmallNORB/ele)
Данное изображение представляет собой визуализацию механизма внимания (attention mechanism) в модели Transformer. Конкретно, это показывает работу Multi-Head Attention с 12 различными "головами" внимания (Head 1 - Head 12).
Рисунок 12: Визуализация карт внимания в Vision Transformer
Глобальная связность: каждый патч может взаимодействовать с любым другим
Адаптивные веса: динамическое определение важности различных регионов
Иерархическое представление: разные головы фокусируются на разных аспектах
Семантическая группировка: объединение семантически связанных областей
CNN имеют ограниченное рецептивное поле в ранних слоях
ViT с самого начала имеет доступ ко всему изображению
CNN используют фиксированные фильтры
ViT адаптивно определяет важность различных регионов
CNN сложно масштабировать на очень большие данные
ViT эффективно масштабируется с ростом данных
Карты внимания обеспечивают лучшую интерпретируемость
Можно визуализировать, на что модель обращает внимание
Модель изучает пространственные отношения между патчами
Близкие патчи имеют похожие позиционные встраивания
Похожи на фильтры CNN, но более разнообразные
Способны захватывать более сложные паттерны
Ранние слои: локальные паттерны и текстуры
Средние слои: части объектов и формы
Поздние слои: семантические концепции и объекты целиком
Сравнение Vision Transformers (ViT) и свёрточных нейронных сетей (CNN)
Характеристики | Vision Transformers (ViT) | Свёрточные нейронные сети (CNN) |
---|---|---|
Извлечение признаков | Использует самовнимание между патчами изображения | Использует свёрточные фильтры для извлечения локальных признаков |
Глобальный контекст | Захватывает глобальные связи между патчами в одном слое | Требует глубоких слоёв для построения глобального понимания из локальных признаков |
Обработка изображений | Разделяет изображение на неперекрывающиеся патчи | Сканирует изображение с помощью перекрывающихся рецептивных полей (фильтров) |
Позиционное кодирование | Требует явного позиционного кодирования для осведомлённости о расположении патчей | Неявно кодирует позицию через свёрточную структуру |
Сложность модели | Более высокая вычислительная стоимость из-за механизма внимания | Обычно менее вычислительно затратны чем ViT |
Требования к данным | Требует больших наборов данных для хорошей работы | Хорошо работает как на малых, так и на больших наборах данных |
Масштабируемость | Высоко масштабируемы с большими наборами данных и моделями | Хорошо масштабируются, но склонны к переобучению на малых данных |
Индуктивные смещения | Минимальные индуктивные смещения; изучает связи напрямую из данных | Сильные индуктивные смещения к локальным признакам (края, текстуры) |
Производительность на малых данных | Склонны к переобучению на малых наборах данных | Лучше работают на меньших наборах данных благодаря встроенным смещениям |
Интерпретируемость | Сложно интерпретировать из-за механизма внимания | Легче интерпретировать через изученные фильтры (например, детекторы краёв) |
Ключевые выводы
✅ Эффективное моделирование долгосрочных зависимостей
✅ Превосходная масштабируемость на больших данных
✅ Универсальная архитектура для различных задач
✅ Параллельная обработка всех патчей
✅ Лучшая производительность на малых данных
✅ Встроенные пространственные индуктивные смещения
✅ Более низкая вычислительная сложность
✅ Лучшая интерпретируемость
Используйте ViT когда:
Доступны большие объёмы данных (>100M изображений)
Требуется моделирование глобальных зависимостей
Есть достаточные вычислительные ресурсы
Нужна универсальная архитектура
Используйте CNN когда:
Ограниченные данные для обучения
Важна вычислительная эффективность
Требуется интерпретируемость модели
Работа с изображениями стандартного размера
Требования к данным: необходимы большие объёмы данных для предобучения
Вычислительная сложность: квадратичная сложность по количеству патчей
Отсутствие индуктивных смещений: не использует пространственную структуру изображений
Фиксированное разрешение: сложности с изображениями разного размера
Эффективные архитектуры: Swin Transformer, PVT, DeiT
Самообучение: методы обучения без учителя
Мультимодальность: объединение с текстом и другими модальностями
Специализированные задачи: детекция, сегментация, генерация
Vision Transformer представляет собой значительный прорыв в применении архитектур трансформеров к компьютерному зрению. Основные достижения:
Превосходная производительность: превосходит CNN на больших данных
Вычислительная эффективность: требует в 4 раза меньше ресурсов для обучения
Универсальность: хорошие результаты на разнообразных задачах
Масштабируемость: эффективное использование больших объёмов данных
Парадигмальный сдвиг: от свёрток к вниманию в компьютерном зрении
Новые исследования: множество последующих работ и улучшений
Практические применения: внедрение в реальные системы
Междисциплинарность: объединение идей из NLP и CV
Vision Transformer открывает новые возможности для:
Унифицированных архитектур для различных модальностей
Более эффективных методов обучения
Лучшего понимания механизмов внимания
Развития мультимодальных систем
Благодаря этой простой, но масштабируемой стратегии ViT в сочетании с предварительным обучением на больших наборах данных соответствует или превосходит уровень техники для многих наборов данных классификации изображений, при этом будучи относительно дешёвым для предварительного обучения.
Эта работа демонстрирует, что внимание действительно может быть всем, что нам нужно, не только в NLP, но и в компьютерном зрении. Vision Transformers открывают новую эру в развитии систем искусственного интеллекта, где универсальные архитектуры могут эффективно работать с различными типами данных.
Dosovitskiy, A., et al. (2020). An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale. arXiv preprint arXiv:2010.11929.
Vaswani, A., et al. (2017). Attention is All You Need. Advances in Neural Information Processing Systems, 30.
He, K., et al. (2016). Deep Residual Learning for Image Recognition. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.
Devlin, J., et al. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv preprint arXiv:1810.04805.
Kolesnikov, A., et al. (2020). Big Transfer (BiT): General Visual Representation Learning. European Conference on Computer Vision.