Давайте представим, что у нас есть плоскость (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 <= гамма <= 0 оба значения q будут расти вечно. </p>
Это ожидаемое поведение QLearning? Я делаю что-то неправильно? Если это ожидаемое поведение, не может ли это привести к проблемам? Я знаю, что, вероятностно, все 4 состояния (A, B, C и D) будут расти с одинаковой скоростью, но даже если это так, это заставляет меня расти вечно.
Идея позволить агенту продолжить исследование даже после нахождения цели связана с тем, что чем ближе он находится от целевого состояния, тем более вероятно, что он находится в состояниях, которые могут быть обновлены в данный момент. *