Weights / Methods
verifiedTask Arithmetic
Subtract a base model's weights from its fine-tune and you get a task vector — a direction in weight space that means "be better at this". Those vectors can then be added to give a model a capability, subtracted to remove one, and combined to get several at once, with ordinary arithmetic and no training.
Negation is the striking one: subtracting a task vector fine-tuned on toxic text reduces toxic generation while leaving unrelated behaviour largely intact. It is a blunt instrument — the vector carries everything the fine-tune changed, not only the part anyone wanted — but it needs no data, no gradient step, and no access to whatever produced the fine-tune, which is why it turns up in practice far more than its precision would suggest.
The arithmetic assumes the directions are roughly independent, and they are not. Two task vectors sharing significant weight coordinates interfere when added, and the interference grows with the number of vectors combined — so a sum of two often behaves like both, and a sum of eight rarely behaves like any of them. That decay with count is the practical ceiling and the reason the refinements are all about resolving conflicts between coordinates rather than about the addition itself.
conflicting-coordinates holds 20% of the budget; rest holds the remaining 80%.
Weight coordinates two task vectors both want to move, against the ones only one of them touches, in coordinates. Drag the number of vectors up to watch conflict take the sum — which is why merging eight capabilities rarely gives you eight.
Reviewed by opendroid · 2026-08-18
- arXiv:2212.04089 — Editing Models with Task Arithmetic
- arXiv:2311.03099 — Language Models are Super Mario: Absorbing Abilities from Homologous Models as a Free Lunch