Spaces:
Running
Running
Update README.md
Browse files
README.md
CHANGED
|
@@ -7,6 +7,81 @@ sdk: static
|
|
| 7 |
pinned: false
|
| 8 |
license: mit
|
| 9 |
short_description: Machine Unlearning Visual Playground
|
|
|
|
| 10 |
---
|
| 11 |
|
| 12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
pinned: false
|
| 8 |
license: mit
|
| 9 |
short_description: Machine Unlearning Visual Playground
|
| 10 |
+
thumbnail: img/teaser.gif # 썸네일을 위해 이 줄을 추가합니다. (2번 항목 참고)
|
| 11 |
---
|
| 12 |
|
| 13 |
+
# 🧹 Machine Unlearning Comparator
|
| 14 |
+
*Under review*
|
| 15 |
+
|
| 16 |
+

|
| 17 |
+
|
| 18 |
+
Machine Unlearning Comparator is a **web-based visual-analytics toolkit** for **seeing, testing, and comparing** how unlearning methods balance the three MU principles—**accuracy, efficiency, and privacy**—from class- to layer-level detail.
|
| 19 |
+
|
| 20 |
+

|
| 21 |
+
|
| 22 |
+
---
|
| 23 |
+
|
| 24 |
+
## 🔗 Demo & Video
|
| 25 |
+
|
| 26 |
+
- **Live demo** → [Machine Unlearning Comparator](https://gnueaj.github.io/Machine-Unlearning-Comparator/)
|
| 27 |
+
- **5-min overview** → [Youtube](https://youtu.be/yAyAYp2msDk?si=Q-8IgVlrk8uSBceu)
|
| 28 |
+
|
| 29 |
+
---
|
| 30 |
+
|
| 31 |
+
## 🚀 Why use the Comparator?
|
| 32 |
+
|
| 33 |
+
| Pain Point | How the Comparator helps |
|
| 34 |
+
|------------|--------------------------|
|
| 35 |
+
| Fragmented evaluations | **One workflow — Build → Screen → Contrast → Attack** — keeps every run tidy and repeatable. |
|
| 36 |
+
| Raw numbers hide behavior | Combine metrics & visuals: **Class-wise Accuracy chart, Prediction Matrix, Embedding Space, Layer-wise Similarity chart**. |
|
| 37 |
+
| "Did it really forget?" | Built-in **membership-inference attacks** and an aggregated **privacy score** reveal lingering signals. |
|
| 38 |
+
| Baselines vary by paper | Compare against **standard baselines** or plug in your own method via two Python hooks. |
|
| 39 |
+
|
| 40 |
+
---
|
| 41 |
+
|
| 42 |
+
## ✨ Key Features
|
| 43 |
+
|
| 44 |
+
### Multi-Level Comparison
|
| 45 |
+
* **Metrics View** – follow Unlearning/Retaining Accuracy, Run Time (RT), and the worst-case privacy score in one glance.
|
| 46 |
+
* **Embedding Space** – twin UMAPs show how feature clusters shift after unlearning.
|
| 47 |
+
* **Layer-wise Similarity** – CKA curves pinpoint layers that still encode the forget class.
|
| 48 |
+
* **Attack Simulation** – sweep thresholds, flag high-risk samples, and inspect logits interactively.
|
| 49 |
+
|
| 50 |
+
### Built-in Baselines
|
| 51 |
+
| Method | Idea (aligned with the paper) |
|
| 52 |
+
|--------|------------------------------|
|
| 53 |
+
| **Fine-Tuning (FT)** | Continue training on the **retain set** only, leveraging catastrophic forgetting of the forget set. |
|
| 54 |
+
| **Gradient Ascent (GA)** | Update weights to **maximize loss** on the forget set, actively "unteaching" it. |
|
| 55 |
+
| **Random Labeling (RL)** | Assign **random labels** to the forget set then fine-tune, so the model treats those samples as noise. |
|
| 56 |
+
| **SCRUB** | Use **knowledge distillation** with selective forgetting, preserving important parameters while removing forget class information. |
|
| 57 |
+
| **SalUn** | Apply **gradient saliency masking** to selectively update weights based on their importance for the forget class. |
|
| 58 |
+
|
| 59 |
+
### Custom Method API
|
| 60 |
+
Add your algorithm, register it, and the UI will automatically expose metrics, embeddings, and privacy attacks.
|
| 61 |
+
|
| 62 |
+
---
|
| 63 |
+
|
| 64 |
+
## ⚡ Quick Start
|
| 65 |
+
|
| 66 |
+
### Backend
|
| 67 |
+
\`\`\`bash
|
| 68 |
+
# 1 Install deps & enter env
|
| 69 |
+
hatch shell
|
| 70 |
+
# 2 Run the API
|
| 71 |
+
hatch run start
|
| 72 |
+
\`\`\`
|
| 73 |
+
|
| 74 |
+
### Frontend
|
| 75 |
+
\`\`\`bash
|
| 76 |
+
# 1 Install deps
|
| 77 |
+
pnpm install
|
| 78 |
+
# 2 Launch the UI
|
| 79 |
+
pnpm start
|
| 80 |
+
\`\`\`
|
| 81 |
+
|
| 82 |
+
---
|
| 83 |
+
|
| 84 |
+
## Related Resources
|
| 85 |
+
- **ResNet-18 CIFAR-10 MU checkpoints** → <https://huggingface.co/jaeunglee/resnet18-cifar10-unlearning>
|
| 86 |
+
- **ResNet-18 FashionMNIST MU checkpoints** → <https://huggingface.co/Yurim0507/resnet18-fashionmnist-unlearning>
|
| 87 |
+
- **ViT-Base CIFAR-10 MU checkpoints** → <https://huggingface.co/Yurim0507/vit-base-16-cifar10-unlearning>
|