Какие архитектуры доминировали в NLP до появления модели Transformer?

«Какие архитектуры доминировали в NLP до появления модели Transformer?» — вопрос из категории NLP и трансформеры, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

До революционной работы "Attention Is All You Need" (2017) в NLP преобладали три основных класса архитектур:

  1. Рекуррентные нейронные сети (RNN) и их варианты (LSTM, GRU):

    • Принцип: Последовательная обработка текста, где скрытое состояние обновляется на каждом шаге.
    • Недостатки:
      • Плохой параллелизм из-за последовательной природы, что замедляет обучение.
      • Проблемы с запоминанием долгосрочных зависимостей (частично решены LSTM).
    • Пример кода LSTM для классификации на PyTorch:
      
      import torch.nn as nn

    class TextClassifierLSTM(nn.Module): def init(self, vocab_size, embedding_dim, hidden_dim, output_dim): super().init() self.embedding = nn.Embedding(vocab_size, embedding_dim) self.lstm = nn.LSTM(embedding_dim, hidden_dim, batch_first=True, bidirectional=True) self.fc = nn.Linear(hidden_dim 2, output_dim) # 2 для bidirectional

    def forward(self, text):
        embedded = self.embedding(text)          # [batch_size, seq_len, emb_dim]
        output, (hidden, cell) = self.lstm(embedded)
        # Объединяем скрытые состояния для bidirectional LSTM
        hidden = torch.cat((hidden[-2,:,:], hidden[-1,:,:]), dim=1)
        return self.fc(hidden)
  2. Сверточные нейронные сети (CNN):

    • Применяли одномерные свертки к матрице эмбеддингов слов для выделения локальных n-граммных паттернов.
    • Быстрее RNN, но хуже справлялись с глобальными контекстными зависимостями в длинных текстах.
  3. Модели на основе механизма внимания (Attention) в архитектурах Encoder-Decoder:

    • Ключевой прорыв — работа Bahdanau (2015) по выравнивающему вниманию (alignment) для машинного перевода.
    • Декодер "заглядывал" в скрытые состояния энкодера, взвешивая их важность для генерации каждого следующего слова.
    • Ограничение: Attention использовался как дополнение к RNN/CNN, а не как самостоятельный механизм.

Трансформер кардинально изменил парадигму, полностью отказавшись от рекуррентности и сверток в пользу самовнимания (self-attention), что позволило беспрецедентно параллелизовать обработку последовательностей и эффективно моделировать зависимости любой длины.