В предыдущей статье я объяснил, как создать среду 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? Они использовали вычислительную мощность, которая может быть только у компании (результат все еще действительно впечатляет).