1. 개요[편집]
| 신뢰 영역 정책 최적화 Trust Region Policy Optimization (TRPO) | |
|---|---|
| 제안 | Schulman, Levine, Abbeel, Jordan, Moritz (2015) |
| 뿌리 | Kakade & Langford (2002) 보수적 정책 반복 |
| 목적함수 | 중요도비 × 어드밴티지의 기댓값 (대리목적) |
| 제약 | 평균 KL ≤ δ (관례적으로 δ ≈ 0.01) |
| 해법 | 켤레기울기 + 피셔-벡터 곱 → 백트래킹 선형탐색 |
| 보장 | 벌점형 정리로 단조 개선 (실전 구현은 이 보장을 포기) |
| 후계 | PPO — 같은 아이디어를 클리핑으로 근사 |
신뢰 영역 정책 최적화(TRPO)는 정책을 한 번 갱신할 때 새 정책과 옛 정책 사이의 KL 발산이 정해진 반경 를 넘지 못하도록 묶어 두고, 그 안에서 대리목적함수를 최대화하는 온폴리시 강화 학습 알고리즘이다. 푸는 문제는 한 줄로 적힌다.
정책경사가 “어느 방향으로 밀까”를 답한다면 TRPO는 “얼마나 밀어도 안전한가”를 답한다. 지도학습에서는 스텝을 좀 세게 밟아 손실이 튀어도 다음 스텝에 되돌리면 그만이다. 강화학습은 그럴 수 없다 — 정책이 곧 데이터 수집기이므로, 한 번 망가진 정책은 망가진 데이터를 모아 오고 그 데이터로 다시 갱신되어 회복 불가능한 나락으로 간다. 학습 곡선이 잘 올라가다가 한 스텝에 바닥으로 꽂히는 그 유명한 그래프의 원인이 이것이고, TRPO는 그 사고를 제약조건으로 막겠다는 선언이다.
신뢰 영역 방법이라는 이름을 그대로 쓰지만 구조는 미묘하게 다르다. 고전 신뢰영역법은 목적함수를 2차 모형으로 근사하고 스텝 길이를 유클리드 반경으로 제한하는데, TRPO는 목적함수를 1차로 근사하고 제약 쪽에 2차 모형(피셔 계량)을 둔다. 즉 실체는 자연경사법이며, 여기에 이론적 정당화와 선형탐색이라는 안전장치가 얹힌 물건이다.
2. 성능 차이 보조정리 — 왜 대리목적인가[편집]
출발점은 카카데-랭포드(2002)의 항등식이다. 두 정책의 기대수익 차이는 새 정책의 궤적 위에서 잰 옛 정책의 어드밴티지로 정확히 표현된다.
성능 차이 보조정리(performance difference lemma)라 부른다. 읽으면 명료하다 — 새 정책이 옛 정책 기준으로 평균 이상의 행동만 고른다면 성능은 반드시 오른다. 문제는 다. 아직 굴려 보지도 않은 정책의 상태 방문 분포를 알 리가 없고, 이걸 알려면 결국 새 정책으로 환경을 돌려야 한다.
그래서 방문 분포만 옛 것으로 바꿔치기한다.
이것이 대리목적(surrogate objective)이다. 행동에 대한 합은 중요도 표본추출로 처리해 비율로 바꾸면 옛 정책의 표본만으로 추정된다. 는 에서 값도 기울기도 와 일치하지만, 멀어지면 상태 분포가 어긋나며 거짓말을 시작한다. “가까이 있는 동안만 믿을 수 있는 모형” — 신뢰영역이 필요한 이유가 여기서 나온다.
3. 단조 개선 정리[편집]
TRPO 논문의 핵심 정리는 그 거짓말의 크기를 KL로 잡아 준다. 라 할 때
가 성립한다. 우변을 라 두면 이고 이므로,
즉 하한을 개선하기만 하면 진짜 성능도 반드시 개선된다. 최적화 이론에서 말하는 MM 알고리즘(minorize-maximization)의 구조 그대로이며, 매 스텝 성능이 절대 떨어지지 않는다는 단조 개선 보장이 여기서 나온다. 강화학습판 벌점법이라고 봐도 좋다.
그런데 실전에서 이 벌점형을 그대로 쓰면 어떻게 될까. 면 이다. 가 만 단위로 커져 스텝이 거의 0으로 눌린다. 그래서 TRPO의 실제 구현은 이 정리를 포기한다. 벌점 을 하드 제약 로 바꾸고, 다루기 힘든 를 상태 평균으로 완화한다. 정리는 “KL을 통제하면 안전하다”는 감각을 주는 역할까지만 하고, 뒤는 하이퍼파라미터 에 넘긴다.1
4. 실제로는 어떻게 푸는가[편집]
제약이 걸린 비선형 최적화를 매 스텝 정직하게 푸는 건 무리다. 그래서 목적을 1차, 제약을 2차로 근사한다. , (= 피셔 정보 행렬)로 두면
닫힌 형태가 나온다. 남은 문제는 인데, 파라미터가 개만 돼도 는 원소가 개다. 만들지 않는다.
- 피셔-벡터 곱(FVP). 는 KL의 헤세-벡터 곱이므로 로 역전파 두 번에 얻어진다. 비용은 .
- 켤레기울기. 를 켤레기울기법으로 10~20회 반복해 근사한다. 를 행렬로 만들 필요 없이 FVP만 있으면 되므로, 이 조합이 실전 자연경사의 표준 레시피다(크리로프 부분공간법 참고). 수치적 안정을 위해 로 감쇠를 넣는 것은 선택이 아니라 필수다.
- 백트래킹 선형탐색. 2차 근사가 맞다는 보장이 없으므로 계산된 스텝을 그냥 쓰지 않는다. 로 줄여 가며 (가) 대리목적이 실제로 증가하고 (나) 실측 KL이 이하인 첫 스텝을 채택한다. 열 번쯤 줄여도 조건을 못 맞추면 그 스텝은 통째로 버린다. 이 선형탐색이 TRPO를 “이론이 예쁜 알고리즘”에서 “실제로 안 터지는 알고리즘”으로 만든 부분이다.
어드밴티지 는 보통 액터-크리틱의 GAE로 추정하고, 배치 단위 정규화는 사실상 필수다.
5. 왜 PPO가 실무를 먹었나[편집]
TRPO는 잘 작동한다. 그런데 값이 비싸다.
| 항목 | TRPO | PPO |
|---|---|---|
| 스텝당 연산 | CG 10~20회 × FVP(역전파 2회) | 미니배치 SGD 몇 에폭 |
| 구현 난이도 | 켤레기울기·FVP·선형탐색 직접 구현 | 손실 함수 한 줄 |
| 표본 재사용 | 배치당 1회 갱신 | 같은 배치로 3~10 에폭 |
| 구조 제약 | 드롭아웃·파라미터 공유와 궁합 나쁨 | 자유 |
| 이론 | 단조 개선 정리(완화판) | 헐거운 휴리스틱 |
특히 마지막에서 두 번째 줄이 뼈아프다. KL을 정확히 재려면 정책 평가가 결정론적이어야 해서 드롭아웃 같은 확률적 층을 넣기 곤란하고, 정책망과 가치망이 몸통을 공유하면 피셔 계산이 지저분해진다. 현대 심층망의 편의 기능 상당수를 포기해야 한다는 뜻이다.
PPO는 이 모든 걸 확률비를 잘라내는 것 하나로 대체한다.
인 표본은 가 을 넘어가면 목적이 평평해져 더 밀 이유가 없어지고, 이면 반대쪽이 잘린다. KL 반경이라는 전역 제약을 표본별 확률비 상한으로 바꾼 것이고, 가 관례다. 논문에는 적응형 KL 벌점판도 함께 제시됐지만 실전에서 살아남은 건 클리핑 쪽이다.
이론적으로는 명백한 퇴보다. 클리핑은 KL을 직접 제한하지 않으며, 여러 에폭을 돌면 신뢰영역을 벗어나는 경우가 실제로 관측된다. 그럼에도 PPO가 표준이 된 이유는 같은 계산 예산에서 더 많은 갱신을 돌릴 수 있어서 최종 성능이 대개 더 좋기 때문이다. 이 바닥에서 흔한 결말 — 보장이 있는 쪽이 아니라 벤치마크가 높은 쪽이 이긴다.2
6. 공학 시뮬레이션에서의 의미[편집]
플랜트 시뮬레이터를 환경으로 두고 제어기를 학습할 때 TRPO 계열이 주는 실질적 가치는 롤아웃 예산의 보호다. 한 에피소드가 CFD 해석 한 번이나 다물체 동역학 수십 초인 상황에서, 정책 붕괴 한 번은 곧 며칠치 계산 자원의 소각이다. “표본 효율이 나쁘지만 절대 망가지지 않는다”는 성질은 벤치마크 점수보다 청구서에서 먼저 값을 한다.
다만 오해하지 말 것. 신뢰영역이 보호하는 것은 최적화의 안정성이지 물리적 안전이 아니다. KL이 작아도 로봇은 넘어질 수 있다. 상태 제약이나 안전 요구사항이 명시적이라면 그건 제약 마르코프 결정 과정이나 모델 예측 제어 쪽 문제이고, TRPO의 로 대신할 수 없다. 이걸 헷갈려 “TRPO 썼으니 안전합니다”라고 보고서에 쓰면 곤란해진다.3
7. 관련 문서[편집]
- 정책경사 · 액터-크리틱 · 강화 학습
- 자연경사법 · 피셔 정보 · 쿨백-라이블러 발산
- 신뢰 영역 방법 · 벌점법 · 라그랑주 승수법
- 크리로프 부분공간법 · 헤세 행렬 · 자동 미분
- 최대 엔트로피 강화 학습 · 마르코프 결정 과정
- 모델 예측 제어 · 확률적 경사하강법
8. Footnotes[편집]
-
논문 본문도 이 점을 숨기지 않는다. 이론에서 유도된 벌점 계수를 그대로 쓰면 스텝이 “지나치게 작다”고 명시하고 하드 제약으로 갈아탄다. 강화학습 이론 논문의 흔한 패턴 — 정리는 알고리즘을 설계하는 데 쓰이고, 알고리즘을 정당화하는 데는 벤치마크가 쓰인다. ↩
-
PPO의 성능이 클리핑 자체보다 관측 정규화·어드밴티지 정규화·학습률 감쇠·직교 초기화 같은 “코드 디테일” 덕이라는 재현성 연구가 여럿 나왔다. 논문 알고리즘 박스만 보고 구현하면 성능이 안 나오는 이유이며, 이 바닥에서 논문보다 공식 구현 코드를 먼저 읽으라는 조언이 도는 배경이다. ↩
-
애초에 이라는 관례값에도 물리적 의미는 없다. 벤치마크에서 잘 되더라는 숫자다. 새 환경에서 학습이 정체되면 를 올리고, 학습 곡선이 계단식으로 무너지면 내린다 — 결국 난류 모델링 상수 튜닝과 같은 종류의 노동이다. ↩