Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Challenge: Plotting Attention Heatmaps | Застосування трансформерів до завдань обробки природної мови
Трансформери для обробки природної мови
Секція 3. Розділ 4
single

single

bookChallenge: Plotting Attention Heatmaps

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

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

Почніть з розбиття речення на токени:

sentence = "Transformers help models focus on important words."
tokens = sentence.split()

Далі визначте матрицю уваги як масив NumPy. Кожне значення представляє вагу уваги від одного токена до іншого:

import numpy as np
attention = np.array([
    [0.20, 0.10, 0.05, 0.10, 0.25, 0.10, 0.20],
    [0.05, 0.30, 0.10, 0.10, 0.15, 0.20, 0.10],
    [0.10, 0.15, 0.35, 0.10, 0.10, 0.10, 0.10],
    [0.10, 0.10, 0.10, 0.30, 0.10, 0.15, 0.15],
    [0.15, 0.10, 0.10, 0.10, 0.30, 0.10, 0.15],
    [0.10, 0.10, 0.15, 0.10, 0.10, 0.35, 0.10],
    [0.20, 0.15, 0.10, 0.10, 0.10, 0.10, 0.25],
])

Щоб побудувати теплову карту, використайте наступний код:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(8, 6))
im = ax.imshow(attention, cmap="viridis")

ax.set_xticks(np.arange(len(tokens)))
ax.set_yticks(np.arange(len(tokens)))
ax.set_xticklabels(tokens, rotation=45, ha="right")
ax.set_yticklabels(tokens)

cbar = plt.colorbar(im, ax=ax)
cbar.set_label("Attention Weight")

ax.set_title("Attention Heatmap")
ax.set_xlabel("Key Tokens")
ax.set_ylabel("Query Tokens")

plt.tight_layout()
plt.show()

Яскравіші або темніші кольори вказують на більші або менші значення уваги залежно від вибраної колірної схеми. Переглядаючи теплову карту, можна побачити, на які слова модель звертає найбільшу увагу під час обробки кожного токена. Наприклад, якщо клітинка у рядку focus і стовпці important яскрава, це означає, що модель сильно пов'язує focus з important у своїй внутрішній репрезентації. Така візуалізація допомагає зрозуміти, які частини вхідного речення впливають одна на одну, і є корисною для діагностики або інтерпретації поведінки моделі в задачах обробки природної мови.

Тепер виконайте код, щоб побачити отриману теплову карту, а потім створіть свій перший графік візуалізації.

123456789101112131415161718192021222324252627282930313233
import numpy as np import matplotlib.pyplot as plt sentence = "Transformers help models focus on important words." tokens = sentence.split() attention = np.array([ [0.20, 0.10, 0.05, 0.10, 0.25, 0.10, 0.20], [0.05, 0.30, 0.10, 0.10, 0.15, 0.20, 0.10], [0.10, 0.15, 0.35, 0.10, 0.10, 0.10, 0.10], [0.10, 0.10, 0.10, 0.30, 0.10, 0.15, 0.15], [0.15, 0.10, 0.10, 0.10, 0.30, 0.10, 0.15], [0.10, 0.10, 0.15, 0.10, 0.10, 0.35, 0.10], [0.20, 0.15, 0.10, 0.10, 0.10, 0.10, 0.25], ]) fig, ax = plt.subplots(figsize=(8, 6)) im = ax.imshow(attention, cmap="viridis") ax.set_xticks(np.arange(len(tokens))) ax.set_yticks(np.arange(len(tokens))) ax.set_xticklabels(tokens, rotation=45, ha="right") ax.set_yticklabels(tokens) cbar = plt.colorbar(im, ax=ax) cbar.set_label("Attention Weight") ax.set_title("Attention Heatmap") ax.set_xlabel("Key Tokens") ax.set_ylabel("Query Tokens") plt.tight_layout() plt.show()
copy
Завдання

Проведіть, щоб почати кодувати

Побудуйте теплову карту уваги для речення "Attention helps models understand context." використовуючи наступну матрицю уваги:

attention = [
    [0.25, 0.15, 0.20, 0.20, 0.20],
    [0.10, 0.40, 0.15, 0.20, 0.15],
    [0.15, 0.10, 0.35, 0.20, 0.20],
    [0.20, 0.15, 0.20, 0.25, 0.20],
    [0.15, 0.20, 0.20, 0.20, 0.25],
]
  • Використати matplotlib для створення теплової карти;
  • Позначити обидві осі токенами речення;
  • Додати кольорову шкалу з підписом "Attention Weight;"
  • Додати заголовок графіка "Attention Heatmap."

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

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

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

Секція 3. Розділ 4
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

some-alt