Открыть сервис

Реформер

Реформер — это специализированная архитектура нейронной сети, предложенная в 2020 году исследователями из компании Google (входит в холдинг Alphabet) для решения проблемы вычислительной сложности, присущей моделям на основе механизма внимания (Transformer). Основная цель разработки — обработка последовательностей данных (текста, изображений, временных рядов) с длинным контекстом, где стандартные трансформеры сталкиваются с квадратичным ростом затрат памяти и времени.

История создания

Архитектура Transformer, представленная в 2017 году, быстро стала стандартом в задачах обработки естественного языка (NLP) и компьютерного зрения. Однако её ключевой компонент — механизм самовнимания (self-attention) — имеет вычислительную сложность O(n²) по длине последовательности n. Это означает, что при увеличении длины входного текста, например, до 100 000 токенов, требования к памяти и времени обучения становятся практически невыполнимыми для обычных графических процессоров (GPU).

В 2020 году группа исследователей из Google Research (Никита Китaев, Łukasz Kaiser, Anselm Levskaya и другие) опубликовала статью «Reformer: The Efficient Transformer». В ней они предложили несколько ключевых модификаций, которые позволили снизить сложность до O(n log n) и значительно уменьшить потребление памяти. Архитектура была реализована в открытой библиотеке машинного обучения Trax.

Ключевые особенности

1. LSH-внимание (Locality-Sensitive Hashing Attention)

Основная инновация Reformer — замена полного механизма самовнимания на приближённый, основанный на хэшировании с учётом локальности (LSH). Вместо того чтобы вычислять внимание каждого токена ко всем остальным, модель группирует похожие запросы (queries) и ключи (keys) в хэш-корзины. Внутри каждой корзины вычисляется полное внимание, но количество пар токенов для сравнения резко сокращается.

  • Принцип работы: Для каждого токена вычисляется хэш-код на основе его представления. Токены с одинаковым хэшем попадают в одну группу. Внимание вычисляется только внутри группы, а не по всей последовательности.
  • Сложность: Снижается с O(n²) до O(n log n), так как количество токенов в каждой корзине в среднем пропорционально log n.
  • Ограничение: LSH-внимание является приближённым — оно может не учитывать слабые, но важные связи между токенами из разных корзин. Однако на практике это даёт приемлемую точность для большинства задач.

2. Обратимые слои (Reversible Layers)

В стандартном трансформере каждый слой хранит промежуточные активации (выходы всех нейронов) для обратного распространения ошибки. Это приводит к огромному расходу памяти — объём хранимых данных пропорционален длине последовательности и числу слоёв. Reformer использует обратимые слои, которые позволяют восстановить входные данные из выходных без сохранения промежуточных значений.

  • Механизм: Каждый слой разделён на две части: одна часть вычисляет нелинейное преобразование, другая — линейное. Во время обратного прохода вычисления выполняются в обратном порядке, реконструируя входные данные.
  • Эффект: Потребление памяти снижается с O(n * L) (где L — число слоёв) до O(n), то есть перестаёт зависеть от глубины сети. Это позволяет строить очень глубокие модели (до десятков слоёв) без переполнения памяти GPU.

3. Кусочно-последовательная обработка (Chunked Feed-Forward)

В стандартном трансформере слои прямой связи (feed-forward) обрабатывают каждый токен независимо, но требуют хранения всех активаций. Reformer разбивает последовательность на небольшие «куски» (chunks) и обрабатывает их по очереди, освобождая память после каждого шага. Это не влияет на точность, так как прямой связи между токенами в этом слое нет.

Архитектура и устройство

Reformer сохраняет общую структуру трансформера: кодировщик (encoder) и декодировщик (decoder), каждый из которых состоит из нескольких блоков. Однако внутренние компоненты модифицированы:

  • Входной слой: Токены преобразуются в эмбеддинги (векторные представления) с добавлением позиционных кодировок.
  • Блок LSH-внимания: Вместо полного внимания используется LSH-внимание с несколькими раундами хэширования (обычно 4–8) для повышения точности.
  • Обратимый слой: Объединяет LSH-внимание и кусочно-последовательную прямую связь в один обратимый блок.
  • Выходной слой: Линейное преобразование и softmax для получения вероятностей токенов.

Применение

Reformer ориентирован на задачи, где длина контекста критически важна:

  • Обработка длинных текстов: Анализ книг, юридических документов, научных статей (например, обработка полного текста романа «Война и мир»).
  • Генерация музыки: Моделирование музыкальных последовательностей с длиной до нескольких тысяч нот.
  • Обработка изображений высокого разрешения: Патч-токенизация изображений с последующим вниманием на больших областях.
  • Генерация кода: Анализ и генерация программного кода с длинными зависимостями между строками.
  • Биоинформатика: Анализ последовательностей ДНК и белков, где длина может достигать миллионов символов.

Преимущества и недостатки

Преимущества

  • Эффективность по памяти: Позволяет обрабатывать последовательности в десятки раз длиннее, чем стандартные трансформеры, при тех же вычислительных ресурсах.
  • Скорость обучения: LSH-внимание и обратимые слои ускоряют обучение на длинных последовательностях.
  • Масштабируемость: Возможность строить очень глубокие модели (до 20–30 слоёв) без переполнения памяти.

Недостатки

  • Приближённость внимания: LSH-хэширование может терять редкие, но важные связи между токенами, что снижает качество на некоторых задачах (например, в задачах точного машинного перевода).
  • Сложность реализации: Требуется специальная оптимизация для эффективного хэширования на GPU.
  • Ограниченная популярность: На практике Reformer уступил место более поздним архитектурам, таким как Longformer, BigBird и Performer, которые предложили альтернативные методы приближённого внимания.

Критика и альтернативы

Несмотря на инновационность, Reformer не стал массовым стандартом. Основная критика связана с тем, что LSH-внимание даёт выигрыш только при очень длинных последовательностях (более 10 000 токенов), а для коротких последовательностей (до 512 токенов) оно менее эффективно, чем полное внимание. Кроме того, были разработаны более простые и быстрые методы:

  • Longformer (2020) — использует комбинацию локального и глобального внимания.
  • BigBird (2020) — сочетает случайное, локальное и глобальное внимание.
  • Performer (2020) — применяет ядерное приближение внимания (FAVOR+).

Тем не менее, Reformer остаётся важной вехой в развитии эффективных трансформеров, продемонстрировавшей практическую возможность обработки сверхдлинных последовательностей.

Интересные факты

  • Название «Reformer» является игрой слов: «Reformer» (реформатор) и «Transformer» (трансформер), подчёркивая, что это реформированная версия оригинальной архитектуры.
  • В оригинальной статье исследователи показали, что модель может обрабатывать последовательность длиной до 1 миллиона токенов на одном GPU с 16 ГБ памяти.
  • Reformer был использован для генерации музыки в проекте Google Magenta, где он создавал композиции длительностью до нескольких минут.

Источники

  • Kitaev, N., Kaiser, Ł., Levskaya, A. (2020). «Reformer: The Efficient Transformer». arXiv preprint arXiv:2001.04451.
  • Vaswani, A. et al. (2017). «Attention Is All You Need». Advances in Neural Information Processing Systems.
  • Beltagy, I., Peters, M. E., Cohan, A. (2020). «Longformer: The Long-Document Transformer». arXiv preprint arXiv:2004.05150.
  • Zaheer, M. et al. (2020). «Big Bird: Transformers for Longer Sequences». arXiv preprint arXiv:2007.14062.
  • Choromanski, K. et al. (2020). «Rethinking Attention with Performers». arXiv preprint arXiv:2009.14794.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →