Home Knowledge Base Machine Unlearning

Machine Unlearning

What is Machine Unlearning? Removing specific knowledge, behaviors, or data influence from a trained model without full retraining.

Why Unlearning?

ReasonExample
PrivacyRemove personal data (GDPR "right to be forgotten")
SafetyRemove dangerous knowledge
CopyrightRemove training data influence
BiasRemove discriminatory patterns

Unlearning Approaches

Gradient Ascent Increase loss on data to forget:

def unlearn_gradient_ascent(model, forget_data, retain_data, steps=100):
    opt = torch.optim.Adam(model.parameters())

    for step in range(steps):
        # Maximize loss on forget data (forget it)
        forget_loss = -model.loss(forget_data)

        # Minimize loss on retain data (keep it)
        retain_loss = model.loss(retain_data)

        total_loss = forget_loss + retain_loss
        total_loss.backward()
        opt.step()

Representation Misdirection for Unlearning (RMU) Corrupt the representation of information to forget:

def rmu_unlearn(model, forget_prompts, layer):
    # Get activations for forget prompts
    forget_acts = get_activations(model, forget_prompts, layer)

    # Generate random target
    random_target = torch.randn_like(forget_acts)

    # Train to map forget prompts to random activations
    loss = mse_loss(forget_acts, random_target)
    loss.backward()

Task Vectors Subtract the "skill" learned:

# Get task-specific weights
base_weights = load_model("base")
finetuned_weights = load_model("finetuned_on_task")

# Task vector is the difference
task_vector = finetuned_weights - base_weights

# Unlearn by subtracting
unlearned_weights = base_weights - alpha * task_vector

Challenges

ChallengeDescription
VerificationHow to prove knowledge is gone?
Side effectsMay degrade other capabilities
Incomplete removalKnowledge may persist in other forms
RelearningModel may relearn from context

Evaluation

def evaluate_unlearning(model, target_knowledge, general_knowledge):
    # Target should be forgotten
    target_accuracy = evaluate(model, target_knowledge)

    # General should be retained
    general_accuracy = evaluate(model, general_knowledge)

    # Good unlearning: low target, high general
    return {"target": target_accuracy, "retained": general_accuracy}

Current Limitations

Active research area with important implications for AI safety and regulation.

unlearningforgetremove

Explore 500+ Semiconductor & AI Topics

From EUV lithography to CUDA optimization — search the full knowledge base or chat with our AI assistant.