Как интерпретировать веса внимания в обученной модели? Надежны ли они?
Краткое содержание
Я дообучил две разные модели (Bert и Roberta) на наборе данных для задачи бинарной классификации и сравниваю предложения, в которых модели ошибаются. Я решил использовать веса внимания как метод интерпретируемости, чтобы понять, какие токены вносят наибольший вклад в вывод модели. У меня есть функция, которая визуализирует матрицу внимания: def show_attention_matrix(text, model): input_ids = tokenizer(text, return_tensors="pt")["input_ids"].to(device) attention_mask = tokenizer(text, return_tensors="pt")["attention_mask"].to(device) tokens = tokenizer.convert_ids_to_tokens(input_ids.view(-1)) attentions = model(input_ids, attention_mask)["attentions"] last_layer_attention = attentions[-1] last_layer_attention = last_layer_attention.squeeze(0) mean_attentions = torch.mean(last_layer_attention, dim=0) mean_attentions = mean_attentions.cpu().detach().numpy() df = pd.DataFrame(mean_attentions) plt.figure(figsize=(20, 10))
Полный текст статьи пока не загружен.