검색
← 모듈 로드맵

액터-크리틱의 함수 근사 오차 줄이기 (TD3)

논문 · 전문가 · Scott Fujimoto 외 2명 · 2018 · arXiv

원제 · Addressing Function Approximation Error in Actor-Critic Methods

크리틱 둘 중 작은 값 · 정책 지연 갱신 · 목표 잡음으로 DDPG의 과대추정을 줄인 TD3

먼저 알아야 할 것

Q-러닝과 벨만 방정식DQN 목표 네트워크 · 경험 재생Double Q-러닝DDPG 결정적 정책 경사

다루는 내용

연속 제어용 액터-크리틱(DDPG)에서도 함수 근사 오차 때문에 Q값이 과대추정된다는 것을 이론과 실험으로 보인 논문입니다. 두 크리틱 중 최솟값으로 목표를 만드는 클립드 더블 Q-러닝, 크리틱을 여러 번 고친 뒤 정책을 고치는 지연 갱신, 목표 행동에 잘린 잡음을 더하는 평활화를 결합해 TD3를 제안합니다. MuJoCo 과제에서 DDPG · PPO · TRPO · SAC 등보다 같거나 높은 성능을 보고했습니다.

초록

저자가 쓴 초록을 옮긴 것입니다.

심층 Q-러닝 같은 가치 기반 강화학습 방법에서는 함수 근사 오차가 가치 추정을 과대하게 만들고 최적이 아닌 정책으로 이어진다는 사실이 알려져 있습니다. 이 논문은 이 문제가 액터-크리틱 환경에서도 그대로 남아 있음을 보이고, 액터와 크리틱 양쪽에서 그 영향을 최소화하는 새로운 장치를 제안합니다. 제안 알고리즘은 Double Q-러닝을 바탕으로, 두 크리틱 중 더 작은 값을 취해 과대추정을 제한합니다. 또한 목표 네트워크와 과대추정 편향 사이의 연관을 밝히고, 갱신마다 생기는 오차를 줄여 성능을 더 높이기 위해 정책 갱신을 늦출 것을 제안합니다. OpenAI gym 과제 묶음에서 평가한 결과, 시험한 모든 환경에서 기존 최고 성능을 넘어섰습니다.

해설

액터-크리틱의 함수 근사 오차 줄이기 (TD3)

연속 행동을 다루는 액터-크리틱(DDPG)에서도 Q값을 부풀려 잡는 '과대추정' 문제가 생긴다는 것을 보이고, 비평가 두 개 중 작은 값 쓰기 · 정책 늦게 고치기 · 목표 행동에 잡음 섞기라는 세 가지 간단한 장치로 이를 줄인 논문입니다. 로봇 제어 같은 연속 제어의 기본 알고리즘이 됐습니다.

항목내용
원제Addressing Function Approximation Error in Actor-Critic Methods
저자Scott Fujimoto 외 2명 (McGill대 · 암스테르담대)
발표2018 · ICML · arXiv 1802.09477
트랙 · 수준강화학습 · 심화
먼저 알면 좋은 것Q-러닝 · 벨만 방정식, DQN의 목표 네트워크 · 경험 재생, Double Q-러닝, DDPG(결정적 정책 경사)

들어가기 전에

이 해설은 아래 내용을 안다고 보고 씁니다. 처음이라면 먼저 읽고 오면 수식과 손계산을 훨씬 쉽게 따라올 수 있습니다.

한눈에 보기

  • '최댓값을 고르면 잡음 때문에 값이 부풀려진다'는 과대추정(overestimation bias)이 왜 생기는지, 그리고 연속 행동의 액터-크리틱에서도 생긴다는 것을 알게 됩니다.
  • TD3라는 이름의 세 글자 — Twin(비평가 두 개), Delayed(정책 늦게 갱신), 그리고 목표 정책 평활화 — 가 각각 무엇을 막는지 설명할 수 있습니다.
  • 목표 네트워크(target network)가 '안정'뿐 아니라 '오차 누적'을 줄이는 장치라는 관점을 얻습니다.
  • MuJoCo 7개 과제에서 DDPG · PPO · TRPO · ACKTR · SAC와 비교한 결과를 읽을 수 있습니다.

초록 (번역)

