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

8. 보상 설계 — 에이전트는 준 대로 한다

강화학습 프로젝트가 실패하는 자리는 대부분 알고리즘이 아니라 여기다

이 장에서 처음 나오는 말6개
리워드 해킹Reward Hacking · Specification Gaming
보상은 최대로 받으면서 우리가 원한 일은 안 하는 해법을 찾아내는 것. 버그가 아니라 최적화의 정상 작동이다.
희소 보상Sparse Reward
성공했을 때만 점수를 주는 방식. 정직하지만 학습이 거의 안 된다.
보상 셰이핑Reward Shaping
중간 과정에도 점수를 줘서 학습을 돕는 것. 잘못하면 중간 점수만 챙기는 정책이 나온다.
잠재 기반 셰이핑Potential-Based Shaping
F = γ·Φ(s') − Φ(s) 형태로만 보조 보상을 주는 기법. 최적 정책이 안 바뀐다는 것이 증명돼 있다.
커리큘럼Curriculum Learning
쉬운 과제부터 시작해 점점 어렵게 만드는 것. 희소 보상을 뚫는 실무적 처방.
제약 강화학습Constrained RL · Safe RL
"보상을 키우되 이 선은 넘지 마라"를 벌점이 아니라 제약으로 다루는 틀.

문제 — 최적화는 정확히 시킨 것을 한다

섹션 제목: “문제 — 최적화는 정확히 시킨 것을 한다”

보상 함수는 “무엇을 원하는가”를 적는 자리다. 그런데 우리가 적는 것은 대개 원하는 것의 대리 지표이고, 에이전트는 그 대리 지표를 공략한다.

준 보상나온 행동
앞으로 간 거리넘어져서 앞으로 구른다
목표까지의 거리 감소목표 근처를 왔다 갔다 하며 감소분을 반복 수확
점수 획득 (보트 경주 게임)경주를 포기하고 점수 아이템만 뱅뱅 돌며 먹는다
컵을 든 높이컵을 엎어서 바닥에 놓고 그 위에 올라선다
일간 수익률레버리지를 최대로 당긴다. 몇 달은 잘 되다가 한 번에 파산
체결 건수잘게 쪼개 수수료를 늘리며 건수만 채운다

가장 정직한 보상은 성공하면 +1, 아니면 0이다. 리워드 해킹의 여지가 적다. 문제는 학습이 안 된다는 것이다 — 우연히 성공할 확률이 0에 가까우면 에이전트는 평생 0만 받고 아무것도 못 배운다.

로봇 팔이 물건을 집어 상자에 넣으면 +1, 아니면 0

장점 — 원하는 것을 정확히 적었다. 해킹할 구석이 없다.

단점 — 무작위 행동으로 이걸 성공할 확률이 사실상 0이다. 학습 신호가 영영 안 온다. 탐색만으로는 못 뚫는다.

다목적 보상 — 가중치가 곧 설계

섹션 제목: “다목적 보상 — 가중치가 곧 설계”

현실의 보상은 항이 여럿이다. 로봇 보행이 대표적이다.

r = w₁·(명령 속도 추종) 목표
− w₂·(에너지 · 토크) 효율
− w₃·(관절 한계 근접) 안전
− w₄·(자세 흔들림) 안정
− w₅·(직전 행동과의 차이) 부드러움 ← sim-to-real 에 결정적
+ w₆·(발이 땅에 닿은 시간) 보행 형태
가중치를 잘못 주면나오는 정책
에너지 벌점이 너무 크다가만히 서 있는다 (움직이면 손해다)
속도 보상만 크다진동하며 관절을 학대한다. 실물에서 즉시 고장
부드러움 항이 없다시뮬에서는 되는데 실물에서 고주파 진동으로 망가진다
생존 보너스가 크다아무것도 안 하고 서서 시간만 채운다

“안전 한도”는 벌점보다 제약으로 다루는 편이 낫다. 벌점은 “충분히 큰 이득이 있으면 위반해도 된다”는 뜻이 되기 때문이다.

방식성격언제
큰 음수 벌점간단하지만 가중치 조율이 지옥이고 위반이 가능하다초기 프로토타입
제약 최적화 (라그랑주 승수)“위반율 ≤ 1%“처럼 목표를 직접 건다. 승수를 학습으로 조절안전이 중요한 실물·운용
하드 마스킹위반 행동을 아예 선택 불가로 만든다규칙이 명확할 때 (주문 한도, 관절 한계)

하드 마스킹이 가장 확실하다. 트레이딩에서 “포지션 한도를 넘는 주문”이나 로봇에서 “관절 한계를 넘는 목표”는 학습에 맡기지 말고 환경 쪽에서 잘라 내는 편이 낫다.

2장에서 짚었듯 종료는 조용한 보상 설계다. 실무에서 자주 쓰는 조합이다.

종료효과주의
넘어지면 즉시 terminated강력한 “넘어지지 마라” 신호초반에 에피소드가 너무 짧아 학습이 안 될 수 있다
생존 보너스 (+매 스텝 소량)오래 버티게 만든다너무 크면 아무것도 안 하고 서 있는다
손실 한도 초과 시 종료위험 관리를 학습에 반영에이전트가 그 근처를 회피하는 법을 배운다
외부 실행 한도 truncated과제 밖에서 에피소드 길이 통제관측 가능한 고정 horizon 종료와 구분 (2장)

셰이핑 말고도 처방이 있다. 리워드 해킹을 덜 유발한다는 점에서 오히려 낫다.

방법아이디어어디서 쓰나
커리큘럼쉬운 버전부터 → 점점 어렵게로봇 지형 학습(평지 → 계단), 목표 거리
시연으로 시작사람 시연을 버퍼에 미리 넣거나 BC로 초기화로봇 조작 (16장)
목표 재라벨링 (HER)실패한 궤적을 “저기로 가려 했던 것” 으로 바꿔 학습목표 조건부 과제
탐색 보너스새로운 상태를 방문하면 보너스탐험이 필요한 과제. 잡음에 취약
자동 커리큘럼성공률을 보고 난이도를 자동 조절대규모 병렬 시뮬 (15장)
로봇트레이딩
자연스러운 보상명령 추종 − 에너지 − 흔들림손익
흔한 함정부드러움 항 누락 → 실물 파손수익률만 주면 → 레버리지 폭주
실무 처방항별 로깅, 잠재 기반 셰이핑, 커리큘럼위험 조정 지표(수익 − λ·변동성) + 거래비용 반영
제약관절 한계 하드 마스킹포지션·손실 한도 하드 마스킹

트레이딩 쪽 보상 설계는 항이 미묘해서 12장에서 따로 다룬다. 핵심만 미리 말하면 — 거래 비용과 슬리피지를 보상에 안 넣으면 에이전트는 초단타 매매로 수수료를 태우며 “수익”을 낸다.

새 환경을 만들었을 때 학습을 돌리기 전에 훑는 목록이다.

확인왜
보상 함수를 한국어 문장으로 읽어 봤는가그 문장대로 행동한다
각 항의 스케일이 비슷한가큰 항이 다 먹는다
항별 기여도를 따로 로깅하는가나중에 원인을 못 찾는다
임의 보조 항이 원래 목표를 덮지 않는가누적 이득 때문에 성공을 회피할 수 있다
아무것도 안 하는 정책의 리턴은 얼마인가그게 높으면 그렇게 배운다
극단 행동(최대 레버리지, 최대 토크)의 리턴은 얼마인가그게 최적이면 그렇게 배운다
제약을 벌점이 아니라 마스킹으로 할 수 있는가더 확실하다
terminated와 truncated를 나눴는가시간 제한을 실패로 배운다
  • 리워드 해킹은 버그가 아니라 최적화의 정상 작동이다. 우리가 적은 식을 정확히 최대화한 결과다
  • 에이전트가 이상하면 보상 함수를 소리 내어 읽는다 — 대개 그 문장 그대로 하고 있다
  • 희소 보상은 정직하지만 학습이 안 되고, 셰이핑은 학습이 되지만 해킹의 문을 연다
  • 보조 보상은 정리의 조건을 지킨 잠재 기반 형태로 주면 최적 정책을 보존한다
  • 잠재 기반이 아닌 보조 항은 원래 목표를 덮지 않는지 누적값을 점검한다
  • 다목적 보상은 스케일을 먼저 맞추고 가중치를 조정하고, 항별로 로깅한다
  • 안전 한도는 벌점보다 제약이나 하드 마스킹이 확실하다
  • 종료 조건도 보상 설계다. 생존 보너스가 크면 아무것도 안 하고 서 있는다
  • 희소 보상은 커리큘럼 · 시연 · 목표 재라벨링으로 뚫는다. 커리큘럼이 셰이핑보다 안전하다