자율적 교육과정 · 강화학습 탐구

멈춘 AI를
완주시키기까지.

슈퍼 마리오 1-1에서 같은 장애물 앞에 멈추던 DQN 에이전트를 대상으로, 실패 위치·행동·보상·기억을 추적해 원인을 찾고 18단계 커리큘럼과 시간적 행동 제어로 완주를 검증한 탐구입니다.

학습 에피소드
6,558
누적 환경 스텝
1,020,430
깃발 획득 위치
x = 3161

evaluation_run.v6.2

REC
강화학습 에이전트가 슈퍼 마리오 1-1을 완주하는 장면

01 무작위 행동 없이 실제 정책과 동일한 복구 규칙으로 깃발을 획득한 최종 평가

01 — RESEARCH QUESTION

잘 달리던 AI는
왜 평가에서 멈췄을까?

“학습 중에는 멀리 진행하면서도, 무작위 행동을 제거한 실제 평가에서는 왜 같은 계단·파이프·적 앞에서 반복적으로 멈추는가?”

핵심은 학습 횟수 하나가 아니었습니다. 탐색이 만든 우연한 성공, 구간별 경험의 부족, 실패 패널티의 불균형, 이전 경로의 망각, 그리고 버튼을 누르고 놓는 시간 순서를 함께 분석해야 했습니다. 따라서 이 탐구는 “더 오래 학습시키기”보다 실패를 관찰 가능한 데이터로 바꾸고 원인별로 개입하는 것에 초점을 맞췄습니다.

01

평가에서만 멈추는 이유 찾기

학습 중의 높은 진행 거리와 실제 평가 성능이 다른 이유를 탐색률, 행동 기록, 정체 위치를 통해 구분했습니다.

02

실패를 학습 설계로 바꾸기

계단·구멍·굼바처럼 성격이 다른 장애물마다 커리큘럼, 보상, 경험 재사용 전략을 다르게 적용했습니다.

03

우연이 아닌 완주 검증하기

무작위 행동을 제거한 ε=0 조건에서 같은 모델과 같은 제어 규칙으로 깃발 획득 여부를 확인했습니다.

02 — HOW DQN LEARNS

화면 네 장에서
다음 행동 하나까지

DQN은 마리오의 위치를 직접 명령받지 않습니다. 최근 화면을 보고 다섯 행동 각각의 장기적 가치인 Q값을 계산한 뒤 가장 큰 값을 가진 행동을 선택합니다.

  1. INPUT4 × 84 × 84

    최근 흑백 화면 4프레임

  2. FEATUREConv × 3

    벽·적·이동 변화 특징 추출

  3. DUELINGV(s) + A(s,a)

    상태 가치와 행동별 이점 분리

  4. OUTPUT5 Q-values

    가장 큰 Q값의 행동 선택

Dueling Double DQNPrioritized Replay5-step Returnε-greedy
DQN

화면을 보고 행동의 가치를 예측

현재 화면에서 각 행동을 선택했을 때 앞으로 얻을 보상의 합을 Q값으로 예측하는 강화학습 신경망입니다.

DUELING DOUBLE

상태와 행동을 나누고 과대평가를 줄임

화면 자체의 가치 V(s)와 행동별 이점 A(s,a)을 나누어 배우고, 행동 선택과 평가를 분리해 Q값의 과대평가를 완화합니다.

PRIORITIZED REPLAY

중요한 실패를 더 자주 복습

예측과 실제 결과의 차이가 컸던 경험을 우선적으로 다시 뽑아, 드물지만 중요한 실패에서 더 많이 학습합니다.

5-STEP RETURN

다섯 스텝 뒤의 결과까지 반영

한 순간의 보상만 보지 않고 이후 다섯 스텝의 결과를 함께 사용해 점프처럼 시간이 필요한 행동을 평가합니다.

03 — EXPERIMENT DESIGN

성공보다 먼저
조건을 고정했습니다.

평가 때마다 조건이 달라지면 개선 효과를 판단할 수 없습니다. 환경, 입력 크기, 행동 집합과 평가 탐색률을 고정하고 좌표·행동·보상을 함께 기록했습니다.

ENVIRONMENTWORLD 1-1

SuperMarioBros-1-1 환경에서 같은 스테이지의 반복 실패를 집중적으로 분석했습니다.

OBSERVATION4 × 84 × 84

최근 흑백 화면 4장을 쌓아 이동 방향과 속도 변화를 한 상태로 입력했습니다.

EVALUATIONε = 0

평가에서는 무작위 행동을 완전히 제거해 신경망과 복구 규칙이 실제로 선택한 행동만 확인했습니다.

TRAINING SCALE1,020,430

6,558개 에피소드 동안 누적한 환경 스텝입니다. 단순 횟수보다 실패 위치와 행동의 변화를 함께 기록했습니다.

18-STAGE CURRICULUM

어려운 부분을 먼저 배우고, 다시 전체 경로로 연결했습니다.

커리큘럼 학습은 문제를 쉬운 단계부터 제시하는 방법입니다. 이 실험에서는 후반 장애물 바로 앞에서 연습한 뒤 출발점을 조금씩 앞당기는 방식으로 경험이 부족한 구간을 채웠습니다.

PHASE 011–2단계

기본 전진 구간 확보

x 0→2050 · x 0→2200

처음부터 출발해 파이프와 기본 장애물을 넘는 안정적인 초반 정책을 먼저 만들었습니다.

PHASE 023–13단계

어려운 계단 구간에서 시작점을 역확장

x 2320→2500에서 시작 · 출발점을 2250→…→0으로 이동

후반의 좁은 구간을 먼저 익힌 뒤 시작점을 조금씩 앞당겨, 이미 배운 전진 행동과 장애물 통과를 연결했습니다.

PHASE 0314–15단계

마지막 굼바와 계단 집중 학습

x 2500→2800 · x 2200→2900

충돌과 정지가 반복된 후반부를 별도 단계로 분리해 성공 경험을 빠르게 모았습니다.

PHASE 0416–18단계

전체 경로를 다시 하나로 연결

x 0→2900 · x 0→3100 · x 0→3300

최종 목표를 실제 깃대보다 여유 있게 설정하고 좌표가 아니라 flag_get이 확인될 때까지 학습했습니다.

04 — FAILURE MAP

“실패했다” 대신
어디서, 어떻게를 기록했습니다.

최대 x 좌표, 정체 시간, 반복 행동과 적 충돌을 함께 기록하자 같은 완주 실패 안에서도 서로 다른 여섯 가지 원인이 보였습니다.

각 항목을 누르면 원인, 수정 방법과 판단 근거를 확인할 수 있습니다.

x≈2400계단과 틈에서 반복 실패

원인후반 구간까지 도달하는 횟수가 적어 해당 장면의 경험이 충분하지 않았습니다.

수정장애물 가까이에서 시작한 뒤 출발점을 점차 앞쪽으로 넓히는 역방향 커리큘럼을 구성했습니다.

근거18단계 중 11개 단계를 계단 구간의 시작점 확장에 사용했습니다.

x≈2594아무 행동도 하지 않고 멈춤

원인학습 중에는 ε-greedy의 무작위 점프가 약한 정책을 대신 통과시켜 문제를 가리고 있었습니다.

수정ε=0 평가를 따로 실행하고, 12스텝 이상 전진하지 않는 NOOP 행동에 작은 정체 패널티를 적용했습니다.

근거‘학습 보상’과 ‘무작위 행동 없는 실제 정책’을 분리해 관찰했습니다.

x≈2744–2765굼바와 계속 충돌

원인실패 패널티가 너무 크면 전진보다 멈추는 행동의 기대값이 높아질 수 있었습니다.

수정일반 실패 패널티를 5, 굼바 충돌 추가 패널티를 2로 완화해 위험 회피와 전진 보상의 균형을 조정했습니다.

근거적을 피하되 아무것도 하지 않는 정책으로 수렴하지 않도록 보상 크기를 다시 설계했습니다.

앞 구간후반을 배우자 앞부분을 잊음

원인특정 후반 구간만 반복하면 이전에 잘 통과했던 초반 정책이 변하는 파국적 망각이 나타났습니다.

수정지역 학습 중에도 전체 경로 에피소드를 35% 섞고, 성공 궤적을 별도 메모리에 저장해 다시 학습했습니다.

근거후반 숙련과 초반 보존을 같은 학습 배치 안에서 동시에 다뤘습니다.

x≈2914점프를 골라도 실제로 뛰지 않음

원인A 버튼을 계속 누른 상태에서는 새 점프가 시작되지 않아 Q값의 선택과 게임 입력이 어긋났습니다.

수정A 버튼을 1스텝 해제한 뒤 RIGHT+A+B를 5스텝 유지하는 시간적 점프 복구를 추가했습니다.

근거강화학습의 행동 번호뿐 아니라 실제 버튼 입력의 순서까지 제어했습니다.

x≈2994달리기만 43/45회 선택

원인마지막 구간에서 점프 행동의 Q값이 상대적으로 낮아 달리기를 반복 선택했습니다.

수정x≥2500에서 10스텝 동안 정체되거나 굼바가 감지될 때만 제한적으로 점프 복구를 실행했습니다.

근거전체 구간에 규칙을 덮어씌우지 않고 문제가 확인된 후반부에만 적용했습니다.

05 — SOLUTION

하나의 묘수가 아닌
다섯 번의 수정

최종 시스템은 하나의 신경망만으로 구성되지 않습니다. 안정적인 초반 정책, 후반을 학습한 학생 정책, 그리고 실제 버튼 입력을 보정하는 제한적 복구 규칙이 역할을 나눕니다.

FINAL POLICY HANDOFF — WHO CONTROLS MARIO?

