Установка скорости обучения для Faster R-CNN
Я обучил Faster R-CNN (ResNet101, предварительно обученный на MS COCO) для шагов 50K с 5K пользовательских изображений. Я использовал SGD с импульсом (0,9). Скорость обучения составляла 0,0003 для шагов 10К, затем я уменьшил ее до 0,00003 для шагов 20К и, наконец, установил 0,00003 для последних шагов 20К. Это сходилось, потеря не упала ниже 0,2, хотя.
Теперь я добавляю еще 17К изображений в тренировочный набор, чтобы тренировать еще 50К шагов, и продолжаю тренировать ту же модель. По мере того, как я добавляю больше данных, я хочу увеличить скорость обучения, а затем снова уменьшиться, потому что модель должна изучить вновь введенные данные.
Тем не менее, после увеличения скорости обучения потеря увеличивается (как и ожидалось), и хотя я уменьшаю скорость обучения, она никогда не снижается. Она становится плоской, но не уменьшается... Между тем, увеличивается MAP или она стабильна.
Я не знаю, как позволить модели исследовать сначала, а затем сходиться. Если я долгое время поддерживаю высокий уровень обучения, потери никогда не уменьшатся. Если я не увеличу его, то я застрял в локальных минимумах и не вижу влияния новых точек данных.
Я старался:
- init LR: 0,0003 для шагов 10K, 0,00003 для шагов 20K, 0,000003 для шагов 20K
- init LR: 0,0001 для шагов 10K, 0,00003 для шагов 20K, 0,000003 для шагов 20K
- init LR: 0,0001 для шагов 5K, 0,00003 для шагов 25K, 0,000003 для шагов 20K
- init LR: 0,0001 для 2500 шагов, 0,00003 для 27500 шагов, 0,000003 для 20K шагов
- init LR: 0,0003 для шагов 30K, 0,00003 для шагов 10K, 0,000003 для шагов 20K
Я тоже пробовал Адама, но он вел себя очень плохо. Я не знаю почему, но это должно быть причиной того, что любая из бумаг для обнаружения объектов использует не Адама, а SGD с импульсом