Что такое мета-параметр `weight_decay` в Caffe?

Глядя на пример 'solver.prototxt' , размещенный на BVLC / caffe git, есть мета-параметр тренировки

 weight_decay: 0.04 

Что означает этот мета-параметр? И какое значение мне следует присвоить?

Мета-параметр weight_decay регулирует член регуляризации нейронной сети.

Во время обучения в потери сети добавляется термин регуляризации для вычисления gradleиента backprop. Значение weight_decay определяет, насколько доминирующим будет этот член регуляризации в gradleиентном вычислении.

Как правило, чем больше примеров обучения у вас, тем слабее этот термин должен быть. Чем больше параметров у вас (т. Е. Более глубокие сетевые, более крупные фильтры, более крупные уровни InnerProduct и т. Д.), Тем выше этот термин.

Caffe также позволяет выбирать между L2 (по умолчанию) и L1 , устанавливая

 regularization_type: "L1" 

Однако, поскольку в большинстве случаев веса являются малыми числами (т. -1 ), норма L2 весов значительно меньше их нормы L1 . Таким образом, если вы решите использовать regularization_type: "L1" вам может потребоваться настроить weight_decay на значительно меньшее значение.

В то время как скорость обучения может (и обычно) изменяться во время обучения, вес регуляризации фиксируется повсюду.

Распад веса – это термин регуляризации, который наказывает большие веса. Когда коэффициент распада веса большой, штраф за большие веса также большой, когда он малый вес может свободно расти.

Посмотрите на этот ответ (не определенный для caffe) для лучшего объяснения: разница между нейронной сетью «распад веса» и «скорость обучения» .

Давайте будем гением компьютера.