В PyTorch има няколко функции за регулиране на скоростта на учене, всяка от които има своите предимства и недостатъци.
Защо трябва да коригираме скоростта на обучение?
Хиперпараметърът скорост на обучение контролира скоростта или скоростта, с която моделът се учи.
Съвети за най-добра скорост на учене:
- Започнете със стойност като 0,1 и постепенно намалете до 0,01,0,001,….
- Ако моделът се справя добре при стойност като 0,01, тогава проверете и стойности като 0,02,0,03,….
- Използвайте регулатори на скоростта на обучение.
- Правейки това може да доведе до добра степен на обучение за вашия модел.
Регулиране на скоростта на обучение в PyTorch
Имаме няколко функции в PyTorch за регулиране на скоростта на обучение:
- LambdaLR
- Мултипликативен LR
- StepLR
- MultiStepLR
- Експоненциален LR
- Намалете LROnPlateau
- и много други…
Сега ще видим всеки метод,
LambdaLR
Задава скоростта на обучение на всяка група параметри на първоначалната rate_rate, умножена по дадена функция.
Тук използваме ламбда функции, за да зададем скоростта на обучение.
Кодът е описан ясно, наблюдавайте темповете на обучение, които се увеличават за всяка епоха.
Мултипликативен LR
Умножете скоростта на обучение на всяка група параметри по коефициента, даден в определената функция.
И така, това е подобно на LambdaLR, но за следващите стъпки ще се умножи с последната скорост на обучение.
Така че, когато първоначално обучение = 0,1 (кеш = 0,1)
след това за първата епоха, lr = 0.1*0.9 = 0.09 (кеш = кеш*фактор(0.9))
след това за втората епоха, lr = 0,09*0,9 = 0,081 …….
StepLR
Намалява скоростта на обучение на всяка група параметри по гама на всяка епоха step_size.
И така, learning_rate се настройва към learning_rate*gamma след всяка стъпка.
Ако step_size = 20, gamma = 0.1, initial_lr = 0.1 тогава
lr = 0,1, ако епохи‹20
lr = 0,1*0,1 = 0,01, ако епохи≥20 и епохи‹40
lr = 0,01*0,1 = 0,001, ако епохи ≥ 40 и епохи ‹60 ……
MultiStepLR
Намалява скоростта на обучение на всяка група параметри по гама, след като броят на епохите достигне един от етапите.
Така че, ако епохи‹2 lr = 0,1
ако епохи≥2 и епохи ‹ 5 lr = 0,1*гама = 0,1*0,1 = 0,01
ако епохи≥5 и епохи ‹ 9 lr = 0,01*гама = 0,01*0,1 = 0,001
ако епохи≥ 9 lr = 0,001*гама = 0,001*0,1 = 0,0001
Експоненциален LR
Намалява скоростта на обучение на всяка група параметри по гама всяка епоха.
Това е подобно на StepLR, когато step_size = 1, за всяка епоха скоростта на обучение намалява.
Намалете LROnPlateau
- Това е най-популярният регулатор на скоростта на обучение.
- Това е различно от останалите наивни регулатори на скоростта на обучение.
- При този метод скоростта на обучение се коригира, когато няма подобрение в посочените показатели.
- Този регулатор чете количеството на показателя и ако не се наблюдава подобрение за „търпелив“ брой епохи, скоростта на обучение се намалява.
След епоха 5 загубата започва да се покачва, така че след 5 епохи (търпение = 5) без намаляване на загубата скоростта на обучение автоматично се намалява до 0,001.
Има по-сложни планировчици на скоростта на обучение като,
- Косинусово отгряванеLR.
- CyclicLR.
- OneCycleLR.
- CosineAnnealingWarmРестартира.
Но най-важните и популярни са обяснени.
Референции:
- Официална документация на PyTorch.
- YouTube канал на Python Engineer.
- Stackoverflow……..
Празнувайте малките си печалби.