https://github.com/alexeyev/riding-the-sine-wave
...and generating ugly state-action maps for MountainCar-v0
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
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
Metadata Files
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
Решение — нормальный такой дип ку-лёрнинг, в обучение добавлен некоторый читинг (ну или хакинг или шейпинг или трюки, если угодно).

- Чтобы агент побыстрее научился отползать с мёртвой точки и учился не целую вечность, хвалим его за прирост в скорости.
- [ОТКЛЮЧЕНО] В начале обучения в историю мы сохраняем в том числе симметричные случаи (хоть задача и несимметрична, "раскачка" между холмами полезна).
- В одном месте к признакам состояния добавляем их же, возведённые в квадрат (потому что если бы я писал эвристику, там бы были квадраты расстояния; так пусть машина сама подберёт что-то подобное). Ненужные члены полинома элиминируем гейтом, то есть линейным слоем + сигмоидой.
- Близость до флажка решил не добавлять в обновлённый реворд, уж совсем читерство.
Пробовал что-то вроде Brain Damage, тупое усреднение, добавление шума в веса, добавление шума в данные (вообще оно-то как раз должно было помочь, потому что у позиции и скорости есть свойство локальности) — и ещё много что. Кое-что удалил, кое-что осталось в виде закомментированного кода (но я старался, чтобы было аккуратно).
Сохраняю раз в несколько шагов "карту" выученного поведения агента, а также историю ревордов. Довольно прикольно — и много рассказывает о задаче и пространствах решений.
Howto
- точка входа —
main.py - архитектура агента и её обёртка — в
model.py - обновлённая награда — в
training.py - память (просто циклический буфер) — в
memory.py - рисование картинок — в
utils.py

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

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

Ситуация, когда вознаграждение агенту слишком сильно отличается от исходного. Сделать хотел утюг — слон получился вдруг.
(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
- Website: https://ai.pdmi.ras.ru/
- Repositories: 52
- Profile: https://github.com/alexeyev
GitHub Events
Total
Last Year
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
- gym *
- matplotlib *
- numpy *
- torch ==1.4.0
- tqdm *