что означает «скорость обучения по слоям» в быстрой статье R-CNN?

#deep-learning #pytorch #faster-rcnn

Вопрос:

Я читаю статью о модели Fast-RCNN.

В разделе 2.3 статьи «Гиперпараметры SGD» говорится, что все уровни используют скорость обучения на уровне 1 для весов и 2 для смещений, а глобальная скорость обучения составляет 0,001

Является ли «скорость обучения для каждого слоя» такой же, как «скорость обучения для конкретного слоя», которая дает разную скорость обучения по слоям? Если это так, я не могу понять, как они («скорость обучения на уровне» и «глобальная скорость обучения») могут применяться одновременно?

Я нашел пример «скорости обучения, зависящей от уровня» в pytorch.

 optim.SGD([
                {'params': model.some_layers.parameters()},
                {'params': model.some_layers.parameters(), 'lr': 1}
            ], lr=1e-3, momentum=0.9)
 

Согласно статье, является ли это правильным подходом?

Извините за майский английский

Ответ №1:

Терминология для каждого слоя в этой статье несколько неоднозначна. Они не имеют в виду скорость обучения для конкретного уровня.

Все уровни используют скорость обучения на уровне 1 для весов и 2 для смещений, а глобальная скорость обучения составляет 0,001.

Соответствующее заявление представляет собой структуру w.r.t. Caffe, в которой изначально был написан Fast R-CNN (ссылка на github).

Они имели в виду, что они устанавливают множитель скорости обучения весов и смещений равным 1 и 2 соответственно.

Проверьте любой prototxt файл в репозитории, например, CaffeNet/train.prototxt.

   param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
 

Таким образом, эффективная скорость обучения будет base_lr*lr_mult , и здесь базовая скорость обучения составляет 0,001, что определено в solver.prototxt .

Комментарии:

1. Это не просто «слегка» двусмысленно, это полностью меняет смысл ИМО.

2. @ayandas ты мог бы сказать так 🙂

3. Спасибо вам за вашу помощь. Я все ясно понимаю!!