평가에서만 멈추는 이유 찾기
학습 중의 높은 진행 거리와 실제 평가 성능이 다른 이유를 탐색률, 행동 기록, 정체 위치를 통해 구분했습니다.
자율적 교육과정 · 강화학습 탐구
슈퍼 마리오 1-1에서 같은 장애물 앞에 멈추던 DQN 에이전트를 대상으로, 실패 위치·행동·보상·기억을 추적해 원인을 찾고 18단계 커리큘럼과 시간적 행동 제어로 완주를 검증한 탐구입니다.

01 무작위 행동 없이 실제 정책과 동일한 복구 규칙으로 깃발을 획득한 최종 평가
01 — RESEARCH QUESTION
“학습 중에는 멀리 진행하면서도, 무작위 행동을 제거한 실제 평가에서는 왜 같은 계단·파이프·적 앞에서 반복적으로 멈추는가?”
핵심은 학습 횟수 하나가 아니었습니다. 탐색이 만든 우연한 성공, 구간별 경험의 부족, 실패 패널티의 불균형, 이전 경로의 망각, 그리고 버튼을 누르고 놓는 시간 순서를 함께 분석해야 했습니다. 따라서 이 탐구는 “더 오래 학습시키기”보다 실패를 관찰 가능한 데이터로 바꾸고 원인별로 개입하는 것에 초점을 맞췄습니다.
학습 중의 높은 진행 거리와 실제 평가 성능이 다른 이유를 탐색률, 행동 기록, 정체 위치를 통해 구분했습니다.
계단·구멍·굼바처럼 성격이 다른 장애물마다 커리큘럼, 보상, 경험 재사용 전략을 다르게 적용했습니다.
무작위 행동을 제거한 ε=0 조건에서 같은 모델과 같은 제어 규칙으로 깃발 획득 여부를 확인했습니다.
02 — HOW DQN LEARNS
DQN은 마리오의 위치를 직접 명령받지 않습니다. 최근 화면을 보고 다섯 행동 각각의 장기적 가치인 Q값을 계산한 뒤 가장 큰 값을 가진 행동을 선택합니다.
최근 흑백 화면 4프레임
벽·적·이동 변화 특징 추출
상태 가치와 행동별 이점 분리
가장 큰 Q값의 행동 선택
현재 화면에서 각 행동을 선택했을 때 앞으로 얻을 보상의 합을 Q값으로 예측하는 강화학습 신경망입니다.
화면 자체의 가치 V(s)와 행동별 이점 A(s,a)을 나누어 배우고, 행동 선택과 평가를 분리해 Q값의 과대평가를 완화합니다.
예측과 실제 결과의 차이가 컸던 경험을 우선적으로 다시 뽑아, 드물지만 중요한 실패에서 더 많이 학습합니다.
한 순간의 보상만 보지 않고 이후 다섯 스텝의 결과를 함께 사용해 점프처럼 시간이 필요한 행동을 평가합니다.
03 — EXPERIMENT DESIGN
평가 때마다 조건이 달라지면 개선 효과를 판단할 수 없습니다. 환경, 입력 크기, 행동 집합과 평가 탐색률을 고정하고 좌표·행동·보상을 함께 기록했습니다.
SuperMarioBros-1-1 환경에서 같은 스테이지의 반복 실패를 집중적으로 분석했습니다.
최근 흑백 화면 4장을 쌓아 이동 방향과 속도 변화를 한 상태로 입력했습니다.
평가에서는 무작위 행동을 완전히 제거해 신경망과 복구 규칙이 실제로 선택한 행동만 확인했습니다.
6,558개 에피소드 동안 누적한 환경 스텝입니다. 단순 횟수보다 실패 위치와 행동의 변화를 함께 기록했습니다.
18-STAGE CURRICULUM
커리큘럼 학습은 문제를 쉬운 단계부터 제시하는 방법입니다. 이 실험에서는 후반 장애물 바로 앞에서 연습한 뒤 출발점을 조금씩 앞당기는 방식으로 경험이 부족한 구간을 채웠습니다.
처음부터 출발해 파이프와 기본 장애물을 넘는 안정적인 초반 정책을 먼저 만들었습니다.
후반의 좁은 구간을 먼저 익힌 뒤 시작점을 조금씩 앞당겨, 이미 배운 전진 행동과 장애물 통과를 연결했습니다.
충돌과 정지가 반복된 후반부를 별도 단계로 분리해 성공 경험을 빠르게 모았습니다.
최종 목표를 실제 깃대보다 여유 있게 설정하고 좌표가 아니라 flag_get이 확인될 때까지 학습했습니다.
04 — FAILURE MAP
최대 x 좌표, 정체 시간, 반복 행동과 적 충돌을 함께 기록하자 같은 완주 실패 안에서도 서로 다른 여섯 가지 원인이 보였습니다.
각 항목을 누르면 원인, 수정 방법과 판단 근거를 확인할 수 있습니다.
원인후반 구간까지 도달하는 횟수가 적어 해당 장면의 경험이 충분하지 않았습니다.
수정장애물 가까이에서 시작한 뒤 출발점을 점차 앞쪽으로 넓히는 역방향 커리큘럼을 구성했습니다.
근거18단계 중 11개 단계를 계단 구간의 시작점 확장에 사용했습니다.
원인학습 중에는 ε-greedy의 무작위 점프가 약한 정책을 대신 통과시켜 문제를 가리고 있었습니다.
수정ε=0 평가를 따로 실행하고, 12스텝 이상 전진하지 않는 NOOP 행동에 작은 정체 패널티를 적용했습니다.
근거‘학습 보상’과 ‘무작위 행동 없는 실제 정책’을 분리해 관찰했습니다.
원인실패 패널티가 너무 크면 전진보다 멈추는 행동의 기대값이 높아질 수 있었습니다.
수정일반 실패 패널티를 5, 굼바 충돌 추가 패널티를 2로 완화해 위험 회피와 전진 보상의 균형을 조정했습니다.
근거적을 피하되 아무것도 하지 않는 정책으로 수렴하지 않도록 보상 크기를 다시 설계했습니다.
원인특정 후반 구간만 반복하면 이전에 잘 통과했던 초반 정책이 변하는 파국적 망각이 나타났습니다.
수정지역 학습 중에도 전체 경로 에피소드를 35% 섞고, 성공 궤적을 별도 메모리에 저장해 다시 학습했습니다.
근거후반 숙련과 초반 보존을 같은 학습 배치 안에서 동시에 다뤘습니다.
원인A 버튼을 계속 누른 상태에서는 새 점프가 시작되지 않아 Q값의 선택과 게임 입력이 어긋났습니다.
수정A 버튼을 1스텝 해제한 뒤 RIGHT+A+B를 5스텝 유지하는 시간적 점프 복구를 추가했습니다.
근거강화학습의 행동 번호뿐 아니라 실제 버튼 입력의 순서까지 제어했습니다.
원인마지막 구간에서 점프 행동의 Q값이 상대적으로 낮아 달리기를 반복 선택했습니다.
수정x≥2500에서 10스텝 동안 정체되거나 굼바가 감지될 때만 제한적으로 점프 복구를 실행했습니다.
근거전체 구간에 규칙을 덮어씌우지 않고 문제가 확인된 후반부에만 적용했습니다.
05 — SOLUTION
최종 시스템은 하나의 신경망만으로 구성되지 않습니다. 안정적인 초반 정책, 후반을 학습한 학생 정책, 그리고 실제 버튼 입력을 보정하는 제한적 복구 규칙이 역할을 나눕니다.
FINAL POLICY HANDOFF — WHO CONTROLS MARIO?
교사 DQN이미 안정적으로 통과하던 초반 행동을 고정해 출발 구간의 변동을 줄였습니다.
학생 DQN커리큘럼과 성공 경험 재사용으로 계단 이후의 어려운 구간을 집중 학습한 최종 정책입니다.
점프 복구후반에서 멈추거나 적이 감지될 때만 A를 놓았다가 달리기 점프를 실행하는 제한적 규칙입니다.
깃발까지 한 번에 학습시키지 않고 통과하기 어려운 구간을 먼저 익힌 뒤 전체 경로로 연결했습니다.
새 구간을 배우는 동안에도 처음부터 달리는 경험을 계속 제공해 앞부분을 잊는 현상을 줄였습니다.
목표에 가까워진 희귀한 성공 궤적을 따로 보존하고 재학습해 실패 경험에 묻히지 않게 했습니다.
패널티를 무조건 키우는 대신 위험 행동과 정지 행동 사이의 상대적인 가치를 조절했습니다.
신경망이 고른 점프가 실제 게임에서 실행되도록 버튼을 놓고 다시 누르는 시간 순서를 결합했습니다.
06 — RESULT
무작위 행동을 완전히 제거한 ε=0 평가에서 기존 정체 지점을 지나 x=3161에서 깃발을 획득했습니다.
중요한 점은 학습 중 한 번 멀리 간 기록이 아니라, 평가 조건을 분리하고 같은 체크포인트·교사 정책·점프 복구 설정으로 결과를 다시 확인했다는 것입니다.
무작위 탐색이 포함된 평균값으로, 최종 정책의 단독 성능을 뜻하지 않습니다.
ε=0에서 기존 정체 지점을 모두 지나 flag_get=True를 기록했습니다.
같은 체크포인트와 교사·점프 복구 설정으로 깃발 획득을 반복 확인했습니다.
x 위치를 100 단위로 묶은 상위 8개 실패 구간 · x≈2700과 x≈3100에 실패가 집중됐습니다.
07 — MY RESEARCH ACTIVITY
이 활동의 핵심은 완성된 AI를 가져와 실행한 것이 아니라, 직접 기록 기준을 만들고 실패 가설을 세운 뒤 코드와 학습 조건을 수정해 검증한 과정입니다.
에피소드마다 보상, 최대 x 좌표, 행동, 정체 시간과 깃발 획득 여부를 저장하도록 실험 환경을 구성했습니다.
단순히 ‘완주 실패’로 묶지 않고 반복되는 좌표와 행동 빈도를 비교해 장애물별 원인을 가설로 세웠습니다.
커리큘럼, 보상, 리플레이, 교사 정책과 점프 복구를 순차적으로 수정하며 행동 변화를 관찰했습니다.
학습 중 우연한 행동을 성공으로 착각하지 않도록 ε=0 평가와 동일 설정 반복 실행으로 결과를 확인했습니다.
“강화학습의 성능은 신경망 구조만으로 결정되지 않았다. 무엇을 성공으로 기록하고, 어떤 실패를 다시 보여 주며, 행동이 실제 입력으로 어떻게 실행되는지까지 하나의 시스템으로 설계해야 했다.”