Adafactor, Google tarafından geliştirilen ve özellikle büyük ölçekli dil modelleri gibi hafıza tüketimi yüksek modeller için tasarlanmış, verimli ve düşük bellekli bir optimizasyon algoritmasıdır. İlk olarak 2018 yılında "Adafactor: Adaptive Learning Rates with Sublinear Memory Cost" başlıklı çalışmada tanıtılmıştır. Adafactor, Adam algoritmasına benzer şekilde moment temelli güncellemeler yapar ancak ikincil moment tahminlerini daha az bellek kullanarak hesaplar ve böylece büyük modellerin eğitimine olanak tanır.
Adafactor Optimizasyon Algoritması
Bellek Verimliliği
Adafactor’ın en önemli özelliği, ikinci moment vektörünü tam matris olarak tutmak yerine satır ve sütunların ortalamalarını ayrı ayrı saklamasıdır. Bu yaklaşım, özellikle yüksek boyutlu tensörlerde bellek tüketimini karekök oranında azaltır. Örneğin, boyutunda bir parametre matrisinde yerine yalnızca adet değer saklanır.
Güncelleme Mekanizması
Adam algoritmasındaki gibi Adafactor da gradyanların ilk momenti (ortalama değeri) ile ikinci momentini (kareler ortalaması) kullanır. Ancak ikinci moment şöyle hesaplanır:
Parametre matrisi için:
- Satır ortalamaları:
- Sütun ortalamaları:
Bu değerler kullanılarak yaklaşık kare norm matris elde edilir:
Öğrenme oranı ve normalleştirme ile parametre güncellenir:
Özellikleri
Adaptif Öğrenme Oranı
Adafactor, varsayılan olarak mutlak öğrenme oranı yerine göreli öğrenme oranı kullanır. Böylece büyük modeller için sabit değerler ayarlamadan otomatik öğrenme oranı kontrolü sağlanır.
Bellek Kullanımı
- Adam: ilave bellek gerektirir (her parametre için iki moment).
- Adafactor: yerine bellekle yaklaşık aynı başarıyı sağlar.
Avantajları
- Bellek dostu: Özellikle devasa Transformer tabanlı modellerde tercih edilir.
- Adaptif öğrenme: Öğrenme oranı otomatik ayarlanabilir.
- Adam benzeri performans: Çoğu durumda Adam’a benzer doğruluk sağlar.
Dezavantajları
- Kod karmaşıklığı: Adam’a göre daha karmaşık bir güncelleme mekanizmasına sahiptir.
- Yalnızca matris-tabanlı parametreler için uygundur: Skaler parametrelerde performans kaybı olabilir.
- Varsayılan hiperparametrelerle ince ayar gerekebilir.
Kullanım Alanları
- Transformers: Özellikle T5, mT5, BERT gibi modellerin eğitiminde kullanılmıştır.
- Dil modelleme: Büyük veri setlerinde uzun süreli eğitimlerde etkilidir.
- Bellek sınırlı ortamlar: GPU RAM’i sınırlı olan sistemlerde avantaj sağlar.
Adafactorün (4,4) noktası için adım adım optimizasyon süreci görselleştirildi. (Github)
Adafactor, parametre matrisinin satır ve sütun boyutlarında ayrı moment tahminleri kullanarak bellek kullanımını azaltır.


