Captum
Übersicht von Captum
Captum: Modellinterpretierbarkeit für PyTorch
Was ist Captum?
Captum ist eine Open-Source- und erweiterbare Bibliothek für die Modellinterpretierbarkeitsforschung in PyTorch. Sie bietet Werkzeuge, um die Vorhersagen von PyTorch-Modellen in verschiedenen Modalitäten wie Bild und Text zu verstehen und zuzuordnen.
Hauptmerkmale
- Multi-Modal: Unterstützt die Interpretierbarkeit von Modellen über verschiedene Modalitäten hinweg, einschließlich Bild, Text und mehr.
- Basiert auf PyTorch: Unterstützt die meisten Arten von PyTorch-Modellen und kann mit minimalen Änderungen am ursprünglichen neuronalen Netzwerk verwendet werden.
- Erweiterbar: Open-Source-, generische Bibliothek für Interpretierbarkeitsforschung. Einfache Implementierung und Benchmarking neuer Algorithmen.
Wie man mit Captum anfängt?
Captum installieren:
- Via conda (empfohlen):
conda install captum -c pytorch- Via pip:
pip install captumEin Modell erstellen und vorbereiten:
Das folgende Beispiel demonstriert, wie man Captum mit einem einfachen ToyModel verwendet:
import numpy as np
import torch
import torch.nn as nn
from captum.attr import IntegratedGradients
class ToyModel(nn.Module):
def __init__(self):
super().__init__()
self.lin1 = nn.Linear(3, 3)
self.relu = nn.ReLU()
self.lin2 = nn.Linear(3, 2)
# initialize weights and biases
self.lin1.weight = nn.Parameter(torch.arange(-4.0, 5.0).view(3, 3))
self.lin1.bias = nn.Parameter(torch.zeros(1,3))
self.lin2.weight = nn.Parameter(torch.arange(-3.0, 3.0).view(2, 3))
self.lin2.bias = nn.Parameter(torch.ones(1,2))
def forward(self, input):
return self.lin2(self.relu(self.lin1(input)))
model = ToyModel()
model.eval()
Um Berechnungen deterministisch zu machen, fixieren wir Zufallszahlen:
torch.manual_seed(123)
np.random.seed(123)
Definieren Sie Eingabe- und Basislinientensoren:
input = torch.rand(2, 3)
baseline = torch.zeros(2, 3)
- Algorithmus auswählen, um ihn zu instanziieren und anzuwenden:
Dieses Beispiel verwendet integrierte Gradienten:
ig = IntegratedGradients(model)
attributions, delta = ig.attribute(input, baseline, target=0, return_convergence_delta=True)
print('IG Attributions:', attributions)
print('Convergence Delta:', delta)
Ausgabe:
IG Attributions: tensor([[-0.5922, -1.5497, -1.0067],
[ 0.0000, -0.2219, -5.1991]])
Convergence Delta: tensor([2.3842e-07, -4.7684e-07])
Warum ist Captum wichtig?
Modellinterpretierbarkeit ist entscheidend, um zu verstehen, wie AI-Modelle zu ihren Entscheidungen gelangen. Captum hilft Forschern und Praktikern, Einblicke in das Modellverhalten zu gewinnen, was für das Debuggen, Verbessern und Aufbauen von Vertrauen in AI-Systeme unerlässlich ist.
Wo kann ich Captum verwenden?
Captum kann in verschiedenen Anwendungen eingesetzt werden, darunter:
- Bildklassifizierung: Verstehen, welche Pixel am meisten zur Vorhersage eines Modells beitragen.
- Textklassifizierung: Identifizieren Sie die Schlüsselwörter oder -phrasen, die die Sentimentanalyse eines Modells antreiben.
- Andere PyTorch-Modelle: Interpretieren Sie jedes PyTorch-Modell mit minimalen Modifikationen.