Batch size en learning rate zijn twee instellingen die bepalen hoe een AI-model leert tijdens de training. De batch size is het aantal voorbeelden dat het model bekijkt voordat het zichzelf bijstelt. De learning rate is hoe groot elke bijstelling is. Je komt ze tegen als je een model fine-tunet op eigen voorbeelden: een te hoge learning rate kan het model slechter maken, een te lage maakt de training traag.
Hoe werken ze?
Training verbetert de gewichten van een model in kleine stappen. Bij elke stap neemt het model een batch voorbeelden, berekent backpropagation de gemiddelde gradiënt over die batch, en verschuift gradient descent elk gewicht tegen de gradiënt in: weight = weight - learning_rate * gradient.
De batch size bepaalt hoe goed die schatting van de gradiënt is en hoeveel werk één stap kost. Het leerboek Deep Learning van Goodfellow, Bengio en Courville merkt op dat een grotere batch een nauwkeurigere schatting geeft, maar met minder dan evenredige winst: 100 keer zoveel voorbeelden maken de fout in de schatting maar 10 keer kleiner. Het geheugen bepaalt meestal de bovengrens, en gangbare groottes zijn machten van 2 tussen 32 en 256, die GPU's vaak sneller verwerken.
De learning rate is volgens hetzelfde boek misschien wel de belangrijkste hyperparameter: kun je er maar één afstemmen, kies dan deze. Is hij te groot, dan kan gradient descent de fout vergroten in plaats van verkleinen. Is hij te klein, dan gaat de training langzamer en kan die vastlopen op een hoge fout.
Hoe beïnvloeden ze elkaar?
Goyal e.a. (Facebook, 2017) stelden de lineaire schaalregel voor: vermenigvuldig je de batch size met k, vermenigvuldig dan ook de learning rate met k. In hun ImageNet-experimenten hield de regel stand tot batches van ongeveer 8.000 afbeeldingen; daarboven nam de nauwkeurigheid snel af. Smith e.a. (Google Brain, 2017) lieten een verwant effect zien: in plaats van de learning rate tijdens de training te verlagen, kun je de batch size verhogen en kom je met minder updates van de gewichten op ongeveer dezelfde nauwkeurigheid uit.
Het Deep Learning Tuning Playbook van onderzoekers bij Google ziet de batch size als een kwestie van trainingssnelheid en kosten: stem je de andere instellingen opnieuw af, dan zou elke batch size hetzelfde eindresultaat moeten halen. Het raadt de grootste batch aan die de hardware efficiënt aankan, en een nieuwe zoektocht naar de learning rate zodra de batch size verandert. Gradient accumulation, waarbij je de gradiënten van een paar kleine batches optelt voor één update, raadt het af omdat het geen snelheidswinst oplevert.
Verandert de learning rate tijdens de training?
Meestal volgt hij een schema. Warmup voert hem in de eerste stappen geleidelijk op, wat het playbook aanraadt tegen instabiliteit aan het begin van de training. Daarna daalt hij, bij voorkeur van het playbook in een rechte lijn of langs een cosinuscurve. Het leerboek legt uit waarom hij omlaag moet: de ruis door het trekken van een batch verdwijnt niet in de buurt van het minimum. GPT-3 is getraind met een lineaire warmup over de eerste 375 miljoen tokens en cosine decay tot 10% van de piek (Brown e.a., 2020). Llama 2 gebruikte 2.000 warmupstappen en dezelfde daling tot 10% (Touvron e.a., 2023).
Voor fine-tuning stellen de makers van BERT voor om learning rates van 5e-5, 3e-5 en 2e-5 te proberen met batches van 16 of 32 (Devlin e.a., 2018), en Meta fine-tunede Llama 2 met een learning rate van 2e-5 en batches van 64. Gehoste diensten kunnen de keuze voor je maken: in september 2026 accepteert de fine-tuning-API van OpenAI een batch size en een vermenigvuldiger voor de learning rate, standaard allebei op "auto" (openai-python).
Voorbeeld
Goyal e.a. trainden het beeldherkenningsnetwerk ResNet-50 op ImageNet. Met 256 afbeeldingen per batch en een learning rate van 0,1 was de eerste gok van het model fout bij 23,60% van de afbeeldingen die het in de training niet had gezien. Met 8.192 afbeeldingen per batch en de learning rate opgeschaald naar 3,2 was de fout 23,74% met een geleidelijke warmup en 24,84% zonder. Door de grote batch konden ze het werk over 256 GPU's verdelen en in één uur trainen.
Bronnen
- Godbole et al. (Google Research): Deep Learning Tuning PlaybookGitHub
- Goyal et al. (Facebook): Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour (2017)arXiv
- Smith et al. (Google Brain): Don't Decay the Learning Rate, Increase the Batch Size (2017)arXiv
- Goodfellow, Bengio and Courville: Deep Learning, chapter 8, Optimization for Training Deep Models (2016)Web
- Touvron et al. (Meta): Llama 2: Open Foundation and Fine-Tuned Chat Models (2023)arXiv
- Devlin et al. (Google): BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2018)arXiv
