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. 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

2

Kilder

2
  • Attention Is All You Need (2017)
  • An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (ViT, 2020)