OPENING교사 DQNx ≤ 1300
학생 DQNx > 1300
점프 복구x ≥ 2500 · 10스텝 정체 또는 굼바 감지

교사 DQN이미 안정적으로 통과하던 초반 행동을 고정해 출발 구간의 변동을 줄였습니다.

학생 DQN커리큘럼과 성공 경험 재사용으로 계단 이후의 어려운 구간을 집중 학습한 최종 정책입니다.

점프 복구후반에서 멈추거나 적이 감지될 때만 A를 놓았다가 달리기 점프를 실행하는 제한적 규칙입니다.

01

구간별 커리큘럼

18단계로 목표와 시작 위치를 세분화

깃발까지 한 번에 학습시키지 않고 통과하기 어려운 구간을 먼저 익힌 뒤 전체 경로로 연결했습니다.

02

전 구간 리허설

지역 학습 중 전체 출발 에피소드 35% 유지

새 구간을 배우는 동안에도 처음부터 달리는 경험을 계속 제공해 앞부분을 잊는 현상을 줄였습니다.

03

성공 경험 재사용

성공 리플레이 최대 6,000개 · 배치의 50% 활용

목표에 가까워진 희귀한 성공 궤적을 따로 보존하고 재학습해 실패 경험에 묻히지 않게 했습니다.

04

보상 균형 조정

실패 5 · 굼바 추가 2 · 정체 0.05

패널티를 무조건 키우는 대신 위험 행동과 정지 행동 사이의 상대적인 가치를 조절했습니다.

05

시간적 점프 복구

A 해제 1스텝 → 달리기 점프 5스텝

신경망이 고른 점프가 실제 게임에서 실행되도록 버튼을 놓고 다시 누르는 시간 순서를 결합했습니다.

06 — RESULT

FLAG
GET.

무작위 행동을 완전히 제거한 ε=0 평가에서 기존 정체 지점을 지나 x=3161에서 깃발을 획득했습니다.

중요한 점은 학습 중 한 번 멀리 간 기록이 아니라, 평가 조건을 분리하고 같은 체크포인트·교사 정책·점프 복구 설정으로 결과를 다시 확인했다는 것입니다.

6,558
학습 에피소드
1,020,430
누적 환경 스텝
x = 3161
깃발 획득 위치
4회
동일 설정 깃발 확인
조건보상진행해석
학습 에피소드 평균1,042.1x 2455.5

무작위 탐색이 포함된 평균값으로, 최종 정책의 단독 성능을 뜻하지 않습니다.

최고 무작위 제거 평가3,080x 3161

ε=0에서 기존 정체 지점을 모두 지나 flag_get=True를 기록했습니다.

최종 동일 설정 재확인깃발 4회

같은 체크포인트와 교사·점프 복구 설정으로 깃발 획득을 반복 확인했습니다.

5,801–6,400회 학습깃발 미획득 에피소드가 멈춘 주요 x 구간
301400
301600
261900
752000
602400
1552700
302900
1233100

x 위치를 100 단위로 묶은 상위 8개 실패 구간 · x≈2700과 x≈3100에 실패가 집중됐습니다.

07 — MY RESEARCH ACTIVITY

모델을 돌리는 것에서
실패를 설명하는 것으로

이 활동의 핵심은 완성된 AI를 가져와 실행한 것이 아니라, 직접 기록 기준을 만들고 실패 가설을 세운 뒤 코드와 학습 조건을 수정해 검증한 과정입니다.

01

학습 환경과 기록 체계 구성

에피소드마다 보상, 최대 x 좌표, 행동, 정체 시간과 깃발 획득 여부를 저장하도록 실험 환경을 구성했습니다.

02

실패 위치와 행동 패턴 분석

단순히 ‘완주 실패’로 묶지 않고 반복되는 좌표와 행동 빈도를 비교해 장애물별 원인을 가설로 세웠습니다.

03

학습 전략을 한 요소씩 수정

커리큘럼, 보상, 리플레이, 교사 정책과 점프 복구를 순차적으로 수정하며 행동 변화를 관찰했습니다.

04

평가 조건을 분리해 재검증

학습 중 우연한 행동을 성공으로 착각하지 않도록 ε=0 평가와 동일 설정 반복 실행으로 결과를 확인했습니다.

“강화학습의 성능은 신경망 구조만으로 결정되지 않았다. 무엇을 성공으로 기록하고, 어떤 실패를 다시 보여 주며, 행동이 실제 입력으로 어떻게 실행되는지까지 하나의 시스템으로 설계해야 했다.”

08 — WHAT'S NEXT

완주 뒤의 질문은
더 정확해졌습니다.

다섯 개선 방법 중 무엇이 완주에 가장 크게 기여했을까? 교사 정책과 규칙 기반 복구 없이도 같은 결과를 만들 수 있을까? 다른 스테이지와 여러 시드에서도 재현될까?

요소 제거 실험다중 시드 평가교사 없는 학습Grad-CAMPPO 비교순환 신경망