137) охота за чемпионами
После 12 октября охота за чемпионами усилилась. После 25-ой и 26-ой линеек (которые были в конце сентября) никак не получалось натренить агентов, которые бы проходили дальше 5-го уровня. Упирались засранцы и всё.
- была ставка, что нужно увеличить обзы. Ставка не сработала - заметка #136.
- дальше было подозрение, что новый
VisionHeadиз18d_world_model_09:183какой-то бракованный. Однако, связка вижн хедVisionHead:183+frostbite_07_oldдала результаты. Выходит, что дело было не вVisionHead, а в батч-нормализация внутри вижн хеда - наличие батч нормализации внутри вижн хеда вместе с неявным багом в использовании этого вижн хеда на оптимизации даёт положительный результат - на 3-ем шаге рождаются носители полезного навыка “умеют проходить 5-ый уровень. Выходит, что на роллауте агент играет с одними статистиками, близкими к тем, которые были на обучении
WorldModel(уровни вплоть до 10-го), а на оптимизации использует статистика батча. И вот это расхождение вносит какую-то регуляризационную составляющую, которая приводит к рождению агентов носителей - захотелось избавиться от этого бага, т.к. это а) неконтролируемая хрень б) не позволяет масштабировать длину входной цепочки.
- почему-то подумалось, что дело в забывчивостм агента. Это частично подтердилось тем, что через
18n_explore_03стало ясно, что агент на третьем шаге разучился играть на 5-ом азбучном уровне. - сделал эксперимент с постепенным расширением адресного пространства
FFN(MLP) в трансформере политики. Типа на первом шаге доступно 1/6 адресов для записи и чтения. На втором шаге доступно следующая 1/6 адресов для записи и 2/6 для чтения и т.д. Идея была в сохранении накопленного опыта. Но идея проавалилась, т.к.FFN(MLP) не живёт изолированно, а зависит от того, что в том числе проиходит вAttentionслоях. Т.к. слои внимания мутируют, то ключи вFFNслое теряют синхронизацию с выходами слоёв внимания и модель разваливается. - поэтому сделал шаг в сторону
LoRAархитектуры (frostbite_11). Это когда модель морозится но наMHAиFFNслои сверху нашлёпываются низкоранговые прослойки, которые впитывают новый опыт. Но в запуск это дело не пошло, т.к. стало понятно, что пока получение носителей на третьем шаге решено не будетLoRAбудет преждевременным - поэтому натренил новый вижн хед без батч-норма (
VisionHead:294). Вместо батч-норма взялPixelNorm. 45-ая линейка исследований показала, что туго, но носители рождаются и можно дальше тренить - потом подумалось, что можно взять под контроль батч-норм, если перенести его напрямую в энкодер. Идея сначала обломалась (46-линейка), так как была неправильная реализация энкодера (флаг
is_ob_features_batch_normне пробрасывался). Со второго раза получили новый энкодер (18d_world_model_10:29). Но выяснилось, что и для него нужен хак в виде постоянного передёргивания на параметры того, какой был вWorldModel- флагis_world_model_ob_features_batch_norm. - к 26 октября пришли с пониманием, что надо просто брать вижн хед без батч-норма, энкодер без батч-норма, убирать все эти долбанные хаки и просто за счёт чуть большего кол-ва ранов на 3-ем шаге получать носителей. Также на 5+ шагах даёт эффект расширения окна обзов (
sequence_ages) - ещё стало понятно после прочтения
[DohareContLearn], что есть серьёзная проблематика с continual learning. На каждом шаге модель забывает старый опыт, и при этом плохо впитывает новый опыт. Именно поэтому азбука 5-го уровня на 3-ем шаге выветривается. Единственное, что спасает - этоnine_livesв диете. Этот патч обеспечивает наличие в батчах оптимизации траекторий из всего спектра уровней. Поэтому агент как-бы умудряется сохранять опыть через этот костыль.
Идеи, куда двигаться дальше зависят от целей. А цели, напоминаю, следующие:
- убер-цель: разработать агента, который может уметь играть в широкий спектр игр
- под-цель: отточить необходимы для убер-цели механизмы на базе Frostbite. А для этого заставить его пройти дальше 10+ уровней.
- что это за механизмы: а) сохранение старого опыта (политика работы с памятью), б) пластичность и адаптивность к новому, в) иерархическое мышление агента (от целей высшего порядка, к моторике)
Идеи, куда двигаться дальше:
- подправить селектор
decisive_metric. Сейчас он слеп к тем, кто на роллауте показывает большой потенциал. В итоге потомки рождаются не от тех, кто на 3-ем шаге научился проходить 5 уровней, а тот кто играет ровно, но имеет потолок. Короче, ведёт к стагнации. Надо, чтобы можно было явно выбирать более потециальных агентов - в том или ином виде реализация идей из
[DohareContLearn]. Например, частичная реинициализация сети (через расчёт полезности нейронов), чтобы сделать её восприимчивой для нового опыта. LoRA- это реальный способ адаптации большой сетки к новому опыту. Тоже со счетов не сбрасываем.Hierarchical Reinforcement Learning, HRL. Хотя этим идеям уже лет 30 (Dayan & Hinton 1993, Feudal Reinforcement Learning), но всё равно можно каким-то наработками вдохновиться.