Чтобы узнать больше, см. Reinforcement Learning.
Мы реализуем алгоритм REINFORCE. Этот алгоритм требует, чтобы для начала обучения была выполнена полная траектория. Если вы посмотрите на следующее уравнение, вы поймете, почему:
$R_t = r_t + \gamma R_{t+1}$
Обратите внимание, что нам всегда нужен discounted return от следующего временного шага. Поэтому мы должны использовать подход Монте-Карло и смоделировать всю битву (поскольку мы не занимаемся обучением по временной разнице). Во время сражения мы собираем награды на каждом временном шаге, а затем вычисляем discounted return, начиная с последнего временного шага и двигаясь назад.
import numpy as np
def get_discounted_return(rewards, gamma):
running_discounted_reward = rewards[len(rewards)-1]
discounted_return = rewards.copy()
discounted_return[-1] = rewards[-1]
for t in reversed(range(len(discounted_return) - 1)):
discounted_return[t] = rewards[t] + gamma * running_discounted_reward
running_discounted_reward =+ rewards[t]
return np.array(discounted_return)
Как и во всех моделях RL с непрерывным пространством, мы используем аппроксимацию функции для отображения состояния на политику. Для первоначальных тестов AI Arena мы ограничиваем исследователей в использовании нейронных сетей с прямолинейным движением и полным подключением.
Мы реализовали нейросетевую часть стартовой модели в следующих фреймворках, включая следующие фрагменты кода:
<aside> ↩️ Return
</aside>
<aside> ➡️ Next
</aside>