零基础机器学习做游戏辅助第十课--强化学习DQN(二)

一、经验池

我们的神经网络在初期并不能很好的预测Q,所以前期我们是随机做出选择,然后将经验存放起来。因为智能体去探索环境时采集到的样本是一个时间序列,样本之间具有连续性,所以需要打破时间相关性,解决的办法是在训练的时候存储当前训练的状态到记忆体M,更新参数的时候随机从M中抽样mini-batch进行更新。

    def memorize(self, state, action, reward, next_state, done):
        self.memory.append((state, action, reward, next_state, done))

二、动作的选择

初期我们主要依赖随机动作探索环境,epsilon值为我们随机系数,随着我们对模型的训练,这个系数将随着我们设定的衰减值进一步减少随机的动作比例,知道完全使用我们的神经网络进行预测。

    def act(self, state):
        #随机动作
        if np.random.rand() <= self.epsilon:
            return random.randrange(self.action_size)
        #预测动作
        act_values = self.model.predict(state)
        return np.argmax(act_values[0])

你可能感兴趣的:(零基础机器学习做游戏辅助,深度学习做游戏辅助,游戏辅助,神经网络做游戏辅助,强化学习做游戏辅助,深度神经网络)