Использование планировщика с самонастраивающимися оптимизаторами в PyTorch - PullRequest
3 голосов
/ 14 февраля 2020

В PyTorch политика регулировки веса определяется оптимизатором, а скорость обучения настраивается с помощью планировщика. Когда оптимизатором является SGD, существует только одна скорость обучения, и это просто. При использовании Adagrad, Adam или любого подобного оптимизатора, который по своей природе регулирует скорость обучения на основе параметров, есть ли что-то, на что стоит обратить особое внимание? Могу ли я полностью игнорировать планировщик, поскольку алгоритм настраивает свои собственные скорости обучения? Должен ли я параметризировать его совсем иначе, чем если бы я использовал SGD?

1 Ответ

2 голосов
/ 15 февраля 2020

Скорость обучения, которую вы определяете для оптимизаторов, таких как ADAM, является верхней границей. Вы можете увидеть это в статье в разделе 2.1. Размер шага α в статье - это скорость обучения.

Эффективная величина шагов, предпринятых в пространстве параметров на каждом, приблизительно ограничена настройкой размера шага α

Также этот размер шага α используется непосредственно и умножается на шаг коррекция размера, который выучил. Таким образом, изменение скорости обучения, например, снижение, приведет к снижению всех индивидуальных скоростей обучения и уменьшению верхней границы. Это может быть полезно во время «окончания» тренинга, чтобы уменьшить общие размеры шагов, так что происходят только меньшие шаги и могут помочь сети найти минимумы в функции потерь.

Я видел снижение скорости обучения в некоторых работах использовал ADAM и использовал его сам, и это помогло. Я обнаружил, что вы должны делать это медленнее, чем, например, с SGD. С одной моделью я просто умножаю ее на 0,8 каждые 10 эпох. Так что это постепенное затухание, которое, я думаю, работает лучше, чем большее количество шагов c, так как вы не «обесцениваете» ожидаемые импульсы слишком сильно. Но это только моя теория.

...