Hoppa till innehållet
AI-grafen
E· Universitetsprakmodeller· ca 60 min· utvecklande· verifierad 2026-09-20

Resonemang i språkmodeller

Kunna använda och utvärdera chain-of-thought och förstå dess begränsningar.

Förkunskaper

Intuition

Be modellen «tänka steg för steg» innan svaret, så förbättras flerstegsuppgifter markant — matematik, logik, planering.

Varför? Modellen har en fast beräkningsbudget per token. Att skriva mellansteg ger den fler tokens att räkna i, och varje steg blir en enklare förutsägelse än att hoppa direkt till slutsvaret.

Varianter:

  • Zero-shot CoT: lägg till «Låt oss tänka steg för steg.»
  • Few-shot CoT: visa exempel där du själv resonerar.
  • Självkonsistens: sampla 5–20 resonemang med T > 0 och ta det vanligaste slutsvaret. Kraftigt bättre på matematik, men 5–20× dyrare.
  • Resonerande modeller (o-serien, R1): tränade att producera långa interna spår innan svaret.

Formellt

Den viktiga varningen: resonemangsspåret är inte nödvändigtvis förklaringen till svaret.

Turpin m.fl. (2023) visade att modeller kan påverkas av något i prompten (t.ex. att alla exempel har svar «A») och sedan producera ett övertygande resonemang som aldrig nämner den verkliga orsaken. Spåret är post hoc-rationalisering, precis som människors ibland är.

Konsekvenser i praktiken:

  • Använd inte spåret som revisionsunderlag eller som förklaring till en användare.
  • Utvärdera slutsvaret, inte hur rimligt resonemanget låter.
  • Visa inte råa resonemangsspår för slutanvändare — de skapar ett förtroende som inte är motiverat.

När CoT inte hjälper: enkla uppslagsfrågor (bara dyrare), och klassificering där svaret är en etikett. Mät alltid med och utan innan du gör det till standard.

Kod

from collections import Counter
import re

def sjalvkonsistens(llm, fraga, n=5):
    svar = []
    for _ in range(n):
        ut = llm(f"{fraga}\n\nTänk steg för steg och avsluta med 'SVAR: <tal>'.", temperature=0.7)
        m = re.search(r"SVAR:\s*(-?\d+(?:[.,]\d+)?)", ut)
        if m:
            svar.append(m.group(1).replace(",", "."))
    if not svar:
        return None, 0.0
    vanligast, antal = Counter(svar).most_common(1)[0]
    return vanligast, antal / len(svar)          # andelen = ett grovt konfidensmått

svar, enighet = sjalvkonsistens(llm, "En affär säljer 3 äpplen för 12 kr. Vad kostar 7 äpplen?")
print(svar, enighet)      # 28 0.8

Enighetsgraden är användbar: låg enighet betyder att uppgiften är svår för modellen — eskalera eller avstå.

Behärskning innebär

  • Använder och utvärderar stegvis resonemang
  • Känner till självkonsistens
  • Förstår att spåret inte är en sann förklaring

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

Källor

Alla källor och licenser