Paired Open-Ended Trailblazer (POET) [2019] - обучаем задачи и агентов одновременно
Подобрать оптимальную задачу для обучения алгоритма - это сложно, и в разные моменты подходит разная задача. В данной статье рассматривают open-ended сценарий обучения - т.е. мы хотим, чтобы у нас была популяция агентов, решающих разнообразные сложные задачи.
1) Определим пространство задач - это "полоса с препятствиями", которую проходит "робот" (2-D bipedal-walker). На полосе 5 видов препятствий, и параметры среды определяют их "сложность" - высоту пня, ширину ямы и т.д., эти параметры и есть "вектор задачи".
2) Инициализируем популяцию пар [среда, агент] одной парой [пустая полоса, рандомный агент]
3) Во каждой паре среда-агент в популяции обучаем агента на своей среде, обновляем его параметры (алгоритм не важен, в данном случае ES).
4) Раз в несколько итераций среды мутируют - из каждой среды появляются K детей (копия + шум), и к ним в пару прикрепляется лучший агент из всей популяции. Фильтруем пары - задача не должна быть слишком простой или слишком сложной, отсекаем по награде. Если в итоге сред больше, чем M, оставляем M максимально далёких друг от друга в пространстве сред.
5) Иногда делаем "трансфер" - проверяем на каждой среде из популяции каждого агента и заменяем агента в паре на самого лучшего.
В результате наблюдаем интересные феномены:
1) Если после обучения взять случайную задачу из популяции и попытаться выучить алгоритм с нуля, то не получится - из-за высокой сложности извлечь полезный сигнал не получается.
2) Даже если учить не с нуля, а попробовать "вручную" двигать параметры от инициализации до целевой задачи, результат всё равно получается хуже. Непонятно, каким образом нужно двигаться к задаче для оптимального обучения на ней.
На мой взгляд, работа крайне интересная, хотя весь алгоритм довольно сложно устроен и в нём много гиперпараметров. Буду изучать, что есть в более новых работах на эту тему, после этого уже будем делать большие выводы.
@knowledge_accumulator
Post #98
1.82K

- 👍 7
- 🔥 6