AI/RL

시간적 차이 Temporal Difference

hu6r1s 2025. 2. 18. 20:19

이번에는 시간적 차이에 대해서 공부하려고 한다.

Temporal Difference는 큐러닝 알고리즘의 전부나 다름없다.

이전까지 공부했던 가치를 계산하는 방법은 아래와 같다.

Q값을 사용한 벨만 방정식이다.

이 방정식은 비결정적 탐색, 즉 어디로 갈지 모르기 때문에 다른 행동들의 확률의 값의 합을 구해서 사용했다.

여기서 간단하게 쉽게 이해할 수 있도록 결정론적 탐색의 공식으로 바꿔보자.

그림으로 이해해보도록 하자.

현재 파랑공이 있는 블록에서 위로 가는 행동이 있다고 하자. 그러면 새로운 가치가 계산될 것이다.

좌항, Q(s, a)는 행동을 수행하기 전이며, 이전의 학습 경험을 통해 가지고 있는 Q값이다.

\( R(s, a) + \gamma max_{a'} Q(s', a') \) 는 행동을 수행하고 다음 상태로 갔다면 행동에 대한 최적의 Q값이 계산된다.

할인계수 감마에 새로운 상태에서 가능한 모든 행동의 최댓값을 곱한 다음 보상 값과 더하면 되는 것이다.

그러니까 Q(s, a) 가치를 알기 전에 어떤 계산 반복 과정을 거쳐서 결국 그 가치를 알아낸 것이다.

 

시간적 차이의 공식을 보자.

앞부분 \( R(s, a) + \gamma max_{a'} Q(s', a') \) 은 행동을 하고 난 후의 가치이다.

Q(s, a)인데 이후에 계산된 것이다. 그리고 뒷부분의 Q(s, a)는 이전에 계산된 Q(s, a)이다.

이걸 어떻게 사용하고 또 왜 시간적 차이라고 불리는 것일까

시간적 차이라고 불리는 이유는 실질적으로 같은 걸 계산하기 때문이다.

행동의 Q값을 오른쪽과 왼쪽에서 똑같이 계산하는 것인데 시간이 다르다는 것이다.

시간적 차이의 공식은 행동 이후의 Q에서 행동 이전의 Q를 뺀 값이다.

Q(s, a) 공식을 다시 바꾸게 되면 이전 Q(s, a) 가치에 \( \alpha \) 와 시간적 차이의 곱을 추가하는 것이다.

\( \alpha \) 는 학습률로 0 ~ 1의 값이 된다.

학습률이 낮을수록 Q 값의 업데이트가 작아지고 Q 학습이 길어진다. 반대로 값이 높을수록 Q 값의 업데이트가 커지고 Q 학습이 빨라진다.

그냥 보면 좌항에도 Q(s, a)가 있고 우항에도 Q(s, a)가 있어 이해되지 않을까 하여 시간을 추가하면 이렇게 된다.

이후의 Q는 이전의 Q에 학습률과 시간적 차이를 곱한 것이다.

전부 반영하면 이렇게 식이 완성된다.

여기서 학습률을 0으로 하게 되면 \( Q_t \) 는 \( Q_{t-1} \) 가 되고 새로운 Q는 항상 이전과 똑같아지므로 학습이 불가능 할 것이다. 미로에서 어떤 일이 일어나든 상관없이 계속 같은 가치만을 가지고 있게 되기 때문이다.

1을 집어넣으면 앞의 \( Q_{t-1} \) 와 뒤의 \( -Q_{t-1} \) 로 상쇄될 것이다. 그러면 기존에 배웠던 방법대로 새로운 가치로 업데이트되고 이전 가치는 없어지게 되는 것이다.

이는 일반적인 큐 업데이트 공식이다.

내가 배웠던 공식과는 다르지만 내용적으로는 동일하다.

내가 배웠던 공식은 이전의 Q와 이후의 Q를 구분하기 쉽도록 명시해놓은 것이라고 생각하면 된다.

 

예를 들어서 행동 전 가치 Q(s7,a) 그러니 이전에 학습하고 경험한 값이 5.0라고 보자.

행동 후 가치 \( R(s7, a) + \gamma \max_{a'} Q(s8, a') \) 에서 보상은 2, 할인계수를 0.9, s8에서의 최적의 Q값이 8이라고 하자. 그렇다면 2 + 0.9 * 8로 9.2가 되게 된다.

그렇다면 시간적 차이는 9.2 - 5.0 이니 4.2가 되게 된다.

이는 최종적으로 학습률을 0.1로 가정하여 보면, 5.0 + 0.1 * 4.2가 되고, 결국 5.42가 된다.

그렇다면 Q(s7,a)는 5.0에서 5.42로 더 정확한 예측을 할 수 있도록 업데이트가 되게 되는 것이다.

결국에는 시간적 차이가 클수록 좋은 결과를 얻고, 작을수록 좋지 않다는 것이다.