Читаю статью "Empirical Design in Reinforcement Learning" [1] — коллекцию способов ошибиться или обмануть себя при обучении RL. Какие-то очевидные, какие-то получаешь только на своём опыте.
Например, график (см. комменты): насколько близко робот был к цели в момент первой ошибки. Посчитано скользящим окном по 500 и по 100 эпизодов. Как понять, улучшает ли вообще обучение модель в данном случае? А если нет доверительных интервалов? А если ты видишь только начало графика (только начал обучение)?
Я прочитал уже много таких отчётов [2][3] — это прямо уже какой-то отдельный жанр технической литературы. (Кстати, про трансформеры похожий жанр развивается активно [4][5].)
Почему RL сложный?
1. Фактически, нам приходится обучать поведение агента, ориентируясь всего на одно число — reward. Это очень малоинформативный сигнал: анализируем огромный поток информации, а максимизируем одну маленькую цифирку.
2. Off-policy алгоритмы (не говоря уже об offline) — просто сложные, с совершенно неинтуитивными метриками. При обучении SAC используется пять (5!) нейросетей: где-то усредняем, где-то берём минимум, где-то одна нейросеть учится на предсказаниях другой.
3. И ещё одно, что делает всё вышеперечисленное по-настоящему сложным: постоянный distribution shift. Агент сам себе генерирует обучающую выборку. Чуть поменялась политика — поменялись данные — поменялась политика. Нет фиксированного датасета, нет отложенной выборки, нет привычного «сошлось/переобучилось».
4. Наконец, нужно делать очень много экспериментов, чтобы получать честные измерения — это просто дорого и долго. И это, пожалуй, главный практический вывод статьи: если хочешь знать, работает твоё изменение или нет — делай больше экспериментов, считай доверительные интервалы, лучше бутстрапом [6] (они особенно ярко подсвечивают насколько легко обмануться). Обходного пути нет. Один красивый график не значит ничего.
Я верю в модели мира, но это отдельная сложная тема. Напишите если вам интересно.
[1] https://arxiv.org/abs/2304.01315
[2] https://araffin.github.io/post/sac-massive-sim
[3] https://araffin.github.io/post/tune-sac-isaac-sim
[4] https://huggingface.co/spaces/HuggingFaceTB/smol-training-playbook
[5] https://huggingface.co/spaces/nanotron/ultrascale-playbook?section=high-level_overview
[6] https://en.wikipedia.org/wiki/Bootstrapping_(statistics)