Почему в GPT используется декодер, а не энкодер?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
GPT решает задачу автопродолжения текста: ему нужно предсказывать следующий токен по уже увиденному контексту. Для этого подходит декодерная архитектура с causal mask, которая не позволяет смотреть в будущее. Энкодер, наоборот, обычно строится для понимания всего входа целиком и не является естественным выбором для генерации по шагам.
Определение:
Декодер в трансформере — это часть модели, которая генерирует последовательность токен за токеном, опираясь только на предыдущий контекст. В GPT используется именно decoder-only архитектура: модель читает левый контекст и предсказывает следующий токен.
Энкодер же предназначен для построения представления входной последовательности с доступом ко всем токенам сразу. Это удобно для задач классификации, извлечения признаков, поиска соответствий, но не для авторегрессивной генерации, где важен запрет на использование будущих токенов.
Пример использования:
Например, если на вход подать фразу «Сегодня на улице очень», GPT будет предсказывать следующий токен, например «холодно», затем по обновлённому контексту продолжит генерацию дальше.
Вход: "Сегодня на улице очень"
Шаг 1: предсказать следующий токен -> "холодно"
Шаг 2: контекст становится "Сегодня на улице очень холодно"
Шаг 3: предсказать следующий токен -> "и"
Пояснение кода:
Код не требуется: принцип здесь архитектурный, а не алгоритмический. Если разложить работу GPT по шагам, то сначала токены входной последовательности проходят через слои self-attention с causal mask, затем модель на каждом шаге вычисляет распределение вероятностей следующего токена, после чего выбранный токен добавляется в контекст и процесс повторяется.
Если бы использовался энкодер, он бы видел всю последовательность сразу, включая «будущие» токены, что ломает авторегрессивную генерацию. Поэтому для GPT нужна схема, где каждый новый токен предсказывается только на основе уже сгенерированных.
Ключевые моменты:
- GPT — это модель для авторегрессивной генерации текста.
- Декодер подходит, потому что он предсказывает следующий токен по левому контексту.
- Causal mask запрещает модели смотреть на будущие токены.
- Энкодер лучше подходит для понимания и преобразования уже заданного текста, а не для пошаговой генерации.
- Decoder-only архитектура проще и естественнее для языковой модели, которая обучается на задаче next-token prediction.