cosine warmup
Cosine warmup er en learning rate-schedule, der starter med en lineær stigning (warmup) efterfulgt af en cosinusformet nedgang (cosine decay).
Kort fortalt
En metode til gradvist at øge og derefter mindske læringshastigheden under træning af neurale netværk, hvilket stabiliserer og forbedrer resultaterne.
- Kategori
- træning
- Niveau
- øvet
Betydninger
1- 1
En learning rate-schedule bestående af en lineær warmup-fase efterfulgt af en cosinusformet decay-fase, brugt til at stabilisere træning og forbedre præstation.
- Vi implementerede cosine warmup for at træne vores sprogmodel mere stabilt. — Eksempel
- Cosine warmup har vist sig at reducere behovet for finjustering af hyperparametre i store modeller. — Eksempel
Hvornår bruges det
Cosine warmup anvendes ofte ved træning af store deep learning-modeller, især transformere og vision transformers. Den reducerer risikoen for ustabil træning i starten (warmup) og giver herefter en blød nedgang, der kan forbedre konvergens og generalisering.
Formel
For step t < warmup_steps: lr(t) = lr_base + (lr_max - lr_base) * (t / warmup_steps). For t >= warmup_steps: lr(t) = lr_min + 0.5 * (lr_max - lr_min) * (1 + cos(π * (t - warmup_steps) / (total_steps - warmup_steps))).Kodeeksempel
import torch
from torch import optim
# Define model, optimizer, and schedules
model = ...
optimizer = optim.AdamW(model.parameters(), lr=0.001)
# Cosine warmup scheduler example using PyTorch
scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=100, eta_min=1e-6)
# For warmup, we need to manually adjust or use a custom loop.
# Typically, warmup is implemented with a separate linear scheduler.
warmup_epochs = 5
for epoch in range(epochs):
if epoch < warmup_epochs:
lr = 0.0001 * (epoch + 1) / warmup_epochs # Linear warmup
for param_group in optimizer.param_groups:
param_group['lr'] = lr
else:
scheduler.step()
# Training code...Eksempel på implementering af cosine warmup i Python med PyTorch. Først en lineær warmup-fase, derefter cosine decay via CosineAnnealingLR.
Oprindelse
Termen er en sammensætning af 'cosine' (cosinus) og 'warmup' (opvarmning), som beskriver henholdsvis den cosinusformede nedgang og den indledende lineære stigning i læringshastigheden.
Afledte ord
2Kilder
2- Attention Is All You Need (2017)
- An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (ViT, 2020)