Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Transformer

Transformer — это нейронная сеть на основе self-attention, которая обрабатывает всю последовательность параллельно. Как он работает, какие существуют варианты и как его применяют в компьютерном зрении.

Transformer — это архитектура нейронной сети, которая обрабатывает последовательность токенов, например слов или фрагментов изображения, позволяя каждому токену получать информацию от всех остальных с помощью механизма самовнимания. Исследователи Google представили эту архитектуру в 2017 году в статье «Внимание — это всё, что вам нужно» для задачи машинного перевода. Более ранние рекуррентные нейронные сети (RNN) читали предложение по одному слову, поэтому обучение нельзя было распараллелить по позициям. Transformer обрабатывает все позиции одновременно, а его базовая модель достигла лучших на тот момент результатов в переводе с английского на немецкий после 12 часов обучения на восьми GPU. Сегодня Transformer лежит в основе больших языковых моделей (LLM), визуальных трансформеров, распознавания речи, а также многих моделей обнаружения объектов и генерации изображений.

Как работают Transformer#

Сначала входные токены преобразуются в эмбеддинги — векторы фиксированной размерности (512 в исходной модели). Затем Transformer применяет набор одинаковых слоёв, каждый из которых состоит из двух подслоёв:

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

Каждый подслой обёрнут в остаточное соединение, а нормализация слоя стабилизирует активации. В исходной модели в энкодере, который считывает исходное предложение, было 6 таких слоёв, и ещё 6 — в декодере, который шаг за шагом формирует перевод. В каждом слое декодера добавлены этап самовнимания с маской, скрывающей будущие токены, и этап перекрёстного внимания, который считывает выход энкодера:

Механизм внимания сопоставляет токены только по содержанию, поэтому у слоя Transformer нет встроенного представления о порядке: перестановка входных токенов просто переставляет выходы. Поэтому к эмбеддингам токенов добавляют информацию о позициях: в исходной статье использовали фиксированные синусоидальные шаблоны, в BERT и ViT — обучаемые позиционные векторы, а в большинстве современных LLM — вращательные позиционные эмбеддинги (RoPE). Этот пример кода на PyTorch показывает эффект на одном слое энкодера:

import torch
from torch import nn

# Один слой энкодера Transformer и последовательность из 5 эмбеддингов токенов
torch.manual_seed(0)
layer = nn.TransformerEncoderLayer(d_model=32, nhead=4, batch_first=True).eval()
tokens = torch.randn(1, 5, 32)
reverse = torch.arange(4, -1, -1)

# Самовнимание не учитывает порядок: разворот входа приводит лишь к развороту выхода
print(torch.allclose(layer(tokens[:, reverse])[:, reverse], layer(tokens), atol=1e-5))

# Если добавить по одному обучаемому вектору на позицию, выход каждого токена будет зависеть от его местоположения
positions = nn.Embedding(5, 32).weight
reordered = layer(tokens[:, reverse] + positions)[:, reverse]
print(torch.allclose(reordered, layer(tokens + positions), atol=1e-5))

Выводятся True и затем False: до добавления позиционных векторов разворот токенов приводит лишь к развороту выходов, а после добавления порядка токенов меняется выход каждого токена.

Модели с энкодером, декодером и энкодером-декодером#

Три способа использовать исходный стек подходят для разных задач:

  • Только энкодер: Каждый токен учитывает весь вход в обоих направлениях, что подходит для задач понимания. BERT для текста и ViT для изображений используют только энкодер: BERT.
  • Только декодер: Каждый токен учитывает только предшествующие ему токены, поэтому модель генерирует текст по одному токену за раз. В моделях GPT и большинстве современных LLM используется именно эта архитектура.
  • Энкодер-декодер: Энкодер считывает одну последовательность, а декодер формирует другую, одновременно обращаясь к первой. Такой подход используют, например, модели перевода, T5 и система распознавания речи Whisper.

Transformer в компьютерном зрении#

Визуальный трансформер (ViT) разбивает изображение на фрагменты размером 16×16 пикселей и применяет обычный энкодер Transformer, а Swin Transformer ограничивает внимание локальными окнами, чтобы работать с изображениями высокого разрешения. DETR представил обнаружение объектов как предсказание множества: декодер Transformer преобразует фиксированный набор обучаемых запросов объектов в рамки, по одному объекту на запрос. Это устраняет необходимость в подавлении немаксимумов (NMS) и анкерах, заданных вручную. Пакет Ultralytics запускает RT-DETR от Baidu — вариант этой архитектуры для работы в реальном времени. Его гибридный энкодер применяет слой энкодера Transformer только к карте признаков с шагом 32, то есть к 400 токенам для изображения 640×640, а шестислойный декодер уточняет 300 запросов объектов и формирует итоговые детекции без NMS. Transformer также используют для генерации изображений: диффузионные трансформеры пришли на смену U-Net в новых моделях генерации изображений по тексту и видео, а визуально-языковые модели передают токены изображения в LLM с одним декодером.

  • Свёрточные нейронные сети (CNN): Свёртка обрабатывает небольшую окрестность одним и тем же фильтром в каждой позиции. Это заложенное в архитектуру предположение помогает при обучении на небольших наборах данных. Механизм внимания может связывать любые две позиции уже в одном слое, но пространственную структуру ему приходится изучать по данным, поэтому Transformer обычно требуется больше данных для обучения или предварительное обучение, чтобы превзойти CNN.
  • RNN и LSTM: Они переносят состояние фиксированного размера с шага на шаг, поэтому объём памяти на токен остаётся постоянным, но обучение выполняется последовательно. Transformer сохраняет доступ ко всем предыдущим токенам и обучается параллельно.
  • Модели пространства состояний: Такие архитектуры, как Mamba, обрабатывают последовательности с помощью рекуррентного состояния, а вычислительные затраты растут линейно с длиной последовательности. В гибридных моделях эти архитектуры чередуются со слоями внимания.

Самовнимание сопоставляет каждый токен со всеми остальными, поэтому его вычислительная стоимость растёт пропорционально квадрату длины последовательности. В последовательности из 4096 токенов в каждой голове каждого слоя насчитывается около 16,8 миллиона пар «запрос — ключ», а при увеличении длины до 8192 токенов это число возрастает вчетверо — примерно до 67 миллионов. FlashAttention снижает объём трафика памяти при этих вычислениях, а KV-кэш хранит ключи и значения предыдущих токенов, чтобы декодер вычислял их только один раз во время генерации.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

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

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения