3. Token Embeddings
Token Embeddings
Після токенізації текстових даних наступним критичним кроком у підготовці даних для навчання великих мовних моделей (LLMs) таких як GPT є створення token embeddings. Token embeddings перетворюють дискретні токени (такі як слова або підслова) у безперервні числові вектори, які модель може обробляти та навчатися на них. Це пояснення розкриває token embeddings, їх ініціалізацію, використання та роль позиційних embeddings у покращенні розуміння моделі послідовностей токенів.
Мета цього третього етапу дуже проста: Призначити кожному з попередніх токенів у словнику вектор бажаних розмірностей для навчання моделі. Кожне слово в словнику буде точкою в просторі X вимірів. Зверніть увагу, що спочатку позиція кожного слова в просторі просто ініціалізується "випадковим чином", і ці позиції є параметрами, що підлягають навчання (будуть покращені під час навчання).
Більше того, під час token embedding створюється ще один шар embeddings, який представляє (в цьому випадку) абсолютну позицію слова в навчальному реченні. Таким чином, слово в різних позиціях у реченні матиме різне представлення (значення).
What Are Token Embeddings?
Token Embeddings є числовими представленнями токенів у безперервному векторному просторі. Кожен токен у словнику асоціюється з унікальним вектором фіксованих розмірностей. Ці вектори захоплюють семантичну та синтаксичну інформацію про токени, що дозволяє моделі розуміти відносини та шаблони в даних.
Vocabulary Size: Загальна кількість унікальних токенів (наприклад, слів, підслів) у словнику моделі.
Embedding Dimensions: Кількість числових значень (вимірів) у векторі кожного токена. Вищі виміри можуть захоплювати більш тонку інформацію, але вимагають більше обчислювальних ресурсів.
Example:
Vocabulary Size: 6 токенів [1, 2, 3, 4, 5, 6]
Embedding Dimensions: 3 (x, y, z)
Initializing Token Embeddings
На початку навчання token embeddings зазвичай ініціалізуються з малими випадковими значеннями. Ці початкові значення коригуються (доладно налаштовуються) під час навчання, щоб краще представляти значення токенів на основі навчальних даних.
PyTorch Example:
Вихід:
Пояснення:
Кожен рядок відповідає токену в словнику.
Кожен стовпець представляє вимір у векторі вбудовування.
Наприклад, токен з індексом
3
має вектор вбудовування[-0.4015, 0.9666, -1.1481]
.
Доступ до вбудовування токена:
Вихід:
Інтерпретація:
Токен з індексом
3
представлений вектором[-0.4015, 0.9666, -1.1481]
.Ці значення є параметрами, що підлягають навчання, які модель буде коригувати під час навчання, щоб краще відобразити контекст і значення токена.
Як працюють токенні вектори під час навчання
Під час навчання кожен токен у вхідних даних перетворюється на відповідний вектор вбудовування. Ці вектори потім використовуються в різних обчисленнях у моделі, таких як механізми уваги та шари нейронних мереж.
Приклад сценарію:
Розмір партії: 8 (кількість зразків, що обробляються одночасно)
Максимальна довжина послідовності: 4 (кількість токенів на зразок)
Розміри вбудовування: 256
Структура даних:
Кожна партія представлена як 3D тензор з формою
(batch_size, max_length, embedding_dim)
.Для нашого прикладу форма буде
(8, 4, 256)
.
Візуалізація:
Пояснення:
Кожен токен у послідовності представлений 256-вимірним вектором.
Модель обробляє ці вектори для вивчення мовних патернів та генерації прогнозів.
Позиційні вектори: Додавання контексту до токенів
Хоча токенові вектори захоплюють значення окремих токенів, вони не закодовані за замовчуванням для позиції токенів у послідовності. Розуміння порядку токенів є критично важливим для розуміння мови. Тут на допомогу приходять позиційні вектори.
Чому потрібні позиційні вектори:
Порядок токенів має значення: У реченнях значення часто залежить від порядку слів. Наприклад, "Кіт сидів на килимку" проти "Килимок сидів на коті."
Обмеження векторів: Без позиційної інформації модель розглядає токени як "мішок слів", ігноруючи їх послідовність.
Типи позиційних векторів:
Абсолютні позиційні вектори:
Призначають унікальний вектор позиції для кожної позиції в послідовності.
Приклад: Перший токен у будь-якій послідовності має той самий позиційний вектор, другий токен має інший і так далі.
Використовується: Моделями GPT від OpenAI.
Відносні позиційні вектори:
Кодують відносну відстань між токенами, а не їх абсолютні позиції.
Приклад: Вказують, наскільки далеко один токен від іншого, незалежно від їх абсолютних позицій у послідовності.
Використовується: Моделями, такими як Transformer-XL та деякими варіантами BERT.
Як інтегруються позиційні вектори:
Ті ж розміри: Позиційні вектори мають таку ж розмірність, як токенові вектори.
Додавання: Вони додаються до токенових векторів, поєднуючи ідентичність токенів з позиційною інформацією без збільшення загальної розмірності.
Приклад додавання позиційних векторів:
Припустимо, вектор токена дорівнює [0.5, -0.2, 0.1]
, а його позиційний вектор дорівнює [0.1, 0.3, -0.1]
. Об'єднаний вектор, що використовується моделлю, буде:
Переваги позиційних векторів:
Контекстуальна обізнаність: Модель може розрізняти токени на основі їхніх позицій.
Розуміння послідовності: Дозволяє моделі розуміти граматику, синтаксис та значення, що залежать від контексту.
Код приклад
Наступний код приклад з https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/01_main-chapter-code/ch02.ipynb:
Посилання
Last updated