Twin-Delayed DDPG (TD3)
이번에는 TD3 모델에서 Q러닝 파트를 다뤄보도록 하겠다.
우리가 시작하기 전에 앞서, 먼저 훈련 과정을 실행해야 한다.
따라서 10,000개의 action의 전체 에피소드를 무작위로 실행하고, 해당 action들은 Actor Model로 실행된다.
그렇다면 왜 우리가 전체 에피소드를 실행해야 할까?
그 이유는 TD3 모델은 Off-Policy 모델이기 때문이다.
TD3 모델은 Deep Q-Learning과 같이 Experience Replay Memory를 사용해 Q-Value를 학습할 수 있는 몇 가지 전환을 추출한 뒤, 이를 배치에 넣는다.
두 번째 질문은 왜 우리가 처음의 10,000개의 action을 무작위로 실행할까?
이는 초기에는 policy가 제대로 학습되지 않았고, AI가 exploration(탐사)를 하기 위해서다.
네 번째 단계에서는 추출한 전환의 배치를 샘플링한다.
전환들은 메모리에서 얻을 수 있는 네가지 요소로 구성되는데, 이전 state(s), 다음 state(s’), action(a), 그리고 reward(r)이다.
여기서 배치란 메모리에서 추출한 일정 수의 전환들을 말한다.
배치의 사이즈는 보통 TD3 모델에서는 100개의 전환을 가지도록 한다.
결론적으로 우리는 이 네 가지의 각각 다른 배치들을 얻게 된다.
각 배치들은 이전 state의 배치, 다음 state의 배치, action의 배치와 reward의 배치를 의미한다.
다음 단계는 배치의 각 전환마다 s’에 대해 a’를 수행하게 된다.
이를 시각화하면 다음과 같다.
여섯 번째 단계는 exploration(탐사)를 위해 a’에 가우시안 노이즈를 더하는 것이다.
그리고 더해진 값을 환경의 범위로 clamp한다.
이는 우리가 특정 상태에 갇히는 것을 막으며, 그에 따라 우리를 더 나은 상태로 이끌 수 있다.
위 이미지는 그 과정을 시각화한 것이다.
노이즈()는 평균이 0이고 표준편차가 특정 변수인 정규 분포에서 샘플링되며, -c~c 사이의 값으로 클리핑된다.
이어서, 한번 더 a’에 노이즈를 더한 값을 클리핑한다.
일곱 번째 단계는 두 개의 Critic Target에 (s’, a’) 쌍을 입력으로 넣어,
두 개의 Q-Value(, )을 도출하는 단계이다.
이 과정을 시각화하면 다음과 같다.
여덟 번째 단계에서는 이 두 개의 Q-Value 중 최소값만을 취한다.
이는 다음 state에서의 근사치 값을 나타낸다.
우리가 이 두 값의 최소값을 가져오는 이유는, 최소 Q-Value를 취하는 것이 실제 값에 대한 ‘낙관적인’ 추정치를 예방하기 때문이다.
사실 이것이 기존 Actor-Critic 모델의 문제점 중 하나였다고 한다.
이 과정은 아래와 같은 이미지로 시각화된다.
당연하게도 다음 아홉 번째 단계는 실제 target 값을 찾는 것이다.
참고로 Deep Q-Learning에서의 target 값은 다음과 같다.
우리가 찾은 최소 Q-Value는 위 공식에서의 Q-Value의 최댓값과 같으므로, reward 값에 우리의 Q-Value에 Discount Factor()를 곱한 값을 더해 target 값을 구한다.
이제 벌어질 일을 추측해보자면, 이 Target을 Critic Model의 예측과 비교하는 일이 될 것이다.
이를 위해 열 번째 단계에서는 Critic Model에 동일한 (s, a) 쌍을 입력으로 넣어, 와 를 얻는다.
마지막 열한 번째 단계에서는 두 개의 Critic Model에서의 예측과 Target의 쌍으로부터, 개별 손실을 계산하지 않고 공통 손실을 사용한다.
여기서 사용되는 손실 함수는 MSE(Mean Squared Error) Loss로, 평균 제곱 오차 함수이다.
MSE Loss는 예측과 타겟 사이의 차이를 제곱한 것의 평균 값이다.
열한 번째 단계를 시각화한 이미지는 다음과 같다.
다음으로 열두 번째 단계에서는 계산한 Loss를 이용해 역전파 과정을 거쳐, Gradient Descent를 적용한다.
지금까지 TD3의 Q-Learning 파트를 다뤄보았다.
남은 부분은 Policy를 학습하는 부분이다.