После изучения предыдущей работы и осознания потенциала end-to-end обучения всего алгоритма целиком начинают очень сильно бросаться в глаза проблемы случаев, когда это делают не так.
Современные RL-алгоритмы это конструкции из большого количества костылей, подобранных человеком вручную для улучшения производительности. Но кое-что в них представляет собой то, что можно оптимизировать оптимизацией программы - это функция ошибки.
Традиционная DQN-ошибка:
L = (Q(s_t, a_t) − (r_t + γ ∗ max_a Q_t(s_{t+1}, a)))^2
имеет теоретические обоснование, но встречается с огромными проблемами на практике.Поэтому авторы решают представить ошибку в виде вычислительного графа (см. картинку) и оптимизировать её вычисление эволюционным алгоритмом. Мутации - это просто добавление / изменение рандомной вершины этого графа. Качество замеряют, обучая алгоритм с этой ошибкой.
На мой взгляд, проблемами такой параметризации является то, что в ней огромное количество функций это полный мусор, и то, что возможность локального подъёма к оптимальной функции в ней неясна. Их наличие подтверждается тем, что результат сильно лучше, если добавлять в популяцию уже существующие алгоритмы.
Тем не менее, в результате у них получаются довольно странные функции, которые работают лучше бейзлайна. Кожаные мешки в статье пытаются интерпретировать их, но они ещё не поняли, что пути оптимального алгоритма неисповедимы.
Всё это подтверждает 2 вещи, в которые я верю:
1) У человека явно есть сложности с тем, как применять RL-методы на реальных задачах
2) Мы получим алгоритм другого уровня, когда сможем оптимизировать весь RL-алгоритм, а не его кусочек
@knowledge_accumulator