심층 Q-러닝 같은 가치 기반 강화학습 방법에서는 함수 근사 오차가 가치 추정을 과대하게 만들고 최적이 아닌 정책으로 이어진다는 사실이 알려져 있습니다. 이 논문은 이 문제가 액터-크리틱 환경에서도 그대로 남아 있음을 보이고, 액터와 크리틱 양쪽에서 그 영향을 최소화하는 새로운 장치를 제안합니다. 제안 알고리즘은 Double Q-러닝을 바탕으로, 두 크리틱 중 더 작은 값을 취해 과대추정을 제한합니다. 또한 목표 네트워크와 과대추정 편향 사이의 연관을 밝히고, 갱신마다 생기는 오차를 줄여 성능을 더 높이기 위해 정책 갱신을 늦출 것을 제안합니다. OpenAI gym 과제 묶음에서 평가한 결과, 시험한 모든 환경에서 기존 최고 성능을 넘어섰습니다.

무엇을 풀었나

Q-러닝은 다음 상태에서 "가장 좋은 행동의 값"을 목표로 삼습니다. 그런데 신경망이 추정한 Q값에는 늘 오차가 섞여 있습니다. 오차가 평균 0이어도, 여러 값 중 최댓값을 고르면 '우연히 크게 잘못 잡힌 값'이 뽑히기 쉬워 결과가 체계적으로 커집니다. 이것이 과대추정 편향입니다.

이산 행동(아타리 등)에서는 Double DQN이 이 문제를 줄였습니다. 하지만 연속 행동을 다루는 DDPG 같은 액터-크리틱에서는 최댓값을 직접 고르지 않고 경사로 정책을 고치기 때문에, 과대추정이 있는지조차 분명하지 않았습니다.

이 논문은 세 가지를 보였습니다.

  1. 결정적 정책 경사에서도 몇 가지 가정 아래 과대추정이 생긴다는 것을 증명하고, Hopper · Walker2d에서 DDPG의 Q값이 실제 값보다 뚜렷이 높게 잡히는 것을 측정했습니다.
  2. Double DQN 방식을 액터-크리틱에 그대로 옮기면 효과가 거의 없었습니다. 정책이 천천히 바뀌어 현재 네트워크와 목표 네트워크가 너무 비슷하기 때문입니다.
  3. 시간차 학습에서는 오차가 갱신마다 쌓여 분산이 커지고, 이것이 정책을 망가뜨리는 악순환(나쁜 크리틱 → 나쁜 정책 → 더 나쁜 크리틱)을 만듭니다.

핵심 아이디어

mermaid
flowchart LR
  A[리플레이 버퍼에서 미니배치] --> B[목표 액터로 다음 행동 + 잘린 잡음]
  B --> C[목표 크리틱 두 개로 Q 계산]
  C --> D[둘 중 작은 값으로 목표 y]
  D --> E[크리틱 두 개 모두 y에 맞춰 갱신]
  E --> F{d번째 갱신인가?}
  F -- 예 --> G[액터를 Q1 기준으로 갱신]
  G --> H[목표 네트워크를 천천히 따라가게 갱신]
  F -- 아니오 --> A
  H --> A

1. 왜 과대추정이 생기나

직관: 시험 점수를 잡음 섞인 채점기로 세 번 매긴 뒤 "가장 높은 점수"만 기록하면, 실제 실력보다 높게 기록되기 쉽습니다(해설용 비유).

단계: ① 각 행동의 Q값 추정에 잡음 ϵ\epsilon이 붙습니다. ② 최댓값을 고르면 잡음이 큰 쪽이 뽑히기 쉽습니다. ③ 그 값이 벨만 방정식을 타고 이전 상태로 전파됩니다. ④ 갱신을 거듭할수록 부풀림이 쌓입니다.

