Почему SGD в Q-Learning намного стабильнее, чем Mini-Batch или Batch? - PullRequest
0 голосов
/ 03 апреля 2019

Для моей дипломной работы в области компьютерных наук я реализовал алгоритм обучения подкреплению с нейронной сетью.

Этот алгоритм должен изучать понг и аналогичную игру, где он должен просто ловить шарыс веслом.

Теперь, когда я возвращаюсь к обратному распространению, у меня есть три возможности:

  • Обычный градиентный спуск, используя всю партию, где градиент - усредненный выходнойошибка, умноженная на производную от выхода:

  • SGD, только с использованием ошибки, полученной из текущего запомненного входа:

  • Мини-партия, где я делаю обычный градиентный спуск, но только небольшими партиями размера:

Скажите, есть ли в моих мыслях ошибка до сих пор.

Теперь есть две возможности, когда нужно обучать сеть:

  • После каждого действия (онлайн)
  • После определенного количества игровых раундов (в автономном режиме)

Вот что я делаю до сих пор:Я использую SGD и тренирую сеть после, скажем, 10 раундов.Для этого я использую весь набор данных.Это означает, что я в основном делаю нормальный градиентный спуск, но обновляю веса индивидуально для каждого входа.

Я также пробовал мини-пакет и пакетный режим онлайн и офлайн.Но SGD в автономном варианте дает самые быстрые и самые стабильные результаты, в то время как другие варианты либо сходятся очень медленно, нерегулярно, либо не сходятся вообще.

Но в большинстве документов говорится, что мини-пакет или метод SGD должны давать лучшие результаты при обучении их в Интернете.

Так почему я получаю такие странные результаты?

...