https://github.com/alexeyev/riding-the-sine-wave

...and generating ugly state-action maps for MountainCar-v0

https://github.com/alexeyev/riding-the-sine-wave

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (3.5%) to scientific vocabulary

Keywords

elephants mountain-car-problem openai-gym q-learning reinforcement-learning-excercises
Last synced: 6 months ago · JSON representation

Repository

...and generating ugly state-action maps for MountainCar-v0

Basic Info
  • Host: GitHub
  • Owner: alexeyev
  • Language: Python
  • Default Branch: master
  • Size: 213 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 1
  • Releases: 0
Topics
elephants mountain-car-problem openai-gym q-learning reinforcement-learning-excercises
Created almost 6 years ago · Last pushed over 1 year ago
Metadata Files
Readme

README.md

Riding the Sine Line

A common task for RL: MountainCar-v0. A classic control problem: make an underpowered cart located at the bottom of the valley reach the flag.

I solve it with Q-learning, track the progress and the solution space by building nice maps and plots while and after training.

Core ideas

Решение — нормальный такой дип ку-лёрнинг, в обучение добавлен некоторый читинг (ну или хакинг или шейпинг или трюки, если угодно).

Карта: действие в зависимости от состояния

  1. Чтобы агент побыстрее научился отползать с мёртвой точки и учился не целую вечность, хвалим его за прирост в скорости.
  2. [ОТКЛЮЧЕНО] В начале обучения в историю мы сохраняем в том числе симметричные случаи (хоть задача и несимметрична, "раскачка" между холмами полезна).
  3. В одном месте к признакам состояния добавляем их же, возведённые в квадрат (потому что если бы я писал эвристику, там бы были квадраты расстояния; так пусть машина сама подберёт что-то подобное). Ненужные члены полинома элиминируем гейтом, то есть линейным слоем + сигмоидой.
  4. Близость до флажка решил не добавлять в обновлённый реворд, уж совсем читерство.

Пробовал что-то вроде Brain Damage, тупое усреднение, добавление шума в веса, добавление шума в данные (вообще оно-то как раз должно было помочь, потому что у позиции и скорости есть свойство локальности) — и ещё много что. Кое-что удалил, кое-что осталось в виде закомментированного кода (но я старался, чтобы было аккуратно).

Сохраняю раз в несколько шагов "карту" выученного поведения агента, а также историю ревордов. Довольно прикольно — и много рассказывает о задаче и пространствах решений.

Howto

  • точка входа — main.py
  • архитектура агента и её обёртка — в model.py
  • обновлённая награда — в training.py
  • память (просто циклический буфер) — в memory.py
  • рисование картинок — в utils.py

Ход обучения

Бонусом пара неравенств, которые решают задачу, взяты с интернета и в виде готового кода лежат в файле deterministic_policy_for_comparison.py.

Решение на if-ах

Ещё один бонус — интересные и не очень картинки, которые получились в процессе.

Что бывает, когда изменённое вознаграждение слишком далеко от исходного

Ситуация, когда вознаграждение агенту слишком сильно отличается от исходного. Сделать хотел утюг — слон получился вдруг.

(Due to certain secrecy measures the code has originally been made available using a fake name: Ivan Semyonich Golubtsov)

Owner

  • Name: Anton Alekseev
  • Login: alexeyev
  • Kind: user

GitHub Events

Total
Last Year

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 3
  • Total Committers: 1
  • Avg Commits per committer: 3.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
alexeyev a****v@g****m 3

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 0
  • Total pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 1
Top Authors
Issue Authors
Pull Request Authors
  • dependabot[bot] (2)
Top Labels
Issue Labels
Pull Request Labels
dependencies (2)

Dependencies

requirements.txt pypi
  • gym *
  • matplotlib *
  • numpy *
  • torch ==1.4.0
  • tqdm *