English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

гість
1 / ?
назад до уроків

Ембеддинг — це пошук, а не функція

Перший шар після токенізатора

Токенізатор передає моделі цілочисельні ідентифікатори: [256, 1842, 7301, ...]. Перше, що робить трансформер: перетворює кожен ідентифікатор на вектор із d_model дійсних чисел. Цей вектор існує в d_model-вимірному просторі (768 вимірів для ANDREA-120M).


Ембеддинг-шар — це таблиця пошуку, а не функція. Уявіть велику матрицю:


shape: (V, d_model)
row 0:    [e_0_0, e_0_1, ..., e_0_767]
row 1:    [e_1_0, e_1_1, ..., e_1_767]
...
row 8448: [e_8448_0, e_8448_1, ..., e_8448_767]

Token ID i вибирає рядок i. Прямий доступ до масиву. Без арифметики, без активації. Просто індекс.


Потік токенового та позиційного ембеддингу


Навчальні числа з плаваючою комою

Кожне значення в цій таблиці спочатку є невеликим випадковим числом з плаваючою комою (зазвичай з нормального розподілу, масштабованого на 1/sqrt(d_model)). Зворотне поширення помилки оновлює кожен рядок, коли його Token ID з’являється в батчі. Після навчання схожі токени (cat, dog, pet) отримують схожі вектори; несхожі токени (cat, Tuesday, xylophone) розташовуються далеко один від одного в векторному просторі.


ANDREA-120M Вартість вбудовування токенів


КількістьЗначення
V8,449
d_model768
Параметри6,488,832

Приблизно 6,5 млн параметрів міститься лише в таблиці токенових ембеддінгів, що становить близько 5,4 % від загальної кількості параметрів ANDREA-120M. Кожна позиція словника отримує ці 768 чисел з плаваючою комою.

Розмір таблиць ембеддінгів

Обчисліть кількість параметрів токенових ембеддінгів для двох майбутніх варіантів. (a) ANDREA-480M: V = 16 641 (токенізатор на 16 384 сегменти плюс 256 байтів плюс 1 BOS), d_model = 1536. (b) ANDREA-12M: V = 4 353, d_model = 384. Покажіть арифметику V × d_model для кожного.

Скалярні добутки вимірюють подібність

Вектори як стрілки

768-вимірний вектор існує в просторі, який люди не можуть уявити, але та сама алгебра працює в будь-якій розмірності. Для трансформерів важливі дві ключові операції:


Модуль (довжина стрілки):


||v|| = sqrt(v_0² + v_1² + ... + v_767²)

Скалярний добуток (узгодженість між двома векторами):


u · v = u_0 × v_0 + u_1 × v_1 + ... + u_767 × v_767

Що показує скалярний добуток

Дві властивості, які виконуються в будь-якій розмірності:


- u · v = ||u|| × ||v|| × cos(theta), де theta — кут між ними.

- Вектори, що вказують в одному напрямку, дають великі додатні скалярні добутки.

- Вектори, що вказують у протилежних напрямках, дають великі від’ємні скалярні добутки.

- Вектори, що утворюють прямий кут, дають скалярний добуток, рівний нулю.


Скалярний добуток = ненормалізована схожість. Два навчені ембеддинги токенів для cat та dog отримують високий скалярний добуток, оскільки зворотне поширення помилки зблизило їх (обидва передбачають контексти, пов’язані з домашніми тваринами). cat та Tuesday стають майже ортогональними, бо передбачають різні контексти.


Чому трансформеру важлива геометрія

Activity 5 (grow_a_language_model_attention) будує увагу з скалярних добутків: вектор-запит, скалярно помножений на вектори-ключі, дає оцінки, які показують, які попередні токени важливі для передбачення наступного. Ембедінги та скалярні добутки разом несуть усі взаємодії всередині трансформера.

Передбачте подібність

Після тренування ембедінг ANDREA-120M для `believ` (рядок токена 4287, гіпотетичний) виявився приблизно вирівняним з `know`, `understand`, `learn`. Не обчислюючи точних значень, передбачте порядок від найбільшого скалярного добутку до найменшого: `believ · know`, `believ · stone`, `believ · understand`. Обґрунтуйте свій порядок однією фразою для кожної пари.

ANDREA Використовує навчені позиційні вектори

Проблема

Вектор токена повідомляє моделі, яке слово знаходиться в цій позиції. Він не повідомляє моделі, де саме це слово розташоване. Без інформації про позицію трансформер сприймає the cat sat on a mat та mat a on sat cat the однаково: той самий набір токенів, без сигналу про порядок.


У літературі з трансформерів існують три рішення:


Синусоїдальні (Vaswani 2017). Фіксована математична формула на основі синусів і косинусів. Позиція 0 отримує конкретний 768-вектор; позиція 1 — інший; ніколи не тренуються, не оновлюються. Узагальнюються на будь-яку позицію через формулу.


RoPE (Rotary Position Embedding). Обертає вектори query та key залежно від позиції. Використовується в LLaMA, Qwen. Не потребує додаткових параметрів; обертання вбудоване в механізм уваги.


Learned. Окрема таблиця ембеддингів розміром (T, d_model), де T — довжина контексту. Кожен рядок навчається через зворотне поширення помилки, як і ембеддинги токенів.


Вибір ANDREA: Learned

ANDREA успадковує підхід learned-position від microGPT, який успадкував його від nanoGPT, який успадкував від GPT-2. Обґрунтування:


- Простота. У механізмі уваги немає спеціальної математики. Таблиця позицій виглядає як таблиця токенів.

- Сумісність з кастомним CUDA. Двигун ANDREA microgpt_cuda.cu обробляє два пошуки ембеддингів однаково; ядра sin/cos не потрібні.

- Достатньо для фіксованого контексту. ANDREA обмежує T значенням 1024. Навчена таблиця добре працює для послідовностей фіксованої довжини.


Вартість позиційного ембеддингу ANDREA-120M


ВеличинаЗначення
T (контекст)1,024
d_model768
Параметри786,432

0.79M параметрів для позицій. Разом із токенними ембеддінгами: 6.49M + 0.79M = 7.27M параметрів ембеддінгів загалом для ANDREA-120M.


Як вони поєднуються

На кожній позиції t у вхідній послідовності:


x_t = token_embedding[token_id_t] + position_embedding[t]

Два 768-вектори, додані поелементно. Результат, x_t, надходить у перший блок трансформера. Модель ніколи не розділяє їх знову; вона вчиться використовувати комбінований сигнал.

Вивчені проти синусоїдальних

Порівняйте дві стратегії позиційного кодування для гіпотетичної моделі ANDREA. Стратегія A: вивчені, T = 1024. Стратегія B: синусоїдальні, T довільне (працює для будь-якої довжини послідовності). Назвіть одну перевагу кожної. Потім вкажіть, яку обирає ANDREA, та одну причину з погляду CUDA / інженерії.

Де живуть параметри ембеддінгів

Повний шар ембеддінгів ANDREA-120M


КомпонентФормаПараметри
Таблиця токен-ембеддінгів8,449 × 7686,488,832
Таблиця позиційних ембеддінгів1,024 × 768786,432
Всього7,275,264

Приблизно 7.3M параметрів. Загальна кількість параметрів ANDREA-120M: ~120M. Сам шар ембеддінгів: 6%. Решта 94% міститься в трансформер-блоках (attention + MLP, розглядаються в активностях 5-7).


Незв’язані vs Зв’язані ембеддінги

Багато архітектур трансформерів (включно з GPT-2) пов’язують токен-ембедінг із фінальною вихідною проєкцією: одна й та сама матриця V × d_model використовується на вході та на виході (логіти за словником). Зв’язування зменшує кількість параметрів V × d_model і часто покращує якість.


ANDREA використовує незалежні ембедінги: вхідний ембедінг та вихідна проєкція тренуються як окремі матриці. Активність 7 (grow_a_language_model_transformer_block) охоплює фінальний шар.


Прямий прохід на даний момент

Вхід: ID токенів [256, 1842, 7301, ...] (1024 штуки). Кожен ID шукає 768-вектор. Кожна позиція шукає 768-вектор. Поелементне додавання. Результат: матриця (1024, 768) x векторів токенів + позицій. x надходить у трансформер-блок 1.


Активність 5 (grow_a_language_model_attention) описує, що робить блок 1: scaled dot-product attention з causal mask та softmax.

Прогнозування структури ембеддингів

Рефлексія: ANDREA-120M має 8449 токен-ембеддингів і 1024 позиційних ембеддинги, які поділяють один і той самий 768-вимірний простір. Після навчання, що ви очікуєте: (a) як виглядатиме матриця токен-ембеддингів (кластерні патерни?), чи (b) як виглядатиме матриця позиційних ембеддингів (плавний градієнт)? Виберіть одне і спрогнозуйте в одному-двох реченнях. Немає неправильної відповіді; важливе міркування.