Как работают нейросети
Как обрабатывается текст в Transformer-модели
Допустим, у нас есть текст из 10 слов. После токенизации он превратился в 20 токенов:
[154, 27, 891, 42, ..., 517]
1. Токены превращаются в векторы
У модели есть матрица эмбеддингов.
EmbeddingMatrix
[Размер словаря × 4096]
Каждая строка соответствует одному токену.
154 → [0.32, -1.17, ..., 0.11]
27 → [-0.55, 0.81, ..., 0.42]
891 → [1.03, -0.27, ..., -0.15]
После замены всех токенов на их векторы получаем матрицу:
20 токенов × 4096 чисел
X = [20 × 4096]
2. Первый слой Transformer
Модель берёт сразу всю матрицу:
X = [20 × 4096]
и умножает её на обученные матрицы весов:
Q = X × Wq
K = X × Wk
V = X × Wv
Q = [20 × 4096]
K = [20 × 4096]
V = [20 × 4096]
3. Механизм внимания (Attention)
Теперь модель вычисляет:
Q × Kᵀ
Размер результата:
[20 × 4096] × [4096 × 20] = [20 × 20]
Получается матрица связей между токенами.
кот сидит на ковре
кот: 8 2 1 1
сидит: 3 7 2 1
на: 1 2 6 4
ковре: 1 1 3 8
4. Обмен контекстом
Используя коэффициенты внимания, модель смешивает информацию из матрицы V. Каждый токен получает информацию о других токенах.
она ↔ Маша
5. MLP-блок
После attention идёт ещё один набор преобразований.
X
↓
умножение на матрицу весов
↓
нелинейность
↓
ещё одно умножение
Это позволяет модели строить более сложные признаки и зависимости.
6. Завершение слоя
После attention и MLP получается новая матрица:
[20 × 4096]
Размер остаётся тем же, но содержимое меняется. Теперь векторы содержат больше информации о контексте.
7. Повторение через множество слоёв
Количество повторений зависит от числа слоёв модели.
20 токенов
↓
Матрица 20 × 4096
↓
Слой 1
↓
Слой 2
↓
...
↓
Слой 80
8. Предсказание следующего токена
После последнего слоя берётся представление последнего токена:
h = [4096]
Затем:
logits = h × W_vocab
кот 2.1
собака 1.5
дом -0.8
бежит 8.7
9. Softmax
Оценки превращаются в вероятности:
бежит 84%
кот 9%
собака 6%
дом 1%
Модель выбирает следующий токен и повторяет процесс.
10. KV-cache (кэширование токенов)
Для уже обработанных токенов значения K и V сохраняются в памяти.
Token 1: K1, V1
Token 2: K2, V2
Token 3: K3, V3
Для нового токена вычисляются только новые значения:
Q4
K4
V4
После этого:
Q4 ↔ K1
Q4 ↔ K2
Q4 ↔ K3
Q4 ↔ K4
Такое сохранение промежуточных результатов называется KV-cache.
Главное понимание
Для текста из 20 токенов модель хранит матрицу:
20 × 4096
На каждом слое она:
- умножает матрицу на обученные матрицы весов;
- считает внимание между всеми токенами;
- обменивается контекстом между токенами;
- пропускает результат через MLP-блок.
После десятков слоёв получается сложное представление смысла текста, по которому модель оценивает вероятности следующих токенов.
