20장 - 강화 학습 디버깅과 진단

🏷️ "cs229" "machine-learning" "book"

20장. 강화 학습 디버깅과 진단

이번 강의에서는 강화 학습 시스템의 디버깅과 진단 방법을 다루고, 직접 정책 탐색(direct policy search) 알고리즘인 REINFORCE를 소개한다. 강화 학습 프로젝트에서 시뮬레이터, 보상 함수, RL 알고리즘 중 무엇을 개선해야 하는지 체계적으로 판단하는 방법을 배우며, 정책 탐색의 장단점과 적용 분야를 살펴본다.

20-cs229-policy-search.png

20.1 강화 학습 프로젝트의 구조

강화 학습으로 실제 시스템을 제어하려면 보통 다음과 같은 단계를 밟는다.

  1. 시뮬레이터 구축: 실제 시스템(예: 헬리콥터)의 모델 또는 시뮬레이터를 만든다. 실제 장비로 직접 실험하면 비용이 크고 위험하므로, 시뮬레이터에서 먼저 정책을 학습한다.
  2. 보상 함수 설계: 원하는 행동을 수치적으로 표현하는 보상 함수 \(R(s, a)\)를 정의한다. 예를 들어, 헬리콥터가 제자리에 머무르게 하려면 목표 위치와의 거리에 대한 이차 함수를 사용할 수 있다. 그러나 공격적인 곡예 비행을 원한다면, "좋은 회전"이 무엇인지 정의하기가 매우 까다롭다.
  3. RL 알고리즘 실행: 유한 지평 MDP 설정에서 보상의 합 \(\sum_{t=0}^{T} R(s_t, a_t)\)를 최대화하는 정책 \(\pi\)를 학습한다.

처음 이 과정을 수행하면, 학습된 제어기가 인간 조종사보다 훨씬 못한 결과를 내는 것이 일반적이다. 이때 핵심 질문은 다음과 같다.

다음에 무엇을 해야 하는가?

선택지는 세 가지다.

선택지

설명

시뮬레이터 개선

시뮬레이터가 실제 시스템을 충분히 정확하게 모사하지 못할 수 있다

보상 함수 수정

보상 함수가 실제로 원하는 행동을 제대로 포착하지 못할 수 있다

RL 알고리즘 개선

이산화(discretization) 조정, 특성 선택, 함수 근사기 변경(선형 → 신경망) 등


20.2 디버깅을 위한 체계적 진단법

강화 학습 시스템이 기대만큼 작동하지 않을 때, 다음 세 가지 조건이 모두 참이라면 학습된 제어기는 잘 작동해야 한다.

  1. 시뮬레이터가 실제 시스템을 정확히 모사한다.
  2. RL 알고리즘이 보상 함수를 실제로 최대화하고 있다.
  3. 보상 함수를 최대화하는 것이 실제로 원하는 행동에 대응한다.

이 세 가지 중 어느 것이 문제인지 파악하기 위해 다음과 같은 진단법을 사용한다.

진단 1: 시뮬레이터 정확도 검증

학습된 정책이 시뮬레이션에서는 잘 작동하지만 실제 시스템에서는 잘 작동하지 않는다면, 문제는 시뮬레이터에 있다. 이 경우 시뮬레이터를 개선해야 한다. 선형 모델 \(s_{t+1} = As_t + Ba_t\)를 사용하고 있다면, 더 많은 데이터를 수집하거나 비선형 모델로 전환하는 것을 고려한다.

진단 2: RL 알고리즘 vs 보상 함수

시뮬레이터가 충분히 정확하다고 판단되면, 다음 단계로 학습된 정책과 인간 전문가의 성능을 비교한다. 인간 제어 정책을 \(\pi_{\text{human}}\)이라 하자.

\[\text{payoff}(\pi) = \sum_{t=0}^{T} R(s_t, a_t)\]


20.3 병목의 이동: 실제 프로젝트의 흐름

자율 헬리콥터 비행과 같은 대규모 머신러닝 프로젝트에서, 해결해야 할 병목은 프로젝트 진행에 따라 계속 이동한다. 전형적인 흐름은 다음과 같다.

  1. 초기 2개월: 진단 결과 시뮬레이터가 부정확하다고 판명된다. 시뮬레이터 개선에 집중한다.
  2. 중기: 시뮬레이터가 충분히 정확해지면, 이번에는 보상 함수가 원하는 행동을 제대로 포착하지 못한다는 것이 드러난다. 보상 함수 개선에 집중한다.
  3. 후기: 보상 함수가 충분히 좋아지면, RL 알고리즘 자체의 성능이 병목으로 드러난다.

매번 현재 문제를 해결하면 다음으로 가장 중요한 문제가 드러나고, 이를 반복하여 결국 원하는 수준의 성능에 도달한다. 팀이 모여 진단 결과를 살펴보고, 증거에 기반하여 다음 단계를 토론하는 과정이 핵심이다.

진단에 따라 체계적으로 우선순위를 정하는 팀이, 직감에 의존하여 작업 방향을 결정하는 팀보다 훨씬 효율적이다.

현실에서는 진단 결과가 항상 명확하지 않다. "시뮬레이터가 완벽하지는 않지만 대략 괜찮고, 보상 함수가 더 문제인 것 같다"와 같은 판단이 필요할 수 있다. 따라서 이 진단법은 엄격한 공식이라기보다, 팀의 토론과 의사결정을 이끄는 프레임워크로 사용해야 한다.


20.4 강화 학습의 응용 사례

강화 학습의 성공적 응용 사례로 자율 헬리콥터 비행이 있다. 스탠퍼드 대학에서 Pieter Abbeel, Adam Coates 등이 수행한 프로젝트에서, 소형 무선 조종 헬리콥터가 거꾸로 비행하고, 공중에서 제자리에 머물면서 마치 무작위로 회전하는 것처럼 보이는 "카오스 기동"을 수행했다. 이 헬리콥터는 세계 최고 수준의 인간 조종사가 할 수 있는 곡예 비행을 모두 재현했으며, 일부 기동에서는 인간 조종사보다 더 뛰어난 성능을 보였다.

또 다른 사례로 4족 보행 로봇이 있다. Zico Kolter(현 카네기 멜론 대학 교수)의 연구에서, 로봇 개가 장애물이 있는 지형을 넘어가는 법을 학습했다. 이 로봇은 가치 함수 근사를 사용하여, 3차원 지형 데이터를 입력받아 발을 디딜 최적의 위치를 결정했다. 가치 함수는 절벽 가장자리에 발을 딛는 것이 위험하다는 것을 학습하여, 그런 위치를 피하도록 유도했다.


20.5 직접 정책 탐색 (Direct Policy Search)

기존 접근법과의 차이

지금까지 배운 강화 학습 접근법은 간접적 방식이었다. 먼저 가치 함수 \(V^*\)를 추정하고, 이를 이용하여 최적 정책 \(\pi^*\)를 도출하는 것이다. 가치 반복(value iteration)과 정책 반복(policy iteration) 모두 이 철학을 따른다.

직접 정책 탐색은 가치 함수 추정이라는 중간 단계 없이, 좋은 정책을 직접 찾는 방식이다. 정책의 함수 형태를 먼저 정하고, 그 매개변수를 최적화한다.

정책의 매개변수화

로지스틱 회귀에서 가설 함수의 형태를 \(h_\theta(x) = \sigma(\theta^T x)\)로 정한 것처럼, 직접 정책 탐색에서도 정책의 함수 형태를 먼저 정해야 한다.

도립진자(inverted pendulum) 문제를 예로 들자. 자유 힌지 위에 막대가 세워져 있고, 수레를 왼쪽 또는 오른쪽으로 가속하여 막대가 쓰러지지 않도록 균형을 잡아야 한다.

상태 벡터를 \(s = (1, x, \dot{x}, \phi, \dot{\phi})\)로 정의한다. 여기서 \(x\)는 수레의 위치, \(\dot{x}\)는 수레의 속도, \(\phi\)는 막대의 기울기 각도, \(\dot{\phi}\)는 각속도다.

확률적 정책 (Stochastic Policy)

직접 정책 탐색에서는 확률적 정책을 사용한다. 매 시간 단계에서 정책이 각 행동의 확률을 출력하고, 난수 생성기를 사용하여 행동을 선택한다.

\[\pi_\theta(s, a = \text{right}) = \frac{1}{1 + e^{-\theta^T s}}\]

\[\pi_\theta(s, a = \text{left}) = 1 - \frac{1}{1 + e^{-\theta^T s}}\]

여기서 \(\theta\)는 정책의 매개변수 벡터다.

직관적 이해

매개변수를 \(\theta = (0, 0, 0, 1, 0)\)으로 설정하면, \(\theta^T s = \phi\)가 된다. 이 경우 정책은 "막대가 오른쪽으로 기울어질수록 오른쪽으로 가속할 확률을 높인다"는 단순한 규칙이 된다. 이것은 완벽한 정책은 아니지만, 전혀 비합리적이지도 않다.

\(\theta = (0, -0.5, 0, 1, 0)\)으로 바꾸면, 위치 \(x\)에 가중치 \(-0.5\)가 곱해진다. 수레가 오른쪽 끝에 가까울수록 오른쪽으로 가속할 확률이 낮아져, 수레가 레일에서 떨어지는 것을 방지한다. 이렇게 다섯 개의 숫자를 적절히 조합하면 위치, 속도, 각도, 각속도를 모두 고려하는 정교한 정책을 만들 수 있다.


20.6 REINFORCE 알고리즘

목표 함수

직접 정책 탐색의 목표는 다음을 최대화하는 매개변수 \(\theta\)를 찾는 것이다.

\[\max_\theta \; \mathbb{E}\left[\sum_{t=0}^{T} R(s_t, a_t) \;\middle|\; \pi_\theta\right]\]

여기서 \(s_0\)는 고정된 초기 상태이거나, 초기 상태에 대한 고정된 분포에서 추출된다. 이것은 가치 함수 기반 접근법과의 중요한 차이점이다. 가치 함수를 추정할 때는 모든 상태에 대해 동시에 최적인 정책을 찾았지만, 직접 정책 탐색에서는 특정 초기 상태(또는 초기 분포)에 대해 기대 보상을 최대화한다.

기대 보상의 전개

유도를 간결하게 하기 위해 \(T = 1\)로 설정한다. 기대 보상은 다음과 같이 전개된다.

\[\mathbb{E}\left[R(s_0, a_0) + R(s_1, a_1)\right] = \sum_{s_0, a_0, s_1, a_1} P(s_0) \cdot \pi_\theta(s_0, a_0) \cdot P(s_1 \mid s_0, a_0) \cdot \pi_\theta(s_1, a_1) \cdot \text{payoff}\]

여기서 \(\text{payoff} = R(s_0, a_0) + R(s_1, a_1)\)이다.

알고리즘 절차

REINFORCE 알고리즘의 각 반복은 다음과 같다.

  1. 현재 확률적 정책 \(\pi_\theta\)에 따라 행동을 선택하며 MDP를 \(T\) 시간 단계 동안 실행하여, 상태-행동 궤적 \(s_0, a_0, s_1, a_1, \ldots, s_T, a_T\)를 얻는다.
  2. 총 보상(payoff)을 계산한다: \(\text{payoff} = \sum_{t=0}^{T} R(s_t, a_t)\)
  3. 매개변수를 다음과 같이 갱신한다:

\[\theta \leftarrow \theta + \alpha \cdot \left[\sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(s_t, a_t)\right] \cdot \text{payoff}\]

여기서 \(\alpha\)는 학습률이다.

확률적 경사 상승법으로서의 REINFORCE

REINFORCE는 확률적 경사 상승법(stochastic gradient ascent) 알고리즘이다. 매 반복에서의 갱신은 확률적이다. 상태-행동 궤적이 무작위(상태 전이 확률과 확률적 정책에 의해)이기 때문이다. 그러나 갱신의 기댓값은 정확히 목표 함수의 기울기 방향과 일치한다.

이를 증명하기 위해, 기대 보상의 \(\theta\)에 대한 미분을 계산한다. 곱의 미분 법칙을 적용하면:

\[\nabla_\theta \mathbb{E}[\text{payoff}] = \sum_{s_0, a_0, s_1, a_1} P(s_0, a_0, s_1, a_1) \cdot \left[\sum_{t=0}^{T} \frac{\nabla_\theta \pi_\theta(s_t, a_t)}{\pi_\theta(s_t, a_t)}\right] \cdot \text{payoff}\]

\(\frac{\nabla_\theta \pi_\theta(s_t, a_t)}{\pi_\theta(s_t, a_t)} = \nabla_\theta \log \pi_\theta(s_t, a_t)\)이므로, 이는 다음과 같다.

\[\nabla_\theta \mathbb{E}[\text{payoff}] = \mathbb{E}\left[\left(\sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(s_t, a_t)\right) \cdot \text{payoff}\right]\]

따라서 REINFORCE의 매 반복에서의 갱신은 기댓값 기준으로 기대 보상의 기울기 방향과 정확히 일치한다. 학습률이 충분히 작으면, 많은 반복에 걸쳐 평균적으로 올바른 방향으로 이동하게 된다. 이것은 선형 회귀의 확률적 경사 하강법이 noisy한 경로를 따르지만 결국 최솟값 근처로 수렴하는 것과 같은 원리다.

확률적 정책을 사용하는 이유

결정론적 정책(왼쪽 또는 오른쪽만 출력)은 불연속 함수이므로 미분할 수 없다. 확률적 정책은 행동 확률을 \(\theta\)의 연속 함수로 표현하므로, 미분이 가능하고 경사 상승법을 적용할 수 있다. 이 결과는 시그모이드 함수뿐 아니라, 소프트맥스 등 미분 가능한 모든 형태의 확률적 정책에 대해 성립한다.


20.7 연속 행동 공간으로의 확장

행동이 이산적(왼쪽/오른쪽)이 아니라 연속적인 경우에도 직접 정책 탐색을 적용할 수 있다. 예를 들어, 행동 \(a\)가 가속력의 크기이거나 자율주행차의 조향 각도처럼 실수값인 경우를 생각하자.

간단한 정책을 다음과 같이 정의할 수 있다.

\[a = \theta^T s + \epsilon, \quad \epsilon \sim \mathcal{N}(0, \sigma^2)\]

학습 과정에서 가우시안 잡음 \(\epsilon\)을 추가하여 확률적 정책으로 만들면, REINFORCE와 같은 경사 기반 알고리즘을 동일하게 적용할 수 있다. 학습이 완료된 후 실제 배치 시에는 잡음을 제거하고 \(a = \theta^T s\)만 사용할 수 있다.


20.8 직접 정책 탐색의 장단점

장점 1: 부분 관측 마르코프 결정 과정 (POMDP)

**부분 관측 마르코프 결정 과정(Partially Observable MDP, POMDP)**은 매 시간 단계에서 전체 상태를 관측할 수 없는 환경이다. 도립진자 예제에서 상태 공간이 \((x, \dot{x}, \phi, \dot{\phi})\)이지만, 센서가 위치 \(x\)와 각도 \(\phi\)만 측정할 수 있고 속도와 각속도는 알 수 없는 경우가 이에 해당한다. 게다가 센서 측정치에 잡음이 포함될 수도 있다.

\[\text{관측} \; y = \begin{pmatrix} x \\ \phi \end{pmatrix} + \text{noise}\]

