ai theory

강화학습 기초 (20) - 높은 Reward만 보고 성공이라 말할 수 있을까

Junyoung Park · 2024-07-26 · 6 min

들어가며...

강화학습은 누적 Reward를 최대화한다.

J(π)=Eπ[t=0TγtRt+1]J(\pi) = \mathbb E_\pi \left[ \sum_{t=0}^{T} \gamma^tR_{t+1} \right]

그렇다면 Training reward가 높아지면 문제를 해결했다고 말할 수 있을까?

그렇지 않다. Agent는 우리가 마음속으로 원한 목표가 아니라 실제로 구현한 숫자를 최적화한다. Reward가 목표의 불완전한 Proxy라면 높은 점수를 얻으면서 의도와 다른 행동을 할 수 있다.

또 같은 Code도 Random seed에 따라 전혀 다른 학습 곡선을 만들 수 있다. Training 환경에서 높은 Reward를 얻고 새로운 환경에서는 실패할 수도 있다.

마지막 글에서는 Reward design, Reward hacking, 여러 Seed의 평가, Generalization과 Safety metric을 하나의 실험 Checklist로 정리한다.

Reward는 설명서가 아니라 숫자다

환경이 Agent에게 “안전하고 효율적으로 일을 끝내라”는 문장을 직접 전달하는 것은 아니다. 보통 여러 Scalar를 합쳐 Reward를 만든다.

Rt=w1Rtprogress+w2Rtsuccessw3Ctcollisionw4CtenergyR_t = w_1R_t^{\text{progress}} + w_2R_t^{\text{success}} - w_3C_t^{\text{collision}} - w_4C_t^{\text{energy}}

Weight 하나가 바뀌면 최적 행동도 바뀔 수 있다.

진행 보상을 너무 크게 주면 Goal에 도착하지 않고 진행으로 판정되는 행동만 반복할 수 있다. 충돌 Penalty가 너무 크면 Agent가 아무것도 하지 않는 것이 안전한 최적해가 될 수 있다.

Reward를 설계할 때는 “좋아 보이는 항을 넣었다”보다 “이 식을 문자 그대로 최대화하면 어떤 행동이 가능한가?”를 물어야 한다.

Sparse reward와 Dense reward

Goal에 도착했을 때만 +1+1을 주는 Sparse reward는 의도가 분명하지만 탐색이 어렵다.

