Вопрос или проблема
Я работаю над обучением модели RNN для генерации подписей с помощью алгоритма REINFORCE. Я применяю стратегию самокритики (см. статью Self-critical Sequence Training for Image Captioning), чтобы уменьшить дисперсию. Я инициализирую модель с предобученной моделью RNN (также известной как “теплый старт”). Эта предобученная модель (обученная с целью логарифмической правдоподобности) показала 0.6 F1-score в моей задаче.
Когда я использую оптимизатор adam для обучения этой цель градиентной политики, производительность моей модели падает до 0 после нескольких эпох. Однако, если я переключаюсь на оптимизатор gradientdescent и сохраняю все остальное без изменений, производительность выглядит разумной и чуть лучше, чем у предобученной модели. Есть какие-то идеи, почему так происходит?
Я использую tensorflow для реализации своей модели.
Без кода мы ничего не можем сделать, но думаю, вам нужно значительно снизить скорость обучения. По моему опыту, Adam требует значительно более низкой скорости обучения по сравнению с SGD.
Ответ или решение
Конвергенция алгоритмов обучения с подкреплением, таких как REINFORCE, часто зависит от выбора оптимизатора и его параметров. В вашем случае ситуация с использованием алгоритма Adam по сравнению с градиентным спуском (SGD) может объясняться несколькими факторами.
-
Избыточная скорость обучения: Adam автоматически адаптирует скорость обучения на основе периода и величины градиентов. Это часто приводит к слишком агрессивным обновлениям весов, особенно на начальных этапах обучения, когда градиенты могут быть высокими и нестабильными. Для алгоритмов, таких как REINFORCE, которые зависят от оценки функции вознаграждения, эта нестабильность может привести к тому, что модель быстро ухудшает свои представления и, как следствие, потере производительности. Использование более низкой скорости обучения может решить эту проблему.
-
Проблема с датасетом и разбоми данных: Ваши данные для обучения могут быть восприимчивы к большой изменчивости, что делает важно, как именно модель обучается. Adam, который адаптирует параметры быстрее, чем SGD, скорее всего, намерен изменить веса модели, основанные на временных выбросах или шуме в ваших данных. В то время как SGD, с его постоянной и более тихой адаптацией, может лучше поддерживать устойчивость модели, особенно если вы начали с предобученной модели.
-
Требует тщательной настройки гиперпараметров: Adam имеет больше гиперпараметров, которые необходимо настраивать, чем SGD. Например, параметры бета, которые контролируют экспоненциальное сглаживание, могут оказывать значительное влияние на сходимость. Кроме того, выбор начального значения скорости обучения может понадобиться для каждого конкретного случая. Если эти гиперпараметры не оптимальны, Adam может не сойтись должным образом.
-
Изменение поведения при использовании метода "self-critical": Стратегия "self-critical" предполагает, что модель должна учиться непосредственно на различиях между её собственными предсказаниями и целевыми значениями. Это может вызвать дополнительные сложности при использовании Adam, так как алгоритм может быстро колебаться между обновлениями на основе роста или падения производительности, вместо того чтобы сосредоточиться на постепенном улучшении.
В заключение, я рекомендую попробовать следующие шаги:
- Понизьте скорость обучения для Adam и сравните результаты с SGD после каждой итерации.
- Вы можете также протестировать другие техники, такие как использование кэша градиентов, обрезку градиентов и подходы для уменьшения дисперсии, что может помочь улучшить производительность.
- Не забывайте о важности экспериментов — меняйте одно значение гиперпараметра за раз, чтобы увидеть, как оно влияет на сходимость и производительность вашей модели.
Это может помочь вам найти наилучший подход для обучения вашей модели RNN с использованием REINFORCE.