В 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Рестартира.

Но най-важните и популярни са обяснени.

Референции:

  1. Официална документация на PyTorch.
  2. YouTube канал на Python Engineer.
  3. Stackoverflow……..

Празнувайте малките си печалби.