Skip to content

talkenson/lunar-lander-solve

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TNN//null BDaT solution for LunarLander-v2

(Gym, OpenAI, MTS Contest - NTI)

Результат:

Обученный Агент находится в /solve/test_agent.py, веса в /solve/weights_learned_solve.zip. При запуске Агента в константу WEIGHTS_PATH указать путь к разархивированным весам.

Gists с результатами обучения и теста

Тестирование агента производится на весах, снятых с модели, обученной за ~2000 эпизодов (2000 +- 300).

Сами гисты

Описание

Часть первая, или как интересно мы начали понимать о чем идет речь на второй день

Была оформлена модель, содержащая в себе 2 скрытых слоя, 64 нейрона на каждом с функцией активации RELU. Входной слой принимал массив из observation, выходной слой на softmax, с размером action.

Часть вторая, или почему я больше не люблю обучение с подкреплением

Был написан массив, содержащий историю действий, представленных в виде

[s, a, r, s1], где s - текущий state, a - совершенное действие, r - полученный reward, s1 - новое состояние, после выполнения a.

Модель была реализована на TensorFlow без использования оболочки Keras.

После чего мы тренировали агента ~2000 эпизодов.

Краткое описания процесса обучения

  • Загружаем наблюдения и состояние в агента, получаем на выходе некоторое действие.
  • Вводим вероятность выполнения случайного действия, вместо предложенного нейросетью. Были использованы различные константные значения вероятностей, и также линейное снижение вероятности с каждой итерацией.
  • Получаем reward за совершенное действие, помещаем в память тот самый массив ^ ([s, a, r, s1])
  • При завершении игры (возвращении средой истинного значения done = TRUE) мы обновляем веса модели, дисконтируя полученный reward, а также вводим собственные штрафы за некоторые действия (нап. зависание в воздухе в малом расстоянии от посадочной платформы).
  • Для удобства дополняем историю наград текущей, а также историю количества шагов
  • Каждые несколько эпизодов мы экпортируем веса модели в формате .ckpt

Часть третья, или как производилось тестирование

  • Создаем новую модель TensorFlow, описанную выше.
  • Загружаем веса обученной модели из формата .ckpt
  • Проводится тестирование за 100 эпизодов, при необходимости можно рендерить эпизод. На выходе получаем среднее значение за 100 эпизодов.

Основные идеи, использованные в процессе обучения

  • Использование DeepQNeuralNetwork алгоритма, а также хранение наград за каждый шаг эпизода и дисконтирования их с каждым шагом на определённый коэффициент.
  • Обучение происходит на батчах состоящих из массивов [s, a, r, s1], которые хранятся в памяти. Для этого перед запуском обучения происходит 32 случайных действия для начального заполнения памяти. В последствии случайным образом достается батч из памяти.
  • Для улучшения решения использовалась дополнительная стратегия. Агент совершал действие, предсказанное нейросетью в 95% случаях, в остальных же случаях он совершал случайное действие. Это улучшило средний результут за 100 эпизодов с 120 до 150.
  • Вторым способом улучшения было использование не константного значения вероятности совершения случайного действия, а линейного уменьшения вероятности с максимального (10%) до минимального (3%) на протяжении всего обучения. Это увеличило средниее количество очков за 100 эпизодов с 170 до 186.
  • Третьей идеей для улучшения было использование не линейного уменьшения вероятности, а экспоненциального. Но данное улучшение особо не повлияло на финальный результат обучения, за 100 эпизодов тестирования средний результат со 186 увеличился до 191, т.е. незначительно.
  • Четвертая идея - введение дополнительного штрафования за зависания в воздухе. Одной из проблем обучения было то, что Агент зависал над платформой и не садился на нее. Для избавления от данной ситуации мы ввели штраф, начисляемый в конце эпизода. Чем дальше находится Агент от платформы по координатам x и y, тем больше штраф. Средний результат на тестах увеличился с 191 до 240.

Полные результаты

Вот ссылочка: https://youtu.be/oDuOOPdJ4Jw

About

Gym OpenAI LunarLander-v2 model

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages