Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте How Self-Attention Is Calculated | Основи Розуміння Transformer
Трансформери для обробки природної мови

bookHow Self-Attention Is Calculated

Свайпніть щоб показати меню

Щоб зрозуміти, як обчислюється механізм самоуваги у трансформерах, необхідно дотримуватися чіткої послідовності математичних операцій. Механізм самоуваги дозволяє кожному слову в реченні зосереджуватися на інших словах під час формування вихідного представлення. Це досягається шляхом обчислення зваженої суми всіх вхідних векторів, де ваги відображають важливість кожного слова для поточного слова, що обробляється.

Припустимо, що у вас є коротке речення, представлене у вигляді матриці, де кожен рядок — це векторне представлення слова. Спочатку ці вектори проєктуються у запити, ключі та значення за допомогою навчуваних матриць ваг. Основою механізму самоуваги є обчислення оцінок уваги та агрегування векторів значень на основі цих оцінок.

Note
Визначення

Запити, ключі та значення — це різні представлення вхідних даних, кожне з яких використовується для певної ролі в обчисленні уваги.

Обчислення самоуваги

Самоувагу можна розбити на послідовність чітких математичних кроків для кожного слова в послідовності:

Проєкція вхідних даних у запити, ключі та значення: проєктування вхідної матриці за допомогою навчуваних вагових матриць для отримання запитів, ключів і значень.

123456789101112131415161718192021222324252627282930313233
import numpy as np # Example input: 3 words, embedding size 4 X = np.array([ [1.0, 0.0, 1.0, 0.0], # word 1 [0.0, 2.0, 0.0, 2.0], # word 2 [1.0, 1.0, 1.0, 1.0] # word 3 ]) # Weight matrices for queries, keys, values (embedding size 4 -> 4) W_q = np.array([ [0.1, 0.2, 0.0, 0.0], [0.0, 0.1, 0.3, 0.0], [0.1, 0.0, 0.0, 0.2], [0.0, 0.0, 0.2, 0.3] ]) W_k = np.array([ [0.2, 0.0, 0.1, 0.0], [0.0, 0.1, 0.0, 0.3], [0.1, 0.0, 0.2, 0.0], [0.0, 0.2, 0.0, 0.1] ]) W_v = np.array([ [0.0, 0.1, 0.0, 0.2], [0.2, 0.0, 0.2, 0.0], [0.0, 0.3, 0.1, 0.0], [0.1, 0.0, 0.0, 0.3] ]) # Compute queries, keys, values Q = X @ W_q K = X @ W_k V = X @ W_v
copy

Обчислення оцінок уваги:

  • Обчислення схожості між кожним запитом і всіма ключами;
  • Ці оцінки показують, скільки уваги кожне слово повинно приділяти іншим.
1
scores = Q @ K.T
copy

Масштабування оцінок: поділ оцінок уваги на квадратний корінь з розміру ключа. Це масштабування допомагає стабілізувати градієнти під час навчання.

12
d_k = Q.shape[1] scaled_scores = scores / np.sqrt(d_k)
copy

Застосування функції softmax: перетворення масштабованих оцінок на ваги уваги за допомогою функції softmax. Це гарантує, що ваги є додатними та для кожного слова їх сума дорівнює 1.

123456
# Softmax to get attention weights def softmax(x): e_x = np.exp(x - np.max(x, axis=-1, keepdims=True)) return e_x / np.sum(e_x, axis=-1, keepdims=True) attention_weights = softmax(scaled_scores)
copy

Обчислення зваженої суми значень: використання ваг уваги для обчислення зваженої суми векторів значень. Це формує фінальний вихід самоуваги для кожного слова.

12345
# Weighted sum of values output = attention_weights @ V print("Attention weights:\n", attention_weights) print("Self-attention output:\n", output)
copy

Ці кроки відображають основні обчислення механізму самоуваги в трансформерних моделях.

1. Який правильний порядок операцій у механізмі самоуваги для одного вхідного слова?

2. Чому ми масштабуємо оцінки уваги на квадратний корінь з розмірності ключа?

3. Які вектори використовуються для обчислення оцінок уваги

question mark

Який правильний порядок операцій у механізмі самоуваги для одного вхідного слова?

Виберіть правильну відповідь

question mark

Чому ми масштабуємо оцінки уваги на квадратний корінь з розмірності ключа?

Виберіть правильну відповідь

question mark

Які вектори використовуються для обчислення оцінок уваги

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 5

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 5
some-alt