가치 함수 기반 접근법을 POMDP에 적용하려는 시도가 학계에 많았지만, 그 알고리즘들은 매우 복잡하고 실제로 널리 사용되지 못했다. 설령 \(V^*\)\(\pi^*\)를 알더라도, 현재 상태를 정확히 모르기 때문에 \(\pi^*(s)\)를 계산할 수 없다.

반면 직접 정책 탐색에서는 관측값을 그대로 정책의 입력으로 사용하면 된다.

\[\pi_\theta(\text{right} \mid y) = \frac{1}{1 + e^{-\theta^T y}}\]

REINFORCE 알고리즘의 프레임워크에서 이 정책을 사용하는 데 아무런 문제가 없다. 직접 정책 탐색은 부분 관측 환경에서도 자연스럽게 작동한다.

더 정교한 접근으로는, 과거의 관측 이력을 사용하여 현재 상태를 추정하는 칼만 필터(Kalman filter) 등의 알고리즘을 먼저 적용하고, 추정된 전체 상태 벡터를 정책의 특성으로 사용하는 방법이 있다.

장점 2: 단순한 정책이 존재하는 문제

직접 정책 탐색이 특히 잘 작동하는 또 다른 상황은 \(\pi^*\)\(V^*\)보다 단순한 경우다. 이것은 주로 **저수준 제어 문제(low-level control tasks)**에서 성립한다.

저수준 제어 문제란, 숙련된 인간이 조이스틱을 잡고 순간적인 판단으로 제어할 수 있는 유형의 문제다. 헬리콥터 호버링, 도립진자 균형 잡기, 직선 도로에서의 차량 조향 등이 이에 해당한다. 이런 문제에서는 상태에서 행동으로의 매핑이 비교적 단순한 함수(심지어 선형 함수)로 잘 근사될 수 있어, 직접 정책 탐색이 유망하다.

단점: 가치 함수 근사가 더 적합한 경우

반면, 체스나 바둑처럼 여러 단계를 앞서 계획해야 하는 다단계 추론(multi-step reasoning) 문제에서는 가치 함수 근사 방식이 더 유리하다. 자율주행에서도 단순히 차선을 유지하는 것은 저수준 제어이지만, 앞차를 추월하면서 반대편 차량과 자전거, 보행자를 고려하는 것은 다단계 추론에 해당한다.

REINFORCE의 효율성 문제

REINFORCE 알고리즘은 정확한 기울기 추정을 기댓값으로는 제공하지만, 분산이 매우 크다. 기울기 추정치가 극도로 noisy하기 때문에, 수렴하려면 수백만 내지 수천만 번의 반복이 필요하고 매우 작은 학습률을 사용해야 한다. 알고리즘은 작동하지만 효율성이 낮은 편이다.

하이브리드 접근법

실제로 가장 인상적인 성과는 두 접근법을 결합할 때 나온다. DeepMind의 AlphaGo가 대표적인 사례로, 직접 정책 탐색과 가치 함수 근사의 아이디어를 결합하여 바둑이라는 대규모 문제를 매우 높은 수준으로 해결했다.

자율 헬리콥터 비행에서도, 단순한 호버링이나 거꾸로 비행은 직접 정책 탐색 알고리즘으로 구현했지만, 더 복잡한 곡예 기동에는 가치 함수 근사 기반의 방법이 필요했다.


20.9 강화 학습의 현재와 미래 응용

강화 학습은 다양한 분야에서 활발히 적용되고 있으며, 앞으로 더 많은 분야로 확장될 것으로 기대된다.

분야

응용 사례

게임 플레이

체커, 체스, 바둑(AlphaGo), Atari 게임

로봇 공학

헬리콥터 비행, 4족 보행, 산업용 대형 기계 제어

공장 자동화

전체 공장 배치 및 공정 최적화

대화 시스템

챗봇, AI 기반 진로 상담 시스템

의료

복잡한 치료 계획 수립 (검사 → 결과에 따른 다음 단계 결정)

금융

