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: ```python 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: ```python 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: ```python # 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** ```python 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