要了解更多关于政策梯度的信息,请参阅 强化学习.
我们实现了 REINFORCE 算法。这个算法要求完成一个完整的轨迹,以便开始训练。如果你看一下下面的方程式,你就会明白为什么:
$R_t = r_t + \gamma R_{t+1}$
注意,我们总是需要下一个时间步骤的折现回报。因此,我们必须使用蒙特卡洛方法,模拟整个战斗(因为我们没有进行时差学习)。在战斗的时候,我们在每个时间步骤中收集奖励,之后我们从最后一个时间步骤开始,向后移动,计算折现的回报。
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> ↩️ 返回
</aside>
<aside> ➡️ 下一页
</aside>