我想知道强化学习的折扣奖励实际上是如何工作的。我相信这个想法是,在一集后面的奖励比早期的奖励更重要。这对我来说很有意义。在我看到的示例中,我很难理解这实际上是如何工作的。
我假设下面的代码是进行强化学习的标准方法。我将这段代码解释如下:遍历每个动作,训练模型预测动作的好坏。
这似乎正在做的是将我所有的预测均匀地乘以任何 gamma,添加奖励,并使用它来训练模型。
看到奖励总是在每一步更新,我很难理解这是如何实现使情节中的早期行动比后来的行动更不鼓励/不鼓励的目标。奖励不应该一步一步地加在一起,然后乘以伽玛来实现这一点吗?
def replay(self, batch_size):
minibatch = random.sample(self.memory, batch_size)
for state, action, reward, next_state, done in minibatch:
target = reward
if not done:
target = reward + self.gamma * np.amax(self.model.predict(next_state))
target_f = self.model.predict(state)
target_f[0][action] = target
self.model.fit(state, target_f, epochs=1, verbose=0)
if self.epsilon > self.epsilon_min:
self.epsilon *= self.epsilon_decay