Eϵ[max⁡a′(Q(s′,a′)+ϵ)]  ≥  max⁡a′Q(s′,a′)\mathbb{E}_\epsilon\big[\max_{a'} \big(Q(s', a') + \epsilon\big)\big] \;\ge\; \max_{a'} Q(s', a')
기호뜻
Q(s′,a′)Q(s', a')다음 상태 s′s'에서 행동 a′a'를 했을 때의 (참) 가치
ϵ\epsilon함수 근사 때문에 생기는 추정 오차
Eϵ\mathbb{E}_\epsilon오차에 대한 평균

숫자로 해 보기(해설용 예): 두 행동의 참값이 모두 5이고, 추정 오차가 반반 확률로 +1+1 또는 −1-1이라 합시다. 가능한 경우는 (6,6) (6,4) (4,6) (4,4)이고 최댓값은 6, 6, 6, 4입니다. 평균은 5.55.5로, 참 최댓값 5보다 0.5 큽니다. 오차 평균이 0인데도 최댓값은 부풀려집니다.

2. 클립드 더블 Q-러닝 (Twin)

직관: 감정가 두 명에게 같은 물건 값을 매기게 하고, 더 낮게 부른 값을 믿습니다. 한쪽이 부풀렸다면 다른 쪽이 잡아 줍니다.

단계: ① 크리틱 Qθ1Q_{\theta_1}, Qθ2Q_{\theta_2} 두 개를 따로 학습합니다. ② 목표값을 만들 때 두 목표 크리틱이 낸 값 중 작은 쪽을 씁니다. ③ 두 크리틱 모두 같은 목표 yy로 학습합니다. ④ 액터는 Qθ1Q_{\theta_1}만 보고 고칩니다(계산 절약).

y=r+γmin⁡i=1,2Qθi′(s′,a~)y = r + \gamma \min_{i=1,2} Q_{\theta'_i}\big(s', \tilde a\big)
기호뜻
rr이번에 받은 보상
γ\gamma할인율
Qθi′Q_{\theta'_i}ii번째 크리틱의 목표(천천히 따라오는) 네트워크
a~\tilde a목표 액터가 고른 다음 행동(3절의 잡음 포함)

왜 이렇게 했나: Double DQN처럼 '현재 네트워크로 고르고 목표 네트워크로 평가'하는 방식은 액터-크리틱에서 두 네트워크가 너무 비슷해 효과가 적었습니다. 원래의 Double Q-러닝(크리틱 쌍)도 크리틱끼리 같은 버퍼를 쓰니 완전히 독립이 아니어서 과대추정이 남았습니다. 최솟값을 쓰면 오히려 과소추정 쪽으로 기울 수 있지만, 저자들은 이쪽이 낫다고 봅니다. 과소추정된 행동은 정책이 피하므로 그 값이 정책 갱신을 통해 퍼지지 않기 때문입니다.

숫자로 해 보기(해설용 예): r=1r=1, γ=0.99\gamma=0.99, 두 목표 크리틱이 Q1=10Q_1=10, Q2=8Q_2=8을 냈다면 y=1+0.99×8=8.92y = 1 + 0.99 \times 8 = 8.92입니다. 큰 값 10을 썼다면 10.910.9였습니다.

덤으로, 최솟값은 추정 오차의 분산이 작은 상태를 더 높게 평가하는 경향이 있습니다. 여러 확률변수의 최솟값의 기댓값은 분산이 클수록 작아지기 때문입니다. 그래서 정책이 더 '안전한' 쪽으로 갱신됩니다.

3. 오차는 쌓인다 — 목표 네트워크와 정책 지연 (Delayed)

직관: 지도(크리틱)가 아직 엉터리인데 그 지도를 보고 길(정책)을 자꾸 바꾸면 더 헤맵니다. 지도를 몇 번 다듬은 뒤에 한 번 길을 바꿉니다.

단계: 신경망 크리틱은 벨만 방정식을 정확히 만족하지 못하고 갱신마다 잔여 TD 오차 δ\delta를 남깁니다. 논문은 이것을 펼쳐 보이면, 크리틱이 배우는 것이 '기대 보상 합'이 아니라 '기대 보상 합에서 미래 TD 오차의 할인 합을 뺀 것'임을 보입니다.

Qθ(st,at)=E[∑i=tTγ i−t (ri−δi)]Q_\theta(s_t, a_t) = \mathbb{E}\Big[\sum_{i=t}^{T} \gamma^{\,i-t}\,(r_i - \delta_i)\Big]
기호뜻
δi\delta_iii번째 단계에서 남은 TD 오차
γ i−t\gamma^{\,i-t}먼 미래일수록 작아지는 할인 가중치
TT에피소드 끝 시점

따라서 γ\gamma가 1에 가까우면 오차의 분산이 빠르게 커질 수 있습니다. 논문은 Hopper에서 목표 네트워크 갱신 비율 τ\tau를 1(목표 네트워크 없음), 0.1, 0.01로 바꿔 보았습니다. 정책을 고정하면 모두 비슷하게 수렴하지만, 정책도 함께 학습하면 빠르게 갱신되는 목표 네트워크에서 값이 크게 발산했습니다.

결론과 설계: 크리틱을 dd번 갱신할 때마다 액터와 목표 네트워크를 한 번만 갱신합니다. 목표 네트워크는 θ′←τθ+(1−τ)θ′\theta' \leftarrow \tau\theta + (1-\tau)\theta'로 천천히 따라갑니다.

왜 이렇게 했나: 분산이 큰 가치 추정으로 정책을 고치는 것이 발산의 원인이라면, 오차를 먼저 줄인 뒤 정책을 고치는 것이 맞습니다. 액터 갱신 횟수가 절반이 되지만, 논문의 실험에서는 성능이 오히려 대체로 좋아지고 학습 시간도 줄었습니다.

숫자로 해 보기(해설용 예): d=2d=2이면 크리틱 갱신 1, 2, 3, 4, … 중 2, 4, 6번째에만 액터를 고칩니다. τ=0.005\tau=0.005이고 현재 가중치가 1.0, 목표 가중치가 0.0이면 한 번 갱신 후 목표 가중치는 0.0050.005입니다.

4. 목표 정책 평활화 (Target Policy Smoothing)

직관: 비슷한 행동은 비슷한 가치를 가져야 합니다. 행동 하나의 '뾰족한' Q값을 믿지 말고, 그 주변을 조금 흔들어 평균을 냅니다.

단계: ① 목표 액터가 행동 πϕ′(s′)\pi_{\phi'}(s')를 냅니다. ② 정규분포 잡음을 더하되 범위 [−c,c][-c, c]로 자릅니다. ③ 이렇게 흔든 행동으로 목표 Q를 계산합니다. ④ 미니배치 평균이 '주변 행동 평균'을 근사합니다.

a~=πϕ′(s′)+ϵ,ϵ∼clip(N(0,σ~), −c, c)\tilde a = \pi_{\phi'}(s') + \epsilon, \qquad \epsilon \sim \mathrm{clip}\big(\mathcal{N}(0, \tilde\sigma),\, -c,\, c\big)
기호뜻
πϕ′\pi_{\phi'}목표 액터(결정적 정책)
N(0,σ~)\mathcal{N}(0, \tilde\sigma)평균 0, 표준편차 σ~\tilde\sigma인 정규분포 잡음
clip(⋅,−c,c)\mathrm{clip}(\cdot, -c, c)잡음이 cc보다 커지지 않게 자르기

왜 이렇게 했나: 결정적 정책은 Q값 표면의 좁은 봉우리에 과적합하기 쉽습니다. 이는 SARSA식 갱신을 흉내 낸 정규화입니다. 저자들은 SARSA에서 나온 정책이 흔들림에 강한 행동을 선호해 더 안전하다는 직관을 근거로 듭니다.

숫자로 해 보기(해설용 예): 목표 행동이 0.30.3이고 뽑힌 잡음이 0.70.7이면, 논문 설정 c=0.5c=0.5에서 잡음은 0.50.5로 잘려 a~=0.8\tilde a = 0.8이 됩니다.

5. 실험 설정 (논문 기준)

  • 액터 · 크리틱 모두 은닉층 400 · 300의 2층 신경망, ReLU, 액터 출력에 tanh. 크리틱은 첫 층에서 상태와 행동을 함께 받습니다.
  • Adam, 학습률 10−310^{-3}, 미니배치 100, 리플레이 버퍼는 전체 기록.
  • 목표 정책 평활화 잡음 N(0,0.2)\mathcal{N}(0, 0.2)를 (−0.5,0.5)(-0.5, 0.5)로 자름, 정책 지연 d=2d=2, τ=0.005\tau=0.005.
  • 처음 일정 단계(HalfCheetah · Ant는 10000단계, 나머지는 1000단계)는 순수 탐색 정책, 이후 탐색 잡음 N(0,0.1)\mathcal{N}(0, 0.1). 원래 DDPG의 Ornstein-Uhlenbeck 잡음은 이점이 없어 쓰지 않았습니다.
  • 과제마다 100만 단계, 5000단계마다 평가(탐색 잡음 없이 10에피소드 평균), 10개 시드.

결과

MuJoCo 7개 과제에서 10번 시도의 최대 평균 반환값(Table 1)을 요약하면 다음과 같습니다.

과제TD3DDPG(baselines)재조정한 DDPGSAC
HalfCheetah9636.953305.608577.292347.19
Hopper3564.072020.461860.022996.66
Walker2d4682.821843.853098.111283.67
Ant4372.441005.30888.77655.35
  • 논문은 TD3가 모든 과제에서 최종 성능과 학습 속도 모두 다른 알고리즘과 같거나 앞섰다고 보고합니다. PPO · TRPO · ACKTR도 비교 대상이었습니다.
  • 구성 요소 빼 보기(Table 2, 마지막 10회 평가 평균): Ant에서 TD3는 4185.06이었는데 클립드 더블 Q를 빼면(TD3 - CDQ) 849.75로 크게 떨어졌습니다. 한 가지 요소만 더했을 때는 대부분 개선이 미미했고, 조합할 때 성능이 크게 올랐습니다.
  • Double DQN · Double Q-러닝을 액터-크리틱으로 옮긴 변형(DDQN-AC · DQ-AC)은 같은 지연 · 평활화를 써도 TD3 - CDQ보다 의미 있게 낫지 않았습니다(Ant 제외).
  • 주의: SAC 수치는 저자 구현으로 돌린 결과이고, 논문 각주는 SAC 보고치와의 차이를 부록에서 논의한다고 밝힙니다.

왜 중요한가 · 이후 영향

  • 연속 제어의 기본값: DDPG를 쓰던 자리에 TD3를 쓰는 것이 흔해졌습니다. 고친 부분이 몇 줄이라 다른 액터-크리틱에도 쉽게 붙일 수 있다는 점을 저자들도 강조합니다.
  • '두 크리틱 중 최솟값'의 확산: 같은 시기에 나온 SAC의 arXiv판도 이 논문을 인용하며 Q 함수 두 개의 최솟값을 씁니다. 오프라인 강화학습에서 과대추정을 막는 CQL 같은 연구도 같은 문제의식을 이어 갑니다.
  • 재현성: 많은 시드로 실험하고 코드와 학습 곡선을 공개해, 강화학습 실험의 신뢰성 논의에 기여했습니다.

한계 · 주의할 점

  • 최솟값은 과소추정을 부를 수 있습니다. 저자들은 과대추정보다 덜 해롭다고 주장하지만, 탐색이 중요한 과제에서는 지나치게 보수적일 수 있습니다.
  • 정책이 결정적이라 탐색은 따로 더한 잡음에 의존합니다. 잡음 크기 같은 하이퍼파라미터에 민감할 수 있습니다.
  • 실험은 MuJoCo 시뮬레이터의 7개 과제에 한정됩니다. 실제 로봇 · 이산 행동 · 이미지 입력에서의 효과는 이 논문만으로는 알 수 없습니다.
  • 과대추정에 대한 증명은 '학습률이 충분히 작을 때' 같은 가정 아래의 결과입니다.

이어서 읽을 것

용어 정리

용어쉬운 뜻
액터-크리틱(actor-critic)행동을 고르는 정책(액터)과 그 행동의 가치를 매기는 함수(크리틱)를 함께 학습하는 방식
과대추정 편향(overestimation bias)잡음 섞인 추정값 중 최댓값을 고르다 보니 가치가 체계적으로 커지는 현상
결정적 정책(deterministic policy)같은 상태에서 늘 같은 행동을 내는 정책
목표 네트워크(target network)학습 목표를 계산하려고 천천히 따라오게 둔 네트워크 사본
TD 오차(TD error)한 단계 뒤 정보로 만든 목표값과 지금 추정값의 차이
경험 재생(experience replay)지난 경험을 버퍼에 저장해 무작위로 다시 뽑아 학습하는 방법
정규화(regularization)추정이 지나치게 뾰족해지지 않도록 학습을 누르는 장치

스스로 점검

  1. 오차의 평균이 0인데 왜 최댓값은 커지나? — 여러 값 중 최댓값을 고르면 우연히 크게 잘못 잡힌 값이 뽑힐 가능성이 높기 때문입니다. 평균 0인 오차도 '최댓값'을 거치면 양수 쪽으로 치우칩니다.
  2. Double DQN 방식이 액터-크리틱에서 잘 안 통한 이유는? — 정책이 천천히 바뀌어 현재 네트워크와 목표 네트워크가 너무 비슷하므로, 서로 독립적인 추정 역할을 못 하기 때문입니다.
  3. 정책 갱신을 늦추면 무엇이 좋아지나? — 크리틱의 오차를 먼저 줄인 뒤 정책을 고치므로, 분산이 큰 가치 추정에 끌려 정책이 망가지는 악순환을 줄입니다.

다음에 볼 것

이 글을 이해했다면 이어서 보면 좋은 항목입니다.

출처

AI 원리부터 이해하기 · 강화학습 모듈

강화학습 모듈 학습

이 글은 강화학습 모듈의 학습 자료입니다. 전체 31개 자료 중 21번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

arXiv (논문별 상이)

arXiv 1802.09477