Encoder, decoder и encoder-decoder

Разбираем три семейства моделей и понимаем, какую выбрать под задачу.

Семейство модели определяется тем, какие части трансформера в ней есть: encoder, decoder или оба.

Три типа моделей

ТипПримерСильная сторона
encoderBERTпонимание текста (классификация, NER)
decoderGPTгенерация текста
encoder-decoderT5преобразование текста (перевод, суммаризация)

Encoder-модели (BERT)

Encoder читает весь текст сразу — каждый токен видит и левый, и правый контекст (двунаправленность). Это идеально для задач понимания: классификация, NER, QA. Но encoder не генерирует текст — он только строит представления.

[CLS] кошка спит на [MASK] [SEP]
          | модель видит контекст с обеих сторон
          v
  предсказать [MASK] = "диване"

Decoder-модели (GPT)

Decoder генерирует текст слева направо, видя только предыдущие токены (causal attention). Это нужно, чтобы при генерации модель не «подсматривала» в будущее. Decoder-модели — основа всех генеративных LLM (связь с курсом LLM).

машинное обучение это ?
  модель видит только левую часть
  -> предсказывает: "область"

Encoder-decoder (T5)

Здесь encoder читает вход целиком, а decoder на его основе порождает выход. Идеально для задач «текст в текст»: перевод, суммаризация, перефразирование. Encoder «понимает» исходник, decoder «пишет» результат.

Как работает под капотом

Разница в маске внимания. У encoder маска полная — токен видит всех. У decoder маска каузальная: токен видит только себя и предыдущих (будущее закрыто). Encoder-decoder сочетает оба: encoder с полной маской, decoder с каузальной плюс «cross-attention» — внимание декодера к выходу encoder. Поэтому одна и та же базовая идея (attention) даёт три разных поведения.

Частые ошибки

  • Брать BERT для генерации текста. Encoder не генерирует — нужен decoder.
  • Брать GPT для классификации, когда хватает encoder. Это возможно, но encoder-модель часто точнее и дешевле.
  • Путать суммаризацию (seq2seq) с генерацией. Для «текст в текст» естественнее encoder-decoder.

Итог

  • Encoder (BERT) — понимание: классификация, NER, QA; видит контекст с обеих сторон.
  • Decoder (GPT) — генерация; видит только прошлые токены (каузальная маска).
  • Encoder-decoder (T5) — преобразование текста: перевод, суммаризация.
  • Разницу задаёт маска внимания, а основа у всех — attention.
Проверьте себя
1. Какой тип модели лучше всего подходит для генерации текста?
Aencoder (BERT)
Bdecoder (GPT)
Cни один не подходит
Dтолько encoder-decoder
2. Чем отличается маска внимания у decoder от encoder?
AНичем
BУ decoder маска каузальная: токен видит только себя и предыдущих
CУ decoder нет attention
DУ encoder маска каузальная
3. Для какой задачи естественнее всего encoder-decoder модель (T5)?
AКлассификация тональности
BПеревод и суммаризация (текст в текст)
CРаспознавание сущностей
DПоиск по эмбеддингам