대량 주식 매매 시 시장 영향 최소화 (다크 풀 거래)

특히 의료 분야에서의 응용이 주목할 만하다. 환자에게 혈액 검사를 시행하고, 결과에 따라 조직 검사를 할지, 약물을 처방하고 2주 후 경과를 관찰할지 등 복잡한 순차적 의사결정이 필요한데, 이것이 바로 강화 학습이 다루는 문제의 본질이다.

로봇 공학 분야에서는 앞으로 몇 년간 강화 학습의 응용이 크게 증가할 것으로 예상된다. 현재는 성공 사례가 제한적이지만, 대형 기계를 제조하는 기업들이 점점 더 많이 강화 학습을 도입하고 있다.


20.10 적대적 학습에 관하여

강화 학습과 적대적 학습(adversarial learning)은 서로 구별되는 분야다. 적대적 학습에서는 입력 이미지의 픽셀 값을 인간의 눈에는 보이지 않을 정도로 미세하게 조작하여, 학습 알고리즘이 완전히 잘못된 분류를 하도록 만들 수 있다.

이러한 기법은 이미 현실 세계에서 공격자들이 사용하고 있다. 스팸 방지, 사기 방지, 민주주의 훼손 방지 등의 알고리즘을 속이기 위해 적대적 기법이 동원되고 있으며, 이러한 공격에 대응하는 것도 머신러닝 실무자의 중요한 과제다.


핵심 정리

개념

핵심

RL 디버깅 진단

시뮬레이터, RL 알고리즘, 보상 함수 중 어디가 병목인지 체계적으로 판별

시뮬레이터 검증

시뮬레이션에서는 잘 작동하나 실제에서 안 되면 시뮬레이터가 문제

보상 함수 검증

RL이 보상을 잘 최대화하지만 원하는 행동이 아니면 보상 함수가 문제

직접 정책 탐색

가치 함수 추정 없이 정책을 직접 최적화

확률적 정책

행동 확률을 매개변수의 연속 함수로 표현하여 미분 가능하게 함

REINFORCE

확률적 경사 상승법 기반의 정책 탐색 알고리즘; 기댓값은 정확하나 분산이 큼

POMDP

부분 관측 환경; 직접 정책 탐색이 자연스럽게 적용됨

저수준 제어

단순 정책이 존재하는 문제; 직접 정책 탐색에 적합

다단계 추론

체스, 바둑 등 여러 단계 계획 필요; 가치 함수 근사가 더 적합

하이브리드

AlphaGo처럼 정책 탐색과 가치 함수 근사를 결합하면 최고 성과


마무리: CS229 강의 시리즈를 마치며

이 장을 끝으로 CS229 머신러닝 강의 시리즈의 모든 내용을 다루었다. 지도 학습에서 시작하여 학습 이론, 딥러닝, 비지도 학습(K-평균, PCA, EM 혼합 가우시안, 요인 분석, 주성분 분석), 그리고 강화 학습(가치 함수 접근법, 적합 가치 반복, 정책 탐색)까지 폭넓은 머신러닝 알고리즘을 살펴보았다.

Andrew Ng 교수는 마지막 강의에서 수강생들에게 다음과 같은 당부를 남겼다.

여러분이 이 강좌에서 배운 기술을 갖춘 사람의 수는 매우 적고, 세상에서 머신러닝으로 해결할 수 있는 가치 있는 프로젝트는 넘쳐난다. 이 기술을 가지고 나가서 의미 있는 일을 하길 바란다. 사업을 세우고 돈을 벌 수도 있고, 기초 연구를 추진할 수도 있다. 무엇을 하든 다른 사람에게 도움이 되는 방식으로 하길 바란다. 개인의 사생활을 존중하고, 투명하고 개방적이며, 궁극적으로 인류의 발전에 기여하는 일을 해주길 바란다.

이전 장: 19장 - 보상 모델과 선형 동적 시스템

이 장은 CS229 머신러닝 강의 시리즈의 마지막 장입니다.