После 12 октября охота за чемпионами усилилась. После 25-ой и 26-ой линеек (которые были в конце сентября) никак не получалось натренить агентов, которые бы проходили дальше 5-го уровня. Упирались засранцы и всё.

  1. была ставка, что нужно увеличить обзы. Ставка не сработала - заметка #136.
  2. дальше было подозрение, что новый VisionHead из 18d_world_model_09:183 какой-то бракованный. Однако, связка вижн хед VisionHead:183 + frostbite_07_old дала результаты. Выходит, что дело было не в VisionHead, а в батч-нормализация внутри вижн хеда
  3. наличие батч нормализации внутри вижн хеда вместе с неявным багом в использовании этого вижн хеда на оптимизации даёт положительный результат - на 3-ем шаге рождаются носители полезного навыка “умеют проходить 5-ый уровень. Выходит, что на роллауте агент играет с одними статистиками, близкими к тем, которые были на обучении WorldModel (уровни вплоть до 10-го), а на оптимизации использует статистика батча. И вот это расхождение вносит какую-то регуляризационную составляющую, которая приводит к рождению агентов носителей
  4. захотелось избавиться от этого бага, т.к. это а) неконтролируемая хрень б) не позволяет масштабировать длину входной цепочки.
  5. почему-то подумалось, что дело в забывчивостм агента. Это частично подтердилось тем, что через 18n_explore_03 стало ясно, что агент на третьем шаге разучился играть на 5-ом азбучном уровне.
  6. сделал эксперимент с постепенным расширением адресного пространства FFN (MLP) в трансформере политики. Типа на первом шаге доступно 1/6 адресов для записи и чтения. На втором шаге доступно следующая 1/6 адресов для записи и 2/6 для чтения и т.д. Идея была в сохранении накопленного опыта. Но идея проавалилась, т.к. FFN (MLP) не живёт изолированно, а зависит от того, что в том числе проиходит в Attention слоях. Т.к. слои внимания мутируют, то ключи в FFN слое теряют синхронизацию с выходами слоёв внимания и модель разваливается.
  7. поэтому сделал шаг в сторону LoRA архитектуры (frostbite_11). Это когда модель морозится но на MHA и FFN слои сверху нашлёпываются низкоранговые прослойки, которые впитывают новый опыт. Но в запуск это дело не пошло, т.к. стало понятно, что пока получение носителей на третьем шаге решено не будет LoRA будет преждевременным
  8. поэтому натренил новый вижн хед без батч-норма (VisionHead:294). Вместо батч-норма взял PixelNorm. 45-ая линейка исследований показала, что туго, но носители рождаются и можно дальше тренить
  9. потом подумалось, что можно взять под контроль батч-норм, если перенести его напрямую в энкодер. Идея сначала обломалась (46-линейка), так как была неправильная реализация энкодера (флаг is_ob_features_batch_norm не пробрасывался). Со второго раза получили новый энкодер (18d_world_model_10:29). Но выяснилось, что и для него нужен хак в виде постоянного передёргивания на параметры того, какой был в WorldModel - флаг is_world_model_ob_features_batch_norm.
  10. к 26 октября пришли с пониманием, что надо просто брать вижн хед без батч-норма, энкодер без батч-норма, убирать все эти долбанные хаки и просто за счёт чуть большего кол-ва ранов на 3-ем шаге получать носителей. Также на 5+ шагах даёт эффект расширения окна обзов (sequence_ages)
  11. ещё стало понятно после прочтения [DohareContLearn], что есть серьёзная проблематика с continual learning. На каждом шаге модель забывает старый опыт, и при этом плохо впитывает новый опыт. Именно поэтому азбука 5-го уровня на 3-ем шаге выветривается. Единственное, что спасает - это nine_lives в диете. Этот патч обеспечивает наличие в батчах оптимизации траекторий из всего спектра уровней. Поэтому агент как-бы умудряется сохранять опыть через этот костыль.

Идеи, куда двигаться дальше зависят от целей. А цели, напоминаю, следующие:

  1. убер-цель: разработать агента, который может уметь играть в широкий спектр игр
  2. под-цель: отточить необходимы для убер-цели механизмы на базе Frostbite. А для этого заставить его пройти дальше 10+ уровней.
  3. что это за механизмы: а) сохранение старого опыта (политика работы с памятью), б) пластичность и адаптивность к новому, в) иерархическое мышление агента (от целей высшего порядка, к моторике)

Идеи, куда двигаться дальше:

  1. подправить селектор decisive_metric. Сейчас он слеп к тем, кто на роллауте показывает большой потенциал. В итоге потомки рождаются не от тех, кто на 3-ем шаге научился проходить 5 уровней, а тот кто играет ровно, но имеет потолок. Короче, ведёт к стагнации. Надо, чтобы можно было явно выбирать более потециальных агентов
  2. в том или ином виде реализация идей из [DohareContLearn]. Например, частичная реинициализация сети (через расчёт полезности нейронов), чтобы сделать её восприимчивой для нового опыта.
  3. LoRA - это реальный способ адаптации большой сетки к новому опыту. Тоже со счетов не сбрасываем.
  4. Hierarchical Reinforcement Learning, HRL. Хотя этим идеям уже лет 30 (Dayan & Hinton 1993, Feudal Reinforcement Learning), но всё равно можно каким-то наработками вдохновиться.