Hoppa till innehållet
AI-grafen
F· AI engineeringmodelltraning-finjustering· ca 90 min· volatil — kontrolleras ofta· verifierad 2026-09-20

Katastrofal glömska

Kunna mäta hur finjustering skadar tidigare förmågor och tillämpa motmedel.

Förkunskaper

Intuition

Du finjusterar en modell på svenska supportsvar. Den blir utmärkt på det — och börjar svara sämre på allt annat: kod, engelska, matematik, instruktionsföljande.

Det kallas katastrofal glömska: när vikterna flyttas mot den nya uppgiften förloras det som kodades i samma vikter.

Det lömska är att man inte märker det, eftersom man bara mäter på den nya uppgiften. Din eval visar 0,91 och allt ser bra ut — tills en användare ställer en fråga utanför domänen.

Regeln: mät alltid två saker efter finjustering — målupgiften och en generell hållbarhetssvit.

Formellt

Motmedel, i effektordning:

ÅtgärdMekanismKostnad
PEFT (LoRA) med låg rankbasvikterna rörs aldrigingen
Låg inlärningstakt (1e-5 till 5e-5)små steg bort från utgångspunktenlångsammare konvergens
Färre epoker (1–3)mindre driftkan underanpassa
Blandad data (replay)5–20 % generell instruktionsdata i träningsmixenbehöver sådan data
KL-straff mot referensmodellenbegränsar hur långt policyn får gåextra beräkning
Modellsammanslagning (task arithmetic)interpolera mellan bas och finjusteradkräver utvärdering av viktningen

Mätning: definiera en hållbarhetssvit på 100–200 fall från förmågor du vill behålla (instruktionsföljande, ett annat språk, enkel matematik, kodsnuttar). Kör den före och efter. En försämring på mer än några procentenheter är ett medvetet beslut som ska motiveras — inte en överraskning.

Kod

# Blandad data (replay): behåll generell förmåga under finjustering
import random

def bygg_traningsmix(domandata, generell_data, andel_generell=0.10, seed=0):
    rng = random.Random(seed)
    n_gen = int(len(domandata) * andel_generell / (1 - andel_generell))
    mix = list(domandata) + rng.sample(generell_data, min(n_gen, len(generell_data)))
    rng.shuffle(mix)
    return mix

# Mät före/efter på BÅDA sviterna
def rapport(modell_fore, modell_efter, mal_eval, hallbarhet_eval):
    r = {}
    for namn, sv in (("mål", mal_eval), ("hållbarhet", hallbarhet_eval)):
        f, e = sv(modell_fore), sv(modell_efter)
        r[namn] = {"fore": round(f, 3), "efter": round(e, 3), "delta": round(e - f, 3)}
    return r

# {'mål':        {'fore': 0.62, 'efter': 0.91, 'delta': 0.29},
#  'hållbarhet': {'fore': 0.78, 'efter': 0.59, 'delta': -0.19}}   ← detta är glömska

Tabellen ovan är exakt den rapport som ska följa med varje finjusterad modell. Utan raden «hållbarhet» vet ingen vad anpassningen kostade.

Behärskning innebär

  • Mäter hur finjustering skadar tidigare förmågor
  • Tillämpar motmedel: blandad data, låg lr, PEFT
  • Väljer utvärdering som fångar glömskan

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser