Преимущества эволюционных стратегий:
- Простота реализации
- Не требуется обратного распространения
- Легко масштабируется в распределенной среде вычислений
- Малое число гиперпараметров.
Это исследование продолжает современный тренд, когда высокие результаты достигаются с помощью идей десятилетней давности. Например, в 2012 г. вышла статья об AlexNet, показавшая, как сконструировать, масштабировать и обучить сверточную нейронную сеть (СНН) для получения необычайной точности в задаче распознавания образов. Аналогично, в 2013 г. показано, что комбинация давно известного алгоритма Q-learning со сверточной нейронной сетью позволяет успешно обучить машину играть в игры для Atari. Алекснет возродил интерес к нейронным сетям в то время, когда большинство ученых считали, что СНН неперспективны в задачах компьютерного зрения. Так и эта работа демонстрирует, что эволюционная стратегия (ЭС) позволяет достичь высоких результатов на бенчмарках обучения с подкреплением, разрушая всеобщее мнение о том, что ЭС неприменима в задачах большой размерности.
ЭС легко реализовать и масштабировать. Наша имплементация способна обучить 3D гуманоида MuJoCo хождению на кластере из 80 машин (1440 ядер ЦПУ) всего за 10 минут (А3С на 32 ядрах требует около 10 часов). На 720 ядрах мы также получаем производительность для Atari, сравнимую с А3С, при сокращении времени обучения с 1 дня до 1 часа.
Обучение с подкреплением
Кратко по ОП. Представим, что нам дан некий мир (например игра), в котором мы хотим обучить агента. Для описания поведения агента мы задаем функцию политики (мозг агента). Эта функция вычисляет, как должен действовать агент в каждой конкретной ситуации. На практике политика — это обычно нейронная сеть, на входе которой текущее состояние игры, а на выходе — вероятность предпринять каждое из разрешенных действий. Типовая функция политики может включать около 1 млн. параметров, так что наша задача сводится к нахождению таких значений этих параметров, при котором политика работает хорошо (т.е. агент выигрывает в большинстве игр).
В игре «теннис» политика анализирует пикселы на экране и вычисляет вероятность перемещения ракетки вниз, вверх (или неподвижно).
Процесс обучения состоит в следующем. Начиная со случайной инициализации параметров, агент взаимодействует с игровым миром в течение какого-то времени, и накапливает эпизоды взаимодействия (например, каждый эпизод — это одна игра в теннис). Так мы получаем полную запись всего происходившего: какие состояния нам встретились, какие действия мы предприняли в каждом состоянии, какое вознаграждение получили на каждом шаге. Рецепт улучшения политики: все, что агент делал, и что приводило к улучшению награды, хорошо. К уменьшению награды — плохо. Мы можем использовать обратное распространение для вычисления малых изменений параметров сети, которые приведут к увеличению положительной награды и уменьшению отрицательной награды в будущем. Процесс повторяется итеративно: накапливаем новую порцию эпизодов, обновляем параметры, и повторяем.
Поиск в пространстве политик за счет внедрения шума
В ОП обычно используются стохастические политики, т.к. мы вычисляем лишь вероятности выполнения каждого из действий. Таким образом, за время обучения агент может оказаться в одном и том же состоянии много раз, но каждый раз он предпримет разные действия в соответствии с вероятностным сэмплированием. Это дает сигнал для обучения: некоторые из этих действий приведут к улучшению, а другие — к уменьшению вознаграждения. Таким образом мы внедряем шум в действия агента для поиска в пространстве политик, за счет сэмплирования распределения действий в каждый момент времени. Это отличается от ЭС, которая будет описана далее.
Эволюционные стратегии
Эволюция
Прежде чем погрузиться в ЭС, отметим, что слово «эволюция» здесь не имеет отношения к биологии. Математические основы процесса настолько абстрагированы от своих биологических аналогий, что лучше рассматривать ЭС просто как класс стохастических методов оптимизации типа черного ящика.
Оптимизация методом черного ящика
Забудем об агенте, игровом мире, нейронных сетях, времени… В ЭС рассматривается черный ящик с 1 миллионом чисел на входе (параметрами функции политики), 1 числом на выходе (суммарное вознаграждение). Мы просто хотим найти наилучшее значение этих 1 млн. чисел.
Алгоритм эволюционной стратегии
Интуитивно, оптимизация — это процесс «загадай и проверь». Мы начинаем со случайного набора параметров, и затем последовательно:
1) случайно изменяем слегка значения параметров
2) перемещаемся чуть-чуть в сторону улучшения параметров.
Конкретно, на каждом шаге мы берем вектор параметров w, и генерируем популяцию, например из 100 чуть отличающихся векторов w1… w100, прибавляя гауссовский шум. Затем оцениваем каждый из 100 кандидатов независимо путем запуска агента в своем мире в течение некоторого времени, и складываем значения вознаграждения в каждом случае. Тогда обновленный вектор параметров равен взвешенной сумме всех 100 векторов, где весовые коэффициенты пропорциональны сумме вознаграждения (т.е. более успешные кандидаты получают более высокий вес). Математически это эквивалентно оценке градиента ожидаемого вознаграждения в пространстве параметров, только мы делаем оценку лишь по 100 случайно выбранным направлениям.
Пример кода
Для конкретизации алгоритма, посмотрите на короткий пример оптимизации квадратической функции с помощью ЭС.
# simple example: minimize a quadratic around some solution point
import numpy as np
solution = np.array([0.5, 0.1, -0.3])
def f(w): return -np.sum((w - solution)**2)
npop = 50 # population size
sigma = 0.1 # noise standard deviation
alpha = 0.001 # learning rate
w = np.random.randn(3) # initial guess
for i in range(300):
N = np.random.randn(npop, 3)
R = np.zeros(npop)
for j in range(npop):
w_try = w + sigma*N[j]
R[j] = f(w_try)
A = (R - np.mean(R)) / np.std(R)
w = w + alpha/(npop*sigma) * np.dot(N.T, A)
Внедрение шума в параметры
Обратите внимание на то, что целевая функция та же, что и в ОП: оптимизация ожидаемого вознаграждения. Однако, в ОП шум внедряют в пространство действий и с помощью обратного распространения вычисляют изменение параметров. В ЭС шум внедряют непосредственно в пространство параметров. Поэтому можно использовать детерминированные политики (что мы и делали в наших экспериментах). Можно также комбинировать оба подхода.
Сравнение обучения с подкреплением и эволюционной стратегии
Некоторые преимущества ЭС над ОП:
- Не требуется обратное распространение. В ЭС есть только прямое распространение политики, что делает код проще и выполняется в 2-3 раза быстрее. В случае ограниченной памяти также нет необходимости хранить эпизоды для будущего обновления. Нет также проблемы взрывного роста градиентов, характерной для реккурентных сетей. Наконец, можно исследовать более широкий класс функций политики, например дифференцируемых (таких как двоичные сети) или содержащих сложные модули (поиск пути или разнообразные оптимизации).
- Высокая степень параллелизма. В ЭС требуется лишь незначительный обмен данных между процессами — скалярные данные о вознаграждении. В ОП требуется синхронизация полных векторов признаков (миллионы чисел). Поэтому в ЭС наблюдается линейный рост производительности по мере добавления вычислительных ядер.
- Устойчивость к выбору гиперпараметров. ОП чувствителен к масштабу, например при обучении для Atari мы наблюдали даже провалы в зависимости от выбора частоты кадров. ЭС в этом эксперименте практически нечувствителен к частоте кадров игры.
- Структурированное исследование. Некоторые алгоритмы ОП приводят к тому, что агент обучается «дребезгу» в управлении. Например, в игре в теннис часто нужно непрерывно давить на кнопку «вверх» в течение нескольких тактов игры. Q-обучение преодолевает этот недостаток ОП, и ЭС не страдает этим недостатком за счет использования детерминированной политики.
- Горизонт планирования шире. Анализ ЭС и ОП показал, что ЭС более предпочтителен когда количество тактов времени в эпизоде большое, т.к. действия придают более длительный эффект. Например, в игре Seaquest агент успешно обучается тому, что подводная лодка должна всплывать, когда уровень кислорода повышается.
ЭС также несвободна от недостатков. На практике, случайный шум в пространстве параметров должен приводить к различающимся результатам, чтобы сформировался обучающий сигнал. Например, в игре Montezuma’s Revenge практически невозможно получить ключ на первом уровне с помощью случайной сети, в то время, как это становится возможным при случайных действиях.
Подробное описание экспериментов и сравнение с лучшими алгоритмами ОП приведены в статье Evolution Strategies as a Scalable Alternative to Reinforcement Learning.
Исходный код опубликован на гитхабе.
48% (50) |
[Исходный код] опубликован на гитхабе. |
10% (11) |
Исходный код [опубликован] на гитхабе. |
42% (44) |
Исходный код опубликован на [гитхабе]. |
Проголосовало 105 человек. Воздержалось 32 человека.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (13)
4Denis
07.06.2017 08:55Альтернатива только для совсем не сложных систем
sergeypid
07.06.2017 08:57+2Вы считаете задачу обучить машину играть в игры для Атари имея на входе только скриншоты "совсем несложной системой"? На этой задаче предложенный алгоритм работает наравне с reinforced learning, в каких-то играх побеждает, в других немного отстает.
4Denis
07.06.2017 09:06Атари игры разные, как и прочие энвайронменты участвующие в тестах >> но и так видно (и понятно) что эволючионный «hill-climbing» может на простых вещах только соперничать с некоторыми алг-ми RL (в примере vanilla A3C feb 2016)
sergeypid
07.06.2017 09:29+1Ну вот Вам понятно, а этим господам непонятно: Andrej Karpathy, Tim Salimans, Jonathan Ho, Peter Chen, Ilya Sutskever, John Schulman, Greg Brockman & Szymon Sidor.
4Denis
07.06.2017 09:32А они прям «боги» какие-то?) Они тоже иногда «фигню» делают и пишут, также как и совершают ошибки — это нормально >> при этом они сами пишут что может иногда рассм-ся как альтернатива и также подразумевают про более простые задачи
RomanSt
07.06.2017 10:41Для вложения накоплений Вы обратитесь за консультацией к домохозяйке? Она ведь управляет бюджетом собственной семьи, а банкиры не «боги» какие-то?
Я нет. И хоть они не боги, но к их мнению считаю разумным прислушаться.4Denis
07.06.2017 11:19Спасибо за комплимент) Просто у многих достаточно поверхностное восприятие, тем более если апеллировать каким-то абстрактным «мнением» — это все немного раздутый пузырь. Вы посмотрите на код кот-ый они пишут, тот же Schulman, Karpathy, Zaremba — уровени их восприятия вам тоже может что-то уже показать, поэтому да — они несомненно крутые товарищи аля банкиры-vs-домохозяйки. Но вторые как раз это те, кто не понимает всей глубины и таких несомненно почти весь крутящийся шар.
RomanSt
07.06.2017 12:19Спасибо за комплимент
Подозреваю, что Вы перенесли мое сравнение на себя. Не стоит, мне просто нужно было привести сравнение, которое раскроет мысль о том, что Ваша реплика о богах, хоть и справедлива, но не рациональна, т.к. статистически их мнение кое-чего значит. Да, и в смысле этого разделения на банкиры-домохозяйки, я с Вами в одной категории :).
sergeypid
07.06.2017 12:23Чтобы дискуссия не была поверхностной, предлагаю простой эксперимент. Запустим скрипт оптимизации, приведенный в статье, для разный уровней сложностей.
Модифицированный кодimport numpy as np from matplotlib import pyplot as plt def f(w): return -np.sum((w - solution)**2) npop = 50 # population size sigma = 0.1 # noise standard deviation alpha = 0.001 # learning rate N = 1000 # iterations number SIZE = 10 # task size (times 3) w = np.random.randn(SIZE *3) # initial guess solution = np.array([0.5, 0.1, -0.3] * SIZE).flatten() graph = np.zeros(N) for i in range(N): N = np.random.randn(npop, SIZE * 3) R = np.zeros(npop) for j in range(npop): w_try = w + sigma*N[j] R[j] = f(w_try) A = (R - np.mean(R)) / np.std(R) w = w + alpha/(npop*sigma) * np.dot(N.T, A) graph[i]= f(w) plt.figure() plt.plot(np.log(-graph)) plt.show()
4Denis
07.06.2017 14:00Уровень сложности задачи определяется только размерностью вектора параметров w
— это неплохое заблуждение, даже для тех же игр Атари. Даже статья написана так, что кажется что это действительно так)
AfterGen
Я просто хочу делать игры.
sergeypid
Статья не об этом. Но я желаю Вам успеха.
SadBrick
Возможно он, как и я, надеялся увидеть что то более приближенное к жанру «стратегий».
Но ваша статья тоже весьма познавательна.