single
Desafio: 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.
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()
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
matplotlibpara 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
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo