콘텐츠로 이동
Study Note강화학습

10. 평가 — 잘된 건지 어떻게 아나

강화학습에서 가장 흔한 거짓말은 “시드 세 개 돌려 봤더니 좋아졌습니다” 이다

이 장에서 처음 나오는 말6개
시드 분산Seed Variance
같은 코드·같은 설정인데 난수 시드만 달라 결과가 크게 갈리는 현상. 강화학습에서는 예외가 아니라 기본이다.
평가 환경Evaluation Environment
학습에 쓰지 않은 조건으로 성능을 재는 별도 환경. 학습 환경에서 잰 숫자는 성능이 아니다.
IQMInterquartile Mean · 사분위 평균
상하위 25%를 버리고 가운데 50%를 평균낸 값. 여러 과제의 점수를 견고하게 집계할 때 유용하다.
부트스트랩 신뢰구간Bootstrap CI
적은 표본에서 재표집으로 불확실성 구간을 구하는 방법. 시드가 적을 때 쓰는 표준 처방.
일반화Generalization
학습에서 안 본 조건(지형·종목·기간)에서도 되는가. 강화학습은 학습 환경 자체에 과적합하기 쉽다.
절제 실험Ablation
부품을 하나씩 빼 보며 무엇이 실제로 기여했는지 가리는 실험.

문제 — 같은 코드가 다른 결과를 낸다

섹션 제목: “문제 — 같은 코드가 다른 결과를 낸다”

강화학습은 시드 하나만 바꿔도 성공과 완전 실패가 갈린다. 데이터를 정책 자신이 만들기 때문이다 — 초반에 운 좋게 좋은 영역을 밟은 실행과 못 밟은 실행은 다른 데이터셋으로 학습한 것이나 마찬가지다.

같은 설정, 시드만 다르게 10번:
시드 0 ████████████████████ 980
시드 1 ███████████████ 740
시드 2 █ 35 ← 학습 실패
시드 3 ██████████████████ 890
시드 4 ██ 60 ← 학습 실패
…
"평균 600" 이라는 한 숫자가 이 그림을 통째로 감춘다

시드 3개만 뽑아 좋은 것만 보고하면 어떤 결론이든 만들 수 있다. 강화학습 논문 재현이 어렵다는 평판의 큰 몫이 여기서 나온다.

항목학습 환경평가 환경
탐색확률적 행동, 엔트로피 보너스과제에 따라 결정적 평균 또는 확률적 정책 그대로. 프로토콜을 고정
무작위화도메인 랜덤화 켠다평가용 조건으로 고정하거나 다른 범위
정규화통계를 계속 갱신갱신을 멈추고 학습 시점 통계 사용
시작 조건학습용 분포안 본 초기 조건을 포함
축최소권장
학습 시드510 이상
시드당 평가 에피소드1030~100 (환경 무작위성이 크면 더)
평가 시점학습 끝학습 중 주기적으로 + 끝

시드 수를 늘리는 것이 하이퍼파라미터를 하나 더 만지는 것보다 대개 더 값지다. 시드 3개로 얻은 작은 차이는 불확실성을 구분하기에 대개 부족하다.

시드별 결과는 분포다. 평균 하나만 보고하면 위 그림의 실패 시드와 불확실성이 가려진다. 그렇다고 평균을 버릴 이유도 없다. 실험 설계에 맞는 중심값과 구간을 함께 보여 준다.

통계성격언제
평균기대 성능을 직접 요약하지만 이상치에 민감단일 과제에서 원자료·구간과 함께
중앙값견고하지만 꼬리와 실패율 정보를 덜 반영보조 지표
IQM (사분위 평균)상하위 25%를 버린 평균여러 과제·실행을 집계할 때 유용
부트스트랩 신뢰구간표본 설계에 맞춰 불확실성을 구간으로중심값·차이와 함께 보고
성능 프로파일“임계값 x 이상을 낸 실행의 비율” 곡선방법 간 비교
개선 확률·쌍별 차이같은 과제·시드의 대응 구조를 이용두 방법의 직접 비교
성공률이진 과제에서 직관적조작·목표 도달 과제
보고 예시 (나쁨) : "제안 방법 852점, 기준선 790점 — 개선"
보고 예시 (좋음) : "제안−기준선의 쌍별 평균 차이 31 [−12, 68], 시드 10개
→ 차이의 신뢰구간이 0을 포함하므로 우월하다는 근거가 부족하다"

일반화 — 학습 환경에 과적합한다

섹션 제목: “일반화 — 학습 환경에 과적합한다”

강화학습은 환경 자체를 외운다. 지도학습의 과적합보다 알아채기 어렵다. 학습에 쓴 그 환경에서 재면 아주 잘하는 것처럼 보이기 때문이다.

무엇에 과적합하나증상재는 법
특정 초기 상태시작 위치를 바꾸면 무너진다초기 상태 무작위화 후 평가
시뮬레이터의 특성실물에서 안 된다 (sim-to-real)물성치를 바꾼 평가 세트 (14장)
특정 지형·레이아웃새 레이아웃에서 실패학습에 안 쓴 레벨 집합
특정 기간·종목다른 기간에서 손실워크포워드 (12장)
난수 시퀀스시드를 바꾸면 다르다평가 시드를 학습과 분리
같은 학습 조건에서 잰 훈련 성적, 안 본 조건에서 잰 일반화, 실제 세계에서 잰 진짜 성적 세 가지로 정책을 평가하는 구분도

흔히 뒤 단계로 갈수록 성능이 떨어지지만 항상 단조롭게 내려가는 법칙은 아니다. 핵심은 첫 번째 숫자를 일반화나 실전 성능으로 부르지 않고, 각 단계의 격차를 따로 측정하는 것이다.

무엇이 기여했는지 — 절제 실험

섹션 제목: “무엇이 기여했는지 — 절제 실험”

강화학습 시스템은 부품이 많다 — 보상 항 6개, 커리큘럼, 도메인 랜덤화, 네트워크 구조. 빼 봐야 안다.

뺐을 때 성능이해석
크게 떨어진다실제로 기여하고 있다
그대로다없어도 된다. 복잡도만 늘리고 있었다
오히려 오른다방해하고 있었다 (흔하다)

절제 실험도 시드 여러 개로 해야 한다. 시드 1개짜리 절제 실험은 아무 정보가 없다.

로봇트레이딩
1차시뮬 평가 (학습 조건)학습 구간 성적
2차물성치를 바꾼 시뮬워크포워드 — 학습에 안 쓴 이후 기간
3차실물 몇 대에서 짧게페이퍼 트레이딩 — 실시간, 돈은 안 걸고
최종실물 장기 운용소액 실전 — 비용·체결까지 포함
못 넘으면sim-to-real 격차 (14장)과적합·비용 과소평가 (12장)

두 응용 모두 “마지막 관문에서 떨어지는 것이 정상” 이다. 그 관문을 앞당겨 자주 통과시키는 것 — 로봇은 빨리 실물에 올려 보고, 트레이딩은 빨리 페이퍼로 돌려 보는 것 — 이 개발 속도를 결정한다.

확인
시드를 5개 이상(가능하면 10개) 돌렸는가
IQM과 신뢰구간으로 보고하는가
평가 환경이 학습 환경과 분리돼 있는가
평가 중 정규화 통계 갱신을 껐는가
평가 조건·지표를 학습 전에 정했는가
안 본 조건에서의 성적을 따로 보고하는가
랜덤·무행동·기존 규칙 기준선과 비교했는가
주요 부품에 절제 실험이 있는가
학습 곡선의 최고점을 성능으로 쓰지 않았는가
  • 강화학습은 시드만 바꿔도 성공과 완전 실패가 갈린다. 시드 3개로는 아무 말도 못 한다
  • 학습 곡선의 최고점을 성능으로 보고하는 것은 평가 데이터로 모델을 고른 것과 같다
  • 평가 환경은 학습과 분리한다 — 결정적 행동, 정규화 통계 갱신 중지, 안 본 초기 조건
  • 단일 과제는 실행 분포와 평균·중앙값을, 여러 과제 집계는 IQM 등을 쓴다. 비교는 차이의 구간이나 개선 확률로 한다
  • 강화학습은 환경 자체에 과적합한다. 학습 조건 성적 · 안 본 조건 성적 · 실제 성적은 늘 이 순서로 떨어진다
  • 평가 조건과 지표는 학습 시작 전에 못 박는다 — 나중에 고르면 자기기만이다
  • 부품의 기여는 절제 실험으로만 알 수 있고, 절제 실험도 시드 여러 개로 한다
  • 두 응용 모두 최종 관문(실물 · 소액 실전)이 있고, 거기서 떨어지는 것이 정상이다