В предыдущей статье я объяснил, как создать среду ym Open AI с несколькими агентами. В этом я объясню, как заставить их сотрудничать для достижения общей цели: выйти из лабиринта!
Весь код для этой статьи доступен на моем GitHub.
Пользовательская среда
Настраиваемая среда будет представлять собой лабиринт (похожий на тот, что был в предыдущей статье), но с некоторыми изменениями.
0: Пустая область, агенты могут туда пройти
1: Агент 1, который попытается найти выход
2: Агент 2, который также попытается найти выход
3: Ловушки, если агент попадает туда, он проигрывает игру
4: Телепорт, если агент перемещается к телепорту, другой агент мгновенно перемещается на 3 клетки к северу.
5: Выйти, чтобы выйти из лабиринта и выиграть игру.
В игре агент 1 начинает движение, затем движется агент 2, затем агент 1,… Игра заканчивается, если агент попал в ловушку или нашел выход. Это пошаговая игра.
Функция вознаграждения
Функция вознаграждения необходима, чтобы найти эффективный способ найти лучшую политику для наших агентов. Наша функция вознаграждения зависит от результатов действия (победа в игре=='W', проигрыш в игре=='L' , продолжение игры== ='П')
Если агент найдет выход, он будет щедро вознагражден. Обратите внимание, что это также зависит от current_steps, потому что мы хотим, чтобы наш агент находил выход в меньшем числе возможных шагов. Таким образом, чем меньше шагов мы делаем, чтобы выиграть, тем больше награда.
Если вы проверите код, вы также увидите, что мы внедрили bonus_reward. Этот бонус равен 1, если агент перемещается в ячейку, которую еще не посещал ни один агент, иначе 0. Это сделано для того, чтобы способствовать открытию.
Если агент переместится в пустую ячейку, он получит вознаграждение -2, если агент уже был там, и -1, если там раньше никого не было (обратите внимание, что вознаграждение по-прежнему отрицательное).
Тренировка
А вот и та часть, которую мы ждали, найдет ли наш агент лучшую стратегию?
Эпизод 0 — 50
В начале обучения агенты часто не могут найти выход менее чем за 3 шага, а когда они это делают, в основном потому, что агент нашел ловушку.
Эпизод 51–1000
Мы начинаем видеть некоторый успех, успех в 22 шагах далек от оптимального, агенты явно не используют телепорт эффективно, но это все же улучшение.
Эпизод 1001–20 000
АХ! Это почти единственный успех в этом диапазоне. Посмотрим, найдем ли мы сейчас кратчайший путь.
Эпизод 25000 и далее
Кратчайший путь можно пройти за 4 шага с помощью телепорта. После 25000 эпизодов мы обучаем модель, которая находит оптимальное решение.
Вывод
Сотрудничество работает в обучении с подкреплением, и за этим довольно интересно наблюдать. Однако основным недостатком является обучение, необходимое для получения результата, которое очень долго.
Вы смотрели видео в прятки, сделанное Open AI? Они использовали вычислительную мощность, которая может быть только у компании (результат все еще действительно впечатляет).