unlearning

Machine Unlearning

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

Why Unlearning?
| Reason | Example |
|--------|---------|
| Privacy | Remove personal data (GDPR "right to be forgotten") |
| Safety | Remove dangerous knowledge |
| Copyright | Remove training data influence |
| Bias | Remove 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
| Challenge | Description |
|-----------|-------------|
| Verification | How to prove knowledge is gone? |
| Side effects | May degrade other capabilities |
| Incomplete removal | Knowledge may persist in other forms |
| Relearning | Model 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
- No perfect unlearning method exists
- Trade-off between forgetting and retention
- Verification is difficult
- May need to combine multiple techniques

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

Go deeper with CFSGPT

Get AI-powered deep-dives, save terms, and run advanced simulations — free account.

Create Free Account