Lärhastighetsscheman och warmup
Kunna använda cosine-, step- och warmup-scheman och förklara varför warmup hjälper transformers.
Förkunskaper
Intuition
En fast inlärningstakt är nästan alltid fel. I början behövs små steg (modellen är slumpmässig och gradienterna opålitliga), i mitten stora steg (snabb framfart), i slutet små igen (finjustera).
Standardschemat i dag: warmup + cosinusavtagande.
lr
│ ╭────╮
│ ╱ ╰──╮
│ ╱ ╰───╮
│ ╱ ╰────╮
│ ╱ ╰──────
└─┴────────────────────────────────→ steg
warmup cosinus
(1–5 %)
Varför warmup? Adams andra moment är opålitligt de första stegen — det bygger på för få observationer. Full inlärningstakt då ger stora, felriktade steg som kan skada initieringen permanent. Warmup låter momentskattningarna stabiliseras först.
Kod
import math
import numpy as np
def lr_schema(steg, total_steg, max_lr=3e-4, warmup_andel=0.03, min_andel=0.1):
warmup = int(total_steg * warmup_andel)
if steg < warmup:
return max_lr * (steg + 1) / warmup # linjär uppvärmning
t = (steg - warmup) / max(total_steg - warmup, 1)
cos = 0.5 * (1 + math.cos(math.pi * t)) # 1 → 0
return max_lr * (min_andel + (1 - min_andel) * cos)
for s in (0, 50, 300, 3000, 7000, 9999):
print(f"steg {s:>5}: lr {lr_schema(s, 10_000):.2e}")
# steg 0: lr 1.00e-05
# steg 50: lr 1.70e-04
# steg 300: lr 3.00e-04 ← toppen, slutet av warmup
# steg 3000: lr 2.49e-04
# steg 7000: lr 1.03e-04
# steg 9999: lr 3.00e-05 ← min_andel · max_lr
Andra scheman och när de passar:
| Schema | Passar |
|---|---|
| Cosinus | känd total längd — standard |
| Linjär avtagande | enkelt, nästan lika bra |
| Step decay (÷10 vid givna epoker) | klassiskt för CNN |
| OneCycle | snabb konvergens på få epoker |
| Konstant + avtagande i slutet | okänd total längd (löpande träning) |
| ReduceLROnPlateau | när valideringsmåttet styr |
Regel: cosinusschemat förutsätter att du vet total_steg. Avbryter du tidigt har lr aldrig hunnit ner, och modellen är inte färdigkonvergerad — ett vanligt fel som gör jämförelser mellan olika körlängder missvisande.
Behärskning innebär
- Använder warmup och cosinusavtagande
- Förklarar varför warmup behövs för transformers
- Väljer schema efter träningens längd
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — Attention Is All You Need — arXiv (öppen åtkomst; licens per artikel)
- arXiv — SGDR: Stochastic Gradient Descent with Warm Restarts — arXiv (öppen åtkomst; licens per artikel)
- Dive into Deep Learning (CC BY-SA 4.0) — CC BY-SA 4.0