점수는 올랐는데 아무것도 들지 않았다 — 3cm 큐브 집기 학습에서 만난 보상 허점 두 가지
교육용 AMR로봇암의 팔에 3cm 큐브 집기를 강화학습으로 가르치다가, 점수만 오르고 큐브는 들리지 않는 보상 허점을 두 번 만났습니다. 보상을 고치자 계산용 연습 환경에서는 100번 중 98번 통과했지만, 접촉까지 계산하는 물리 시뮬레이션에서는 4번 모두 큐브를 들지 못했습니다. 그 과정을 그대로 적었습니다.

피지컬 AI 실습 연재 · 번외편
점수는 올랐는데 로봇은 아무것도 들지 않았습니다. 교육용 AMR로봇암의 팔에 3cm 큐브를 집어 올리는 법을 강화학습으로 가르치다가, 점수만 오르는 보상 허점을 두 번 찾아냈습니다. 보상을 고친 뒤에는 계산용 연습 환경에서 100번 중 98번 통과했지만, 같은 정책을 접촉까지 계산하는 물리 시뮬레이션에 올리자 4번 모두 큐브를 들지 못했습니다.
이 글은 성공담이 아닙니다. 강화학습에서 흔히 겪는 두 가지 함정 — 보상의 빈틈, 그리고 연습 환경과 실제 물리의 차이 — 를 저희가 어떻게 만났는지 적은 기록입니다.
강화학습에서 "보상"은 무엇인가요?
강화학습은 로봇이 행동할 때마다 점수(보상)를 주고, 점수가 높아지는 방향으로 스스로 행동을 고치게 하는 방법입니다. 사람이 "이렇게 움직여라"라고 정답을 알려 주지 않습니다. 점수를 어떻게 주느냐가 곧 무엇을 배우느냐입니다.
문제는 로봇이 저희가 원한 행동이 아니라 점수가 높아지는 행동을 배운다는 점입니다. 둘이 다르면, 로봇은 망설임 없이 점수 쪽을 고릅니다.
어떤 환경에서 가르쳤나요?
집기를 수천 번 연습시키려면 빨라야 합니다. 그래서 처음에는 물리 엔진 대신 팔 관절 각도로 팔 끝 위치만 계산하는 연습 환경을 만들었습니다. 그래픽카드 없이 일반 데스크톱 CPU로 몇 분이면 학습이 끝납니다.
이 연습 환경은 접촉과 마찰을 계산하지 않습니다. 대신 이렇게 판정합니다.
- 팔 끝이 큐브 중심 가까이 있고
- 팔 끝이 아래를 향하고
- 그 상태에서 그리퍼를 닫으면 → "잡았다"
- 잡은 뒤에는 큐브가 팔 끝을 따라온다고 가정 → 일정 높이까지 들어 올리면 "통과"
이 판정은 근사입니다. 실제로 손가락이 큐브를 꽉 쥐는지는 다른 물리 시뮬레이션(NVIDIA Isaac Sim)에서 따로 확인하기로 처음부터 정해 두었습니다.
허점 1: 바닥을 뚫고 일찍 끝내기
학습 초기에 로봇은 팔을 일부러 바닥 아래로 밀어 넣어 시도를 일찍 끝냈습니다.
이유는 점수 계산에 있었습니다. 큐브에서 멀리 있는 동안 매 순간 조금씩 점수가 깎이는데, 바닥을 뚫으면 작은 벌점을 한 번 받고 시도가 끝납니다. 로봇 입장에서는 오래 버티며 조금씩 잃는 것보다 한 번에 끝내는 편이 손해가 적었던 것입니다.
바닥을 뚫었을 때의 벌점을 크게 올리자 이 허점은 사라졌습니다.
그리퍼를 한 번도 닫지 않은 로봇
그다음에는 다른 문제가 보였습니다. 팔 끝은 큐브 1~2cm 옆까지 잘 다가가는데, 그리퍼를 한 번도 닫지 않았습니다. 첫 학습의 평균 정책은 100번 중 0번 통과였습니다.
점수를 다시 보는 대신 로봇이 움직인 궤적을 먼저 들여다봤습니다. 다가가기는 되는데 "닫으면 좋아진다"는 신호가 너무 드물어서 닫는 법을 발견하지 못한 것이었습니다. 그래서 두 가지를 더했습니다.
- 큐브 가까이에서 그리퍼를 닫으면 작은 보상
- 멀리서 닫으면 작은 벌점
그러자 연습 환경에서 처음으로 통과가 나왔습니다. 학습 중 점수가 가장 높았던 정책이 100번 중 30번 통과했습니다(평균 정책은 아직 0번).
허점 2: 살짝 들고 버티기
여기서 학습을 더 돌리자 이상한 일이 생겼습니다. 평균 점수는 66까지 올랐는데, 통과는 0번이었습니다.
로봇은 큐브를 살짝 들어 올린 채 시간이 끝날 때까지 버티고 있었습니다. 저희는 "들어 올리는 중"에도 들어 올린 높이에 비례해 매 순간 중간 보상을 주었는데, 이 보상이 시간이 끝날 때까지 쌓이면 끝까지 들어 올렸을 때 한 번 받는 보너스보다 커졌습니다. 끝까지 들어 올리면 시도가 끝나 보상이 멈추니, 들다 말고 버티는 편이 점수가 더 높았던 것입니다.
중간 보상을 크게 줄이고, 끝까지 들어 올렸을 때의 보너스를 키워 빨리 끝낼수록 더 받도록 바꿨습니다.
연습 환경 98번, 접촉 물리 0번
보상을 고쳐 학습을 마친 뒤, 학습에 쓰지 않은 100가지 배치로 시험하자 계산용 연습 환경에서는 100번 중 98번 통과했지만, 같은 정책을 Isaac Sim 접촉 물리에서 4번 돌리자 4번 모두 큐브를 들지 못했습니다.
| 단계 | 바꾼 것 | 연습 환경 통과(100번 중) | 드러난 문제 |
|---|---|---|---|
| 1 | 첫 학습 | 0 | 그리퍼를 닫지 않음, 바닥 뚫고 끝내기 |
| 2 | 바닥 벌점 강화, 가까이서 닫기 보상 | 30 (최고 점수 정책) | 처음으로 통과 |
| 3 | 더 학습 | 0 (평균 점수 66) | 살짝 들고 버티기 |
| 4 | 중간 보상 축소, 끝내기 보너스 강화(빨리 끝낼수록 이득) | 98 | 접촉 물리에서는 4번 중 0번 |
※ "연습 환경 통과"는 위에서 설명한 근사 판정을 넘었다는 뜻이고, 실제로 집는 성공률이 아닙니다.
접촉 물리 시험에서 큐브가 0.9~2.5cm 올라간 적은 있었지만, 그리퍼가 큐브를 밀친 것이었습니다. 움직임을 보면 로봇은 그리퍼를 닫자마자 큐브가 따라온다고 믿고 팔을 다른 곳으로 옮겼습니다. 연습 환경의 "잡으면 따라온다"는 가정을 그대로 믿은 것입니다.
왜 실패했을까요?
아직 이 글에서 단정하지 않습니다. 의심 가는 곳은 몇 군데 있었고, 하나씩 확인하는 과정은 다음 글에서 다룹니다.
이 과정에서 배운 것
- 점수가 오르면 먼저 의심합니다. 평균 점수 66에 통과 0이라는 숫자가 없었다면 "학습이 잘 되고 있다"고 착각했을 것입니다. 점수와 함께 실제로 무엇을 해냈는지(통과 수)를 따로 봐야 합니다.
- 점수보다 궤적을 먼저 봅니다. 그리퍼를 닫지 않는 문제는 로봇이 움직인 모습을 보고서야 원인을 알았습니다.
- 시뮬레이션끼리도 차이가 납니다. 같은 정책이 연습 환경 98번, 접촉 물리 0번이었습니다. 실물 로봇에 올리기 전에, 빠른 연습 환경과 정밀한 물리 환경 사이의 차이부터 메워야 합니다.
자주 묻는 질문
98번이면 거의 성공한 것 아닌가요?
아닙니다. 98번은 접촉을 계산하지 않는 연습 환경에서의 통과 수입니다. 같은 정책이 접촉 물리 시뮬레이션에서는 4번 중 한 번도 큐브를 들지 못했습니다.
로봇이 일부러 속인 건가요?
로봇에게 의도는 없습니다. 저희가 준 점수 규칙 안에서 점수가 가장 높은 행동을 찾았을 뿐이고, 그 규칙에 빈틈이 있었습니다. 강화학습에서 널리 알려진 현상입니다.
처음부터 물리 시뮬레이션에서 학습하면 안 되나요?
할 수 있지만 느립니다. 그래서 빠른 연습 환경에서 먼저 학습하고 정밀한 물리 환경에서 확인하는 순서를 택했습니다. 이 글은 그 확인 단계에서 차이가 드러난 기록입니다.
수업에서 다룰 수 있나요?
수업에서 다루는 범위와 방법은 교육 상담에서 안내합니다.
이 글의 숫자는 Isaac Sim 5.1.0 학습 로그 기준이며, 실물 로봇에서는 시험하지 않았습니다.
다음 단계
실패 원인을 하나씩 확인한 과정은 연재 뒤 편에서 이어 적습니다. 수업에서 다루는 방법은 교육 상담에서 안내합니다.
사용한 버전: Isaac Sim 5.1.0
출처: 저희가 직접 진행한 교육용 AMR로봇암 3cm 큐브 집기 강화학습(1~4차)과 접촉 물리 시험 4회(2026-09-24). 연습 환경 통과 수는 근사 판정 기준이며 실제 로봇에서는 시험하지 않았습니다.
이 글과 그림의 저작권은 SV로보틱스에 있습니다. 원문 링크를 밝힌 인용은 환영하며, 전문 복제·재배포와 교육 자료로의 전재는 허락이 필요합니다.