133) ЕСТЬ 5 УРОВНЕЙ, 18n_ppo_tr_frostbite_06!
Ну что, вот оно долгожданное событие! Агент самостоятельно смог пройти 5 уровней в Atari Frostbite. Хотя бы на принципиальном уровне решена проблема, поднимавшаяся в #126, #125, #123, #121.
Всё произошло в рамках 18n_study_18.5e. Было три акта прохождения:
18n_ppo_tr_frostbite_06:35518n_ppo_tr_frostbite_06:35918n_ppo_tr_frostbite_06:369
Обидно только, что это случилось в самом начале или в середине, а ближе к концу агенты даже немного деградировали. Но сам факт, что агент смог пройти 5 уровней - это то, над чем я бился несколько месяцев. Значит, ёмкость архитектуры позволяет агенту одолевать 5 уровней. Осталось только оптимизировать путь обучения и саму архитектуру, чтобы результат был стабильным.
Успех закреплён в 18n_study_19.6e, тут уже побогаче:
18n_ppo_tr_frostbite_06:610(два раза финальных)18n_ppo_tr_frostbite_06:607(два раза)18n_ppo_tr_frostbite_06:609(два раза)18n_ppo_tr_frostbite_06:613(один раз)
Рефлексия по пройдённому пути с Atari Frostbite, что сработало:
- трансформер прекрасно заменяет stacked frames. Трансформе по сути - это работа с памятью.
- там, где можно сломать joint, надо ломать. Например, spatial encoding - лучше сделать два отдельных экондинга по X,Y (separate), чем один объединённый (joint). Так модели нужно меньше учиться и это усиливает обобщающую способность
- как можно быстрее переходить на работу с латентами (что-то типа идей
JEPA). Граундиться на обзервейшны (RenderHead), особенно для предсказания - это дохлый номер. - стохастичность. На первых уровнях можно искусственно увеличивать стохастичность, чтобы способоствовать лучшему изучению пространства состояний. На более поздних уровнях искусственная стохастичность может мешать, т.к. а) стохастичнотсть уже и так встроена и б) сами по себе поздние уровние (например, 5-ый) уже и так достаточно сложные. Получается, что можно создать трейн РАМ-ы, которые очень сложны в прохождении. Из-за чего агент может даже деградировать, т.к. начнёт терять путевондуню нить - поток награды
- прохождение пятого уровня на видео захвате не гарантирует, что агент научился его проходить уверенно. Многое зависит от
random_seed. Например, дляrandom_seed=64агент будет проходить 5-ый уровень с 20% вероятность, а сrandom_seed=61- уже только с 5% вероятностью. Поэтому чтобы агент уверенно проходил 5-ый уровень, надо чтобы при обучении он проходил 6-ой уровень. Это типа как с тренировками: если пробегаешь полумарафон, то пробежать 10км - вообще ни о чём. - полноцветный материал лучше серого: (3, 84, 84) » (1, 84, 84). Обучаемость на полном цвете идёт явно бодрее
- очень помогла декомпозиция
CNN + TransformerнаCNN (VisionHead) + Encoder (Transformer) + Policy (Transformer). В первом случае вся тяжесть по кодированию обзов влетает вCNN, из-за чего его колбасит и агент забывает прошлый опыт при значительном переключении палитры (см. проблему дневной/ночной уровень). Во втором случае мы морозимVisionHeadи заставляем тем самым перераспределить тяжесть логики вычисления латентного представления состояния на трансформеры. - одного или двух запусков не хватает. Нужно минимум 10, а лучше больше, чтобы получить адекватное представление о распределении кривых эффективности агента. Есть является “зацепляемости” (traction) - взрывной роста эффективности агента случается при наступлении комбинации событий. А чтобы эту комбинацию поймать, нужно несколько запусков с разным рандом сид
- естественный отбор. Прошлый пункт сам собой предлагает путь, когда для обучения на следующем этапе отбираются самые эффективные агенты. Иначе так можно впустую жечь ресурсы. Да, всегда есть вероятность с водой выплеснуть и ребёнка (оставить не выбранным более агента, который бы себя позднее проявил), но это нерабочая схема из-за дороговизны ресурсов. Если бы ресурсов было бесконечно много, то можно было бы всех проверять, но это невозможно.