Rt={1,goal reached0,otherwiseR_t = \begin{cases} 1,&\text{goal reached} \\ 0,&\text{otherwise} \end{cases}

Goal과 가까워질 때마다 Reward를 주는 Dense shaping은 학습 Signal을 풍부하게 만든다.

Rtshape=d(St,goal)d(St+1,goal)R_t^{\text{shape}} = d(S_t,\text{goal}) - d(S_{t+1},\text{goal})

하지만 Distance가 줄어드는 행동이 실제 Task completion과 항상 같지는 않다. 장애물을 돌아가기 위해 잠시 멀어져야 할 수도 있다.

좋은 Shaping은 탐색을 돕되 원래 문제의 최적 Policy를 함부로 바꾸지 않아야 한다. Potential-based shaping은 이 성질을 다루는 대표적인 방법이다.

Reward hacking과 Specification gaming

Agent가 Reward function의 빈틈을 이용해 높은 점수를 얻는 현상을 Reward hacking 또는 Specification gaming이라고 부른다.

예를 들어 Course를 완주하면 +10+10, 중간 Bonus를 먹을 때마다 +1+1을 준다고 하자. Bonus가 다시 생기고 Episode가 끝나지 않는다면 Agent는 Finish line으로 가지 않고 Bonus 구간을 계속 돌 수 있다.

Agent는 Finish라는 사람의 의도보다 반복 가능한 Bonus라는 구현된 Reward를 더 정확하게 최적화할 수 있다.

이것은 Agent가 말을 안 들은 것이 아니다. 오히려 우리가 적은 식을 너무 충실히 따른 결과다.

Reward를 배포하기 전에 다음 질문을 해볼 수 있다.

  1. 어떤 행동을 반복하면 Reward를 계속 얻을 수 있는가?
  2. 성공하지 않고도 성공 Signal의 일부를 만들 수 있는가?
  3. Penalty를 피하기 위해 아무것도 하지 않는 해가 생기는가?
  4. Episode 경계나 Sensor error를 이용할 수 있는가?
  5. Reward model이 보지 못한 이상한 출력에서 높은 Score를 줄 수 있는가?

Terminated와 Truncated를 구분하기

Episode가 끝나는 이유도 Target에 영향을 준다.

  • Terminated: Goal, Failure처럼 MDP가 실제 Terminal state에 도착했다.
  • Truncated: 시간 제한이나 외부 사정으로 Episode를 잘랐다.

진짜 Terminal에서는 미래 Value가 00이다.

Yt=Rt+1Y_t=R_{t+1}

시간 제한으로 잘렸지만 State가 계속될 수 있다면 Bootstrap을 남겨야 할 수 있다.

Yt=Rt+1+γV(St+1)Y_t = R_{t+1} + \gamma V(S_{t+1})

둘을 하나의 Done flag로 처리하면 Time limit에 도착한 좋은 State의 Value를 낮게 추정할 수 있다. Evaluation에서도 “실패해서 끝남”과 “시간이 끝나 잘림”을 따로 세어야 한다.

한 번의 좋은 Run은 결과가 아니다

Neural Network initialization, Environment randomness, Replay sampling, Action sampling에 따라 같은 Algorithm도 다른 결과를 낸다.

Seed 하나에서 높은 Score가 나왔다고 그 Algorithm의 일반적인 성능이라고 할 수 없다.

여러 Seed의 분산은 숨길 Noise가 아니라 Algorithm의 신뢰성을 설명하는 실험 결과다.

최소한 다음을 함께 보고해야 한다.

  • 사용한 Random seed 수
  • 각 Seed의 동일한 Training budget
  • Mean 또는 Median
  • Standard deviation, Standard error, Confidence interval 같은 불확실성
  • Best run이 아닌 모든 Run의 분포

Seed 수가 적을 때 Mean만 적으면 한두 개 Outlier에 크게 흔들릴 수 있다. Learning curve의 어느 지점을 비교하는지, 최종 몇 Episode를 평균내는지도 고정해야 한다.

Training curve와 Evaluation curve를 나눈다

Training 중에는 Exploration noise가 포함될 수 있다. PPO의 Stochastic policy나 DQN의 ϵ\epsilon-greedy Action으로 얻은 Return은 실제 배포 Policy의 성능과 다를 수 있다.

평가할 때는 일정 간격마다 Policy를 고정하고 별도의 Episode를 실행한다.

  • Training update를 하지 않는다.
  • 평가 Episode 수를 고정한다.
  • 같은 Evaluation protocol을 모든 Method에 사용한다.
  • 필요하면 Deterministic action과 Stochastic action을 각각 보고한다.
  • Evaluation environment는 Training normalization이나 Data leakage를 점검한다.

Reward 외에 무엇을 측정할까

하나의 Scalar reward는 여러 행동을 압축한다. 따라서 실제 관심사를 별도 Metric으로 펼쳐보는 것이 좋다.

Success rate

Episode return이 높아도 Task를 실제로 끝내지 못할 수 있다. 성공 조건을 별도로 계산한다.

Safety와 Constraint violation

충돌 횟수, 제한 구역 진입, 위험 Action 비율, 최대 Force처럼 안전 관련 Event를 센다.

Generalization

Training에서 보지 않은 Initial state, Layout, Dynamics, Noise에서 평가한다.

Sample efficiency

최종 Score뿐 아니라 같은 성능에 도달하는 데 필요한 Environment step을 비교한다.

Compute와 Wall-clock

환경 Step 수가 같아도 Model size와 Update 횟수에 따라 실제 비용은 다르다. GPU 시간, Wall-clock, Memory를 함께 볼 수 있다.

Robustness와 Failure case

평균 아래에 숨은 실패 유형을 직접 분류한다. 어떤 State에서 실패가 집중되는지 확인한다.

높은 Reward는 평가 항목 하나다. 성공, 안전, 일반화, Data와 Compute 비용을 함께 봐야 실제 행동을 설명할 수 있다.

Train과 Test 환경을 분리한다

Supervised learning처럼 RL에도 Generalization 평가가 필요하다.

MtrainMeval\mathcal M_{\text{train}} \neq \mathcal M_{\text{eval}}

완전히 다른 Task를 주라는 뜻은 아니다. 같은 목표 안에서 다음 요소를 바꿀 수 있다.

  • 시작 위치
  • 장애물 배치
  • Dynamics parameter
  • 관측 Noise
  • Reward에 직접 나타나지 않은 배경 요소

Evaluation setting을 반복해서 보며 Hyperparameter를 고르면 사실상 Validation set이 된다. 최종 Test set을 따로 남겨두는 편이 좋다.

공정한 비교를 위한 Checklist

새 Algorithm A와 Baseline B를 비교한다고 하자. 다음을 맞춰야 한다.

  1. Environment step budget이 같은가?
  2. Network 크기와 Observation preprocessing이 같은가?
  3. Hyperparameter tuning budget이 비슷한가?
  4. Evaluation episode와 Seed가 충분한가?
  5. Mean뿐 아니라 분산과 개별 Run을 공개했는가?
  6. 실패한 Seed를 임의로 제외하지 않았는가?
  7. Training reward와 Held-out evaluation을 구분했는가?
  8. Sample efficiency와 Compute efficiency를 혼동하지 않았는가?

좋은 결과는 높은 숫자 하나보다 그 숫자가 어떤 조건에서 얼마나 반복되는지 설명할 수 있어야 한다.

이 시리즈를 마치며

첫 글에서는 Agent, Environment, State, Action, Reward에서 시작했다. 그 뒤 MDP, Bellman equation, Dynamic Programming, Monte Carlo, TD, Control, Exploration을 거쳤다.

Table이 커지는 지점에서 Function approximation과 DQN을 만났고, Policy를 직접 학습하는 REINFORCE, Actor-Critic, PPO로 이어졌다. Model-based RL, Offline RL, Decision Transformer를 통해 경험을 만드는 방법과 Data의 범위를 살펴봤다. 마지막으로 Preference learning과 Reward design까지 왔다.

Algorithm 이름은 많지만 반복되는 질문은 비슷했다.

  • 어떤 경험에서 학습하는가?
  • Target은 실제 Return인가, Bootstrap estimate인가?
  • Policy를 직접 배우는가, Value를 통해 얻는가?
  • 새 Data를 만들 수 있는가?
  • 최적화한 Reward가 실제 의도를 나타내는가?

새 논문을 볼 때도 이 다섯 질문부터 적어보면 낯선 식의 위치를 잡기 쉬울 것 같다.

이번 글에서 기억할 것

강화학습의 성공은 Training reward 하나가 아니라, 의도한 행동을 여러 조건과 Seed에서 안전하고 반복적으로 만드는지로 평가해야 한다.

  1. Agent는 사람의 의도가 아니라 구현된 Reward를 최적화한다.
  2. Dense shaping은 학습을 돕지만 새로운 Loophole을 만들 수 있다.
  3. Terminated와 Truncated는 Bootstrap과 평가에서 구분해야 한다.
  4. 여러 Seed의 Mean과 불확실성을 함께 보고해야 한다.
  5. Reward 외에 Success, Safety, Generalization, Sample efficiency, Compute를 측정한다.
  6. Training environment와 Held-out evaluation environment를 분리한다.

참고 자료