Sådan slår du ChatGPT for en 10'er
De fleste AI-modeller fungerer som en black box - du stiller et spørgsmål og får et svar, men forstår ikke hvorfor. Hvad hvis vi kunne lære en model at vise sit arbejde? Og hvad hvis vi kunne gøre det for mindre end prisen på sløj cheeseburger fra McDonalds?
Vi havde en hypotese, en lille Llama-model og præcis 7 kroner i cloud computing credits. Målet var at bygge en specialiseret model, der ikke kun kunne forstå følelser i tekst, men også forklare sin ræsonnering - og i processen slå GPT-4.1 på samme opgave.
Forklar for helvede!
Vores grundlæggende hypotese var simpel: hvis du tvinger en model til at forklare sin ræsonnering før svaret, vil den lære opgaven bedre. Det svarer til en matematikelev, der skal vise sit arbejde - de kan ikke bare gætte, men må forstå processen.
Vi udviklede en to-trins strategi.
Trin 1: Bygge "Professoren" for 7 kroner
Først havde vi brug for en model, der var god til én ting: at forklare ting. Vi tog en lille, standard model (Llama-3.2-1B-Instruct) og besluttede at gøre den til en ræsonneringsekspert.
Vi trænede den ikke på følelser overhovedet. I stedet gav vi den et generelt ræsonneringsdatasæt med over 350.000 eksempler fra matematik, kodning og naturvidenskab. For hvert eksempel fik modellen et spørgsmål og et svar, og dens eneste job var at lære at generere den trin-for-trin ræsonnering, der forbinder dem.
Input:
Spørgsmål: Hvad er hovedstaden i Frankrig?
Svar: Paris
Modellens opgave:
Lær at outputte: "Spørgsmålet spørger efter hovedstaden i Frankrig. Frankrig er et land i Vesteuropa. Dets mest folkerige by og hovedstad er Paris."
Vi kaldte denne model Llama-R-Gen (for Reasoning Generator). Den samlede omkostning til at fine tune denne lille "Professor" på en NVIDIA A40 GPU var 7 kroner.
Trin 2: Skabe følelsesklassifikatoren
Nu havde vi vores 7-kroners Professor. Den kunne forklare ting, men vidste intet om følelser. Det var her vores måldatasæt, dair-ai/emotion, kom ind. Dette datasæt er simpelt: en sætning og dens tilsvarende følelse (som 'glæde', 'tristhed', 'vrede').
Her kommer det smarte trick. Vi brugte vores Professor (Llama-R-Gen) til at skabe et helt nyt, udvidet træningsdatasæt. Vi gik gennem hver eneste sætning i det originale følelsesdatasæt og fik vores Professor til at skrive en forklaring på, hvorfor en sætning repræsenterede en bestemt følelse.
Så et simpelt træningspar som:
Før:
Tekst: "i didnt feel humiliated" → Label: "sadness"
Efter:
Tekst: "i didnt feel humiliated" → Måloutput: "Lad os tænke over dette. Brugeren taler om ikke at føle sig ydmyget. Ydmygelse er en kraftig negativ følelse, ofte forbundet med skam og tristhed. Ved at fokusere på denne tilstand er den underliggende kontekst en negativ følelse. Svar: sadness"
Vi trænede derefter en anden lille Llama-model på dette nye, forklaringsrige datasæt. Denne endelige model blev trænet til at tage en sætning og generere ræsonneringen og derefter den endelige følelse på en gang.
Hvordan klarede vores billige model sig?
Vi testede vores ræsonneringsinfunderede model mod to konkurrenter på dair-ai/emotion testsættet:
- Vores egen baseline: Den samme lille Llama-model, men trænet på den "normale" måde - bare til at forudsige følelsen uden ræsonnering.
- GPT-4.1 (few shot): State of the art model fra OpenAI, givet opgaven uden specialtræning.
Resultaterne var bemærkelsesværdige:
Overordnet modelpræstationssammenligning
Hovedresultaterne:
- Ved at tvinge vores model til at lære ræsonnering forbedrede vi dens nøjagtighed med 8,7% sammenlignet med standard fine tuning metoden.
- Vores 1-milliard-parameter model overgik zero shot performance af GPT-4.1 med over 26 procentpoint.
Dybere analyse med F1-scores
Nøjagtighed er kun én del af billedet. Den fortæller, hvor ofte modellen havde ret, men kan være misvisende, hvis nogle følelser (som 'glæde') er meget mere almindelige end andre (som 'overraskelse').
For at få et bedre billede bruger vi en metrik kaldet F1-score. Tænk på det som en mere robust karakter, der balancerer, hvor god modellen er til at finde den rigtige følelse (recall) uden fejlagtigt at markere de forkerte (precision).
Her er, hvordan modellerne klarede sig på de balancerede F1-scores:
Model | Macro Avg F1 | Weighted Avg F1 |
---|---|---|
🤖 GPT-4.1 (zero shot) | 0.2500 | 0.3200 |
😐 Vores baseline (ingen ræsonnering) | 0.3975 | 0.4923 |
✨ Vores foreslåede model (med ræsonnering) | 0.4317 | 0.5695 |
Dataene viser det samme mønster, men endnu tydeligere. Vores ræsonsoneringsmodel viser en markant forbedring i begge F1-metrikker, hvilket beviser, at den ikke bare får de lette, almindelige eksempler rigtige - den har en mere balanceret og robust forståelse af opgaven.
Her er en opdeling efter følelse, der viser, hvordan vores model forbedrede sig på tværs af alle kategorier:
Nøjagtighedsfordeling per følelse
Hvorfor det virkede
At tvinge modellen til at generere en "kæde af tanker" hjalp den med at bevæge sig ud over simpel nøgleordsmatching og forstå tekstens nuancer. Den lærte at forbinde koncepter og bygge et logisk argument for sit endelige svar.
Det var dog ikke en perfekt sejr. Vores model havde problemer med 'surprise'-følelsen, hvor dens præstation faktisk faldt. Dette skyldes sandsynligvis, at 'surprise' er en meget sjælden kategori i datasættet, og den generiske ræsonnering fra vores Professor-model kan have været ubrugelig eller endda misvisende for sådan en nuanceret følelse.
Konklusion
Dette eksperiment viser noget interessant: smarte træningsmetoder kan være vigtigere end større modeller. Du har ikke altid brug for en multi-milliard-dollar AI for at få state of the art resultater. Nogle gange er alt, hvad du har brug for, en klog tilgang, en lille men kraftig open-source model og et beskedent budget.