Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Desafio: Plotando Mapas de Calor de Atenção | Aplicando Transformers a Tarefas de PLN
Transformers para Processamento de Linguagem Natural
Seção 3. Capítulo 4
single

single

bookDesafio: Plotando Mapas de Calor de Atenção

Deslize para mostrar o menu

Visualizar os pesos de atenção com um mapa de calor auxilia na interpretação de como um modelo transformer distribui seu foco ao longo de uma sentença. Utiliza-se o matplotlib para plotar um mapa de calor onde tanto o eixo x quanto o eixo y representam os tokens da sentença. Cada célula no mapa de calor exibe o peso de atenção entre um par de tokens: a linha corresponde ao token de consulta (query) e a coluna ao token de chave (key).

Comece dividindo sua sentença em tokens:

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

Em seguida, defina sua matriz de atenção como um array NumPy. Cada valor representa o peso de atenção de um token para outro:

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],
])

Para plotar o mapa de calor, utilize o seguinte código:

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()

Cores mais claras ou escuras indicam valores de atenção mais altos ou mais baixos, dependendo do mapa de cores. Ao observar o mapa de calor, é possível identificar para quais palavras o modelo dedica mais atenção ao processar cada token. Por exemplo, se a célula na linha focus e coluna important estiver clara, o modelo estabelece uma forte conexão entre focus e important em sua representação interna. Essa visualização permite compreender quais partes da sentença de entrada influenciam umas às outras e é útil para diagnosticar ou interpretar o comportamento do modelo em tarefas de processamento de linguagem natural.

Agora, execute o código para visualizar o mapa de calor resultante e, em seguida, escreva seu primeiro gráfico de visualização.

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
Tarefa

Deslize para começar a programar

Plotagem de um mapa de calor de atenção para a frase "Attention helps models understand context." utilizando a seguinte matriz de atenção:

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],
]
  • Utilização do matplotlib para criar um mapa de calor;
  • Rotulagem de ambos os eixos com os tokens da frase;
  • Inclusão de uma barra de cores rotulada como "Attention Weight;"
  • Título do gráfico: "Attention Heatmap."

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 4
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

some-alt