假设我们有一个机器人可以移动的 (x,y) 平面。现在我们将世界的中间定义为目标状态,这意味着一旦我们的机器人达到该状态,我们将给予 100 的奖励。
现在,假设有 4 个状态(我称之为 A、B、C、D)可以导致目标状态。
我们第一次处于 A 并进入目标状态时,我们将更新我们的 QValues 表,如下所示:
Q(state = A, action = going to goal state) = 100 + 0
可能发生两件事之一。我可以在这里结束这一集,然后开始一个不同的集,机器人必须再次找到目标状态,或者即使我找到了目标状态,我也可以继续探索世界。如果我尝试这样做,我会看到一个问题。如果我处于目标状态并回到状态 A,它的 Qvalue 将如下:
Q(state = goalState, action = going to A) = 0 + gamma * 100
现在,如果我尝试从 A 再次进入目标状态:
Q(state = A, action = going to goal state) = 100 + gamma * (gamma * 100)
这意味着如果我继续这样做,因为 0 <= gamma <= 0,两个 qValue 都将永远上升。
这是 QLearning 的预期行为吗?难道我做错了什么?如果这是预期的行为,这不会导致问题吗?我知道从概率上讲,所有 4 个状态(A、B、C 和 D)都会以相同的速度增长,但即便如此,让它们永远增长还是有点让我烦恼。
即使在找到目标之后允许代理继续探索的想法与他离目标状态越近,它越有可能处于当前可以更新的状态有关。