single
Challenge: 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 у своїй внутрішній репрезентації. Така візуалізація допомагає зрозуміти, які частини вхідного речення впливають одна на одну, і є корисною для діагностики або інтерпретації поведінки моделі в задачах обробки природної мови.
Тепер виконайте код, щоб побачити отриману теплову карту, а потім створіть свій перший графік візуалізації.
123456789101112131415161718192021222324252627282930313233import 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()
Проведіть, щоб почати кодувати
Побудуйте теплову карту уваги для речення "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."
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат