Как ответить
Основные недостатки Transformer по сравнению с другими подходами (RNN, CNN) сводятся к трём вещам: квадратичная сложность внимания, огромные требования к памяти и данным, и отсутствие явной индуктивной предвзятости для последовательностей. На практике это означает, что модель тяжело обучать с нуля на маленьких датасетах, она требует дорогого железа, а на длинных контекстах (больше 8-16k токенов) начинает тормозить.
1. Квадратичная сложность self-attention. Это главная боль. Механизм внимания считает попарные веса между всеми токенами — O(n²) по времени и памяти. Для последовательности в 100k токенов это 10 миллиардов операций. RNN обрабатывают последовательность линейно O(n), а CNN — O(n·k) с размером ядра k. На практике это значит, что GPT-4 с контекстом 128k токенов требует десятки гигабайт памяти только на матрицу внимания. Решения вроде sparse attention (Longformer, BigBird) или линейного внимания (Performer) частично снимают проблему, но теряют точность на плотных зависимостях.
2. Гигантские требования к данным и ресурсам. Transformer не имеет встроенного понимания порядка токенов — он использует позиционные эмбеддинги, которые нужно выучить. Из-за этого модель не обобщает на длины последовательностей, не виденные в обучении (проблема extrapolation). RNN и LSTM по определению обрабатывают последовательности любой длины, а CNN с dilated convolutions (WaveNet) тоже проще масштабируются. Чтобы обучить BERT-base (110M параметров), нужно ~16 V100 по 4 дня. Для сравнения, LSTM сопоставимого качества можно обучить на одном GPU за день. На маленьких датасетах (меньше 100k примеров) Transformer переобучается без серьёзной регуляризации — dropout, label smoothing, weight decay.
3. Отсутствие локальной индуктивной предвзятости. CNN по построению учитывает локальные паттерны (соседние пиксели/токены), RNN — последовательную природу данных. Transformer же смотрит на все токены сразу, что избыточно для задач, где важна локальная структура (например, распознавание речи или анализ временных рядов). Это приводит к тому, что для достижения качества RNN на задаче классификации текстов Transformer может потребовать в 2-3 раза больше данных. Плюс, модель легко запоминает шумовые зависимости из-за полного внимания.
4. Проблемы с инференсом на длинных последовательностях. При генерации текста (авторегрессия) Transformer пересчитывает внимание для каждого нового токена заново — O(n²) на каждом шаге. RNN и LSTM имеют константное время шага O(1). Для чат-ботов это решается кэшированием KV-кэша (key-value cache), но он жрёт память линейно от длины контекста. На практике при длине контекста 32k токенов инференс GPT-4 стоит ~$0.06 за запрос, а LSTM — копейки.
5. Сложность обучения. Transformer чувствителен к выбору learning rate — нужен warmup и cosine decay. Без LayerNorm и residual connections градиенты взрываются. RNN с градиентным клиппингом проще в настройке. Плюс, для Transformer критичен batch size — слишком маленький приводит к нестабильности, слишком большой — к переобучению.
Итог: Transformer — это молоток, который забивает любые гвозди, но для мелких задач (короткие последовательности, мало данных, ограниченное железо) RNN/CNN часто оказываются эффективнее. Выбор зависит от бюджета на compute и размера датасета.