Как устроен трансформер
10 часов назад
Никита Вихров
Ответы
Как устроен трансформер
Трансформер — это архитектура нейросети, на которой построены все современные языковые модели: GPT, Claude, Gemini, LLaMA. Понимание того, как он работает, помогает лучше писать промпты и понимать ограничения моделей.
Входные данные: токены и эмбеддинги
Текст сначала разбивается на токены, каждый токен превращается в вектор (эмбеддинг) — список из тысяч чисел. К этому вектору добавляется позиционное кодирование, чтобы модель знала, где в предложении стоит каждый токен. Без позиционного кодирования «кот съел мышь» и «мышь съела кот» были бы неразличимы.
Механизм внимания (attention)
Это ключевая часть трансформера. Для каждого токена модель вычисляет, насколько он «связан» с каждым другим токеном в контексте.
Пример: в предложении «банк выдал кредит, и он пришёл вовремя» — слово «он» связано с «кредит», а не с «банк». Механизм внимания учится находить такие связи.
Технически: каждый токен превращается в три вектора — Query (запрос), Key (ключ), Value (значение). Внимание вычисляется как скалярное произведение Query одного токена на Key всех остальных, нормализуется через softmax и взвешивает Value. Результат — новое представление токена с учётом контекста.
Multi-head attention: этот процесс запускается параллельно несколько раз (голов бывает 8, 16, 32...). Каждая голова учится замечать разные типы связей: одна — синтаксические, другая — семантические, третья — кореференцию.
Слои и глубина
Трансформер состоит из N одинаковых блоков (layers), уложенных друг на друга. GPT-3 — 96 слоёв, Claude 3 — предположительно 100+. Каждый слой уточняет представление токенов: нижние слои ловят синтаксис, верхние — абстрактный смысл.
После attention в каждом блоке стоит Feed-Forward Network (FFN) — обычная двухслойная нейросеть, которая обрабатывает каждый токен независимо. Именно в FFN хранится большая часть «знаний» модели.
Почему трансформер лучше предшественников
До трансформеров использовали рекуррентные сети (RNN, LSTM). Они обрабатывали текст последовательно — токен за токеном, и «забывали» начало длинного текста к концу. Трансформер обрабатывает все токены параллельно и видит весь контекст сразу — отсюда и большие контекстные окна.
Почему это важно на практике
- Модель одинаково хорошо видит начало и конец контекста — но середина длинного контекста обрабатывается хуже (эффект «lost in the middle»)
- Внимание квадратично по длине контекста — удвоили контекст, вычислений стало в 4 раза больше. Поэтому большие контекстные окна дороги
- Модель не «читает» текст слева направо при генерации — она видит весь промпт сразу, а потом генерирует по одному токену
Если коротко: трансформер — это механизм, который учит каждый токен «смотреть» на все остальные и понимать свой смысл через их контекст. Именно это делает модели такими мощными.
10 часов назад
Никита Вихров