Reinforcement with Makecode Program
-강화학습을 이해하기 위한 수업 프로그램 개발: 게임을 설계하고, 알고리즘 실행까지-
공동 연구자: 이상민, 이은지, 김홍순
-강화학습을 이해하기 위한 수업 프로그램 개발: 게임을 설계하고, 알고리즘 실행까지-
공동 연구자: 이상민, 이은지, 김홍순
재현고에서 연구하는 상마이에게 존경을.
✅연구 및 수업 전 연구 자료
1️⃣강화학습 교육 프로그램의 개발 목적(Why)
✔️ 학생들은 단순히 개념을 배우는 것이 아니라, 상태–행동–보상–정책으로 구성되는 강화학습 시스템을 직접 설계→구현→학습→성찰하는 전체 과정을 경험합니다.
✔️ 위 문서 전체는 학생들이 'AI 성능 = 알고리즘 + 설계 선택(환경·보상·상태·행동)' 임을 깨닫도록 단계적으로 구조화되어 있습니다.
✔️모든 차시는 하나의 핵심 문제 해결로 수렴합니다. '에이전트가 장애물을 안정적으로 회피하도록 만들기 위해 무엇을 어떻게 설계해야 하는가?'. 따라서 학생들은 이 문제를 5차시에 걸쳐 탐구 → 설계 → 개발 → 실험 → 성찰 구조로 해결하는 과정을 거칩니다.
2️⃣강화학습 프로그램의 설계 방향(How)
① 탐구-실험-성찰 구조의 프로젝트 기반 학습으로 설계하였습니다. 수업의 전체 5차시는 다음과 같은 구조로 설계하였습니다.
② 실험 통제와 근거 기반 사고를 강조하는 설계
✔️수업 설계 과정에서 그리고 프로젝트를 진행하는 과정에서 공학적, 과학적 탐구 절차가 강조되는 방향으로 설계하였습니다.
상태·행동·보상 설계 시 “제약조건” 설정
난이도 요소 1개만 변경하는 변인 통제
학습 로그를 통한 근거 기반 결론 도출 및 개선 방향 탐색
✔️이 과정은 단순 코딩 교육이 아니라 강화학습을 경험하고, AI 시스템 설계자적 사고를 기르는 방향으로 설계하였습니다.
③ 팀 기반 협업 및 발표 중심 구조
✔️모든 성취 활동에는 팀 기반 과정이 포함됩니다. 아래와 같은 필수 과정이 수업에서 진행됩니다.
2인 1조 팀 구성
프로젝트 과정 및 결과 발표(60초 이상 프레젠테이션)
교수자 및 팀별 상호 피드백
공유를 위한 협업 내용 포트폴리오 포함 및 작성
✔️이는 AI 교육 + 소프트 스킬(협업, 의사소통)을 동시에 목표로 둔 구조입니다. 나아가 우리가 선택한 교수학습 설계 괴정에서의 공유와 개선 방향에 대한 정리도 포함된
구조 입니다.
④ 결과 중심이 아닌 '과정 중심 평가'
✔️마지막 차시에 포트폴리오 요소를 5-6가지로 나누어 제시하며, 포트폴리오 내용의 핵심은 AI 모델의 점수, 단순한 경험 등이 아니라 게임의 설계 의도와 강화학습 알고리
즘 구현의해석 능력입니다. 이는 기술공학 수행이 단순한 체험이 아니라 학습자가 스스로 생각할 수 있는 비판적 사고·메타인지를 목표로 한 평가 설계입니다.
⑤ 에듀테크 활용 기반의 실제 코딩·AI 실습 중심 설계
✔️학생들은 AI를 단순이 적용하는 것이 아니라, 생성형 AI를 활용하며 수업에 참여하고, 살제 생성형 AI가 어떻게 학습하는지 강화학습 알고리즘을 직접 작동해보는 의미가 있습니다. 나아가 자신이 직접 환경, 에이젼트, 보상을 고려한 게임을 설계하여 강화학습 알고리즘을 구현하기 위한 '모든 부분'을 직접 설계해보는과정을 거칩니다. 이를 통하여AI에 대한 이해를 높이는데 있습니다.
MakeCode Arcade 게임 개발
Python + VSCode 환경에서 강화학습 train/test
이상민 선생님의 Arcade RL 프로그램 다운 및 실행, 적용 방법 이해
강화학습 및 best_model.zip 분석 및 실행
학습 로그(episode, reward 변화 등) 분석
까지 경험합니다. 이는 AI 리터러시 → 구현할 AI 환경 개발 → AI 적용 경험 → AI 해석 능력의 연속성을 반영한 설계입니다. 학생들은 이 과정에 참여하면서 AI가 스스로 어떻게 학습하는지 눈으로 보고, 손으로 느끼며, 경험할 수 있습니다.
3️⃣연구 계획 및 연구 데이터 준비
위 링크를 클릭하면, 연구 계획서를 확인할 수 있습니다. 연구 방향, 이론적 배경의 흐름, 연구 방법에 대한 가안, 연구 참여자 정보, 자료 수집 및 분석 방법 등에 대한 방향을 확인할 수 있습니다.
연구는 2026.01.07-2026.01.08.에 13-17시까지 진행되어으며, 7일은 13:00-15:00 | 8일은 13:00-17:00 으로 5차시 동안 진행되었습니다. 노원구 일대 재현고, 서라벌고, 불암고 학생을 바탕으로 MS 및 강화학습에 관심이 있는 학생 15명을 선발하여 진행하였습니다.
연구 참여자에게 아래 데이터를 순차적으로 수합 및 준비하여 진행하였습니다. 아래는 데이터 모음 입니다.
4️⃣강화학습 수업 프로그램에서 '핵심' 프로그램: Acade RL
온곡중학교 이상민 선생님께서 개발하신 Makecode Arcade 개발 게임 활용 강화학습 적용 프로그램 입니다. 학습자가 Makecode Arcade 로 간단한 게임인 '점핑볼' 게임을 개발하고, 이를 스스로 학습 하여 '잘'할 수 있도록 돕는 프로그램 입니다.
모델은 PPO(Proximal Policy Optimization)과 CNN(Convolutional Neural Network, 합성곱 신경망), Frame Stacking(프레임 쌓기) 기술을 활용합니다. 정리하면,
"CNN이 게임 화면에서 장애물과 캐릭터 위치 같은 ‘중요한 정보’를 추출하고,
Frame Stacking이 여러 장의 화면을 묶어 움직임과 변화의 ‘맥락’을 만들어 주며,
PPO가 그 정보를 바탕으로 행동을 급격히 바꾸지 않고 점진적으로 더 나은 선택을 할수 있도록 학습합니다."
쉽게 설명하면
"CNN은 “무엇을 볼지”를 결정하고,
Frame Stacking은 “어떻게 움직이고 있는지”를 알려주며,
PPO는 그 판단을 바탕으로 “조금씩 더 나은 행동”을 선택하게 만듭니다"
위 과정을 지속적으로 반복하며, 에이젼트에게 보상을 더하고, 빼면서 최적의 데이터를 추출하는 과정을 경험하는 프로그램입니다.
Arcade RL 프로그램에서 디펜던시 설정 후, get_coord.py를 실행하여
학습 영역을 설정하는 이상민 선생님
왼쪽에는 점핑볼 게임이 있으며, 오른쪽에는 실행할 RL 코드가 놓여진 것을 볼 수 있다.
프로그램 실행 후 Select Region 을 선택하여, 볼 부분은 선택합니다. 그리고 학습 영역은 전체가 필요 없으니, Pixel Width, Pixel Height 를 캡쳐 후 가로는 몇, 세로는 몇으로 할 것인지 볼 부분은 정하는 것입니다. 표준값은 64 x 32 로 설정하고 진행합니다.
이렇게 게임에서 볼 부분만 선택!
이 영역이 게임에서 사용할 영역.
선택 후 Save Region 를 누르고, 저장 이름을 설정, Show Live를 선택하면 강화학습에 필요한 부분만 볼 수 있습니다. 그리고 잘 지정했다면, Show live를 보면서 게임을 해보면, 게임이 끊기며 진행되는 것을 볼 수 있습니다.
게임이 너무 어렵다면 FPS를 Frame per Second 를 선택하여 프레임을 늘려서 4~8정도 사이로 라이브를 하여 게임을 플레이 해 봅니다. 게임이 조금더 부드러워 진 것을 확인할 수 있습니다. 게임을 잘하려면 초당 프레임을 잘 선정하면 좋지만, 노트북 사양으로 너무 높으면 연산량이 많아져서 문제가 생긴다.
마지막으로 게임이 끝났음을 알리는 값을 설정해야 합니다. 상단 Width, Height 를 1x1로 변경하고 어떤 영역을 흰색에서 검정으로 바뀌면 게임이 종료됨을 알리는 값을 지정해 줍니다. 게임이 종료되면 Game Over가 나오기 때문에 그 주변이 횐색-> 검정으로 설정하면 게임이 종료된 것입니다.
위 작업까지 되었다면 '저장 및 종료'를 하고, Json 파일을 game으로 통일하여, game.json으로 저장하고, json file 폴더로 가서 game.json 파일을 확인해 봅니다.
json파일을 활용하여 게임 영역과 종료 영역을 알고리즘이 파악할 수 있게 합니다.
여기 까지 되었다면, env.py를 실행해 봅니다. 거기에서 약 150 번째 중 가서 1가지만 수정해 봅니다. '''보상설계시작''' 주석을 확인하고,
end_reawrd = -1
survive_reward = 0.1
action_reward = -0.03
부분을 수정한다. 여기서 end_reward는 게임이 끝났을 때 주는 보상, survive_reward는 게임 중 살아있을 때 주는 보상, action_reward는 점프를 할 때 주는 보상을 말
합니다. 행동은 적게하는 것이 좋을 수 있습니다. 왜냐하면 막 뛰면 그닷 좋지 않을 수 있습니다.
env.py를 실행하여, 점프하며 연습하는 화면이 나오면 이제 train으로 넘어갑니다.
기본으로 설정되어 있는 train값은 스크린샷을 찍으며 1번 찍을 때마다 1step으로 학습하는 개념으로 생각하면 됩니다. 이것을 2개씩 묶어서 보며, 프레임 2개로 묶어 보며, 5000번 찍을 때 마다 best_tarin.zip을 저장할 것입니다. 이것을 20000번 까지 학습시켜 봅니다.
train.py로 가서 실행하여 이제 학습을 시켜 봅니다. 학습 log 파일이 나오며 학습이 시작됩니다. 위 과정으로 프로그램을 실행하여 강화학습을 연습해 봅수 있습니다.
...(약 1시간 학습 후)
얼마나 학습했는지 보고 싶다면, train 폴더로 가서 몇 step 까지 학습했는지 zip파일을 확인하여 볼 수 있습니.
마지막으로 학습된 모델을 실행하여 학습 상태를 확인하고 싶다면, test.py로 가서 아래쪽에 #모델 경로 지정 및 테스트 실행 주석에서
model_path = 'train/best_model_5000.zip'을 선택하고, 실행을 하여 학습 결과상태를 확인해 볼 수 있습니다. 물론, 5000, 10000, 15000 등 모델 학습 스텝에 따라 파일 명을 달라질 것입니다.
위 강화학습 실습 프로그램을 개발하신 'University of Texas at Austin의 데이터 사이언스 석사 전공 이상만 선생님' 👍🏻
5️⃣ 수업 과정 기록
아래는 2026.01.08. ~2026.01.09.에 진행한 수업 과정에 대한 기록 입니다. 아래 사진과 영상을 확인하여 수업 과정을 구체적으로 확인할 수 있습니다. 먼저 수업 영상을 확인 부탁드립니다.
2026.01.08. 13:00-15:00(1-2차시)
2026.01.09. 13:00-14:00(3차시)
2026.01.09. 14:00-17:00(4-5차시))
✔️1차시: 인공지능과 강화학습 이론 강의 시작
✔️1차시: 이상민 선생님의 PPT 사진
✔️1차시: Pinball게임으로 강화학습을 설명 중
✔️1차시: 규칙의 발견을 설명하시는 이상민 선생님
✔️2차시: 강화학습 게임 연습하기
✔️2차시: CNN, PPO 등 알고리즘 설명
✔️2차시: 메이크 코드 이해 및 제작할 게임 플레이
✔️2차시: 기본 메이크 코드 아케이드 게임 제작
✔️2차시: 2인 1조 창의적으로 재설계 하는 연구 진행
✔️3차시: 환경, 에이젼트, 보상 개념 이해
✔️3차시: 게임 환경에서 변경 가능한 값 이해
✔️3차시: 강화학습을 위한 디펜던시 세팅
✔️4차시: 오류 검증 및 강화학습 알고리즘 실행
✔️4차시: 알고리즘 실행 및 강화학습 과정 경험
✔️5차시: 강화학습 중 포트폴리오 작성
✔️5차시: 강화학습 후 best_model 실행
✔️5차시: 포트폴리오 작성 및 공유 방안 논의
✔️5차시: 교육의 방향성 퍼실리 테이팅
with 이은지 선생님
✔️5차시: 로그 분석 및 개선방향 탐구
✔️5차시: 강화학습에 대한 끝나지 않는 탐구.
6️⃣교수자 성찰 일지
✔️1-2차시 김홍순 교수자 성찰일지(2026.01.08.)
세 달, 어쩌면 네 달에 가까운 시간 동안 우리는 메이크코드 아케이드를 활용하여 학습자들이 직접 게임을 개발하고, 그 게임에 강화학습 알고리즘을 적용하는 실험적인 교육 여정을 함께 걸어왔다. 기계가 스스로 학습한다는 것이 과연 어떤 의미인지, 그것이 인간의 학습과 어떻게 닮아 있고 또 어떻게 다른지를 아이들의 손끝으로 체험하게 하고 싶었다.
이상민, 이은지 선생님과 함께한 회의에서는 단순한 기술적 습득을 넘어, 학습자가 실제로 공학적 문제를 어떻게 정의하고, 그 해법을 스스로 설계해 나갈 수 있는가에 대해 깊이 있게 논의하였다. 융합적 문제 해결력, 특히 공학적 소양과 문학적 사고가 융합된 문제 해결 성향은 단지 ‘능력’이 아니라, 성찰과 반복, 자각을 통해 서서히 길러지는 ‘태도’임을 확인하는 과정이었다.
초기 차시에서는 인공지능에 대한 개괄적 내용과 함께, 그 중에서도 강화학습이 갖는 사회적 의미와 기술적 함의를 중심으로 나누었다. 지도학습이나 비지도학습과 달리, 강화학습은 보상과 선택의 연속이며, 이는 인간 삶의 윤리적 선택과도 닮아 있음을 설명하였다. 이상민 선생님의 설명 처럼 인공지능이 우리 삶에 영향을 미친다는 단순한 사실 너머, 우리는 왜 강화학습이 중요한가에 대한 질문으로 스스로를 향해 걸어 들어가야 함을 중요하게 생각하였다.
그 다음은 실습의 시간이었다. 에이전트, 환경, 보상이라는 개념은 단지 코딩의 언어가 아니라, 삶의 조건 속에서 우리가 마주하는 문제, 선택, 그리고 그 결과와도 유사한 메타포로 다갈 수 있도록 도왔다. 학습자들은 자신이 만든 게임을 강화학습으로 학습시키며, 어떤 보상이 적절하며, 어떤 환경이 학습을 유도하는가에 대해 끊임없이 탐색하는 과정을 경험할 것이라는 이야기를 전달하였다.
나는 이런 수업을 통하여 학생들이 스스로 문제를 정의하고, 그 해법을 설계하며, 실패와 반복 속에서 실마리를 찾아가는 과정을 목겼했으면 했다. 그리고 그 과정은, 마치 우리가 삶의 길을 걸을 때마다 맞닥뜨리는 ‘내적 문제’와 닮아 있다는 생각이 들었다. 때로는 게임 속 캐릭터의 움직임 하나를 위해 캐릭터의 속도 운동을 고민하고, 보상의 고려하여 게임 구조를 다시 설계하며, 그 안에서 하나의 세계를 설계하는 학생들의 모습에서 학습자의 문제 해결적 사고와 창의성이 발현됨을 엿볼 수 있었다.
이 교육의 말미, 학생들은 각자 만든 게임을 공유하고, 서로 다른 알고리즘의 반응을 비교 및 플레이하였다. 2인 1조로 1명은 일반적인 게임 구조를 따르고, 다른 한명은 창의적인 요소를 가미해 게임 케릭터, 장애물의 속도, 점프 높이, 중력 값 등을 재설계하여 창의적인 게임을 개발할 수 있도록 하였다. 추후 2가지의 게임이 어떻게 다른 강화학습이 일어나는지 비교 분석하는 경험 또한 할 수 있도록 돕고 싶었다.
이번 차시를 통하여 아직 모든 원리를 이해한 것은 아닐 것이다. 그러나 분명한 것은, 학생들이 스스로의 이해 한계 안에서 문제를 성실히 해석하려는 자세를 가졌다는 점에서 의미를 두고 싶다. 나아가 강화학습이 삶에 어떤 영향을 미치며, 강화학습 알고리즘이 어떻게 인간의 모습을 연구하여 공식회하였는지 그 생각만 할 수 있도록 돕는 것도 의미가 있다고 생각이 들었다.
✔️3-5차시 김홍순 교수자 성찰일지(2026.01.09.)
3차시~5차시까지의 시간은 비교적 실질적인 강화학습 실습에 집중하였다. 학습자들은 먼저 환경 세팅을 진행하며 VS Code와 Python을 설치하였고, 강화학습 알고리즘을 실행하기 위한 컴퓨터 환경 구성을 ‘디펜던시 세팅’이라는 이름으로 경험하였다. 이 설정 과정만으로도 30~40분 가량이 소요되었는데, 기술적 사전지식이 부족한 학생들에게는 결코 짧지 않은 시간이었다.
이상민 선생님의 설명 아래, 기존에 메이크코드 아케이드로 만든 점프 게임을 강화학습에 어떻게 적용할지 논의하였다. 학습자는 GitHub에서 아케이드 기반 학습용 코드를 직접 불러오는 방법을 배우고, 그 내부 구조—특히 로그 분석, env.py, train.py, test.py 파일의 작동 방식에 대한 개요를 익혔다. 추후 , best_model_0000.zip 파일의 의미까지 설명을 들었다.
강화학습 알고리즘이 어떤 방식으로 컴퓨터에게 ‘학습’을 시키는지, 그리고 그 알고리즘이 어떻게 게임의 성능을 향상시키는지를 학생들에게 설명하며, 학습자는 스스로 관련 코드를 분석하고 의문점을 제기하며 실습에 몰입하였다. 실습과 병행하여, 이번 활동의 전 과정을 학습자들이 포트폴리오로 정리하게 하였다. 여기에는 단순한 기술 습득을 넘어, 이 경험이 자신에게 어떤 의미로 다가왔는지, 또 인공지능 기술이 사회와 환경에 어떤 영향을 줄 수 있는지에 대한 짧은 성찰까지 포트폴로오에는 포함되었다.
분위기는 전체적으로 자유롭게 유지하되, 학생들 간의 대화와 협업이 자연스럽게 일어날 수 있도록 유도하였다. 어떤 문제를 혼자 해결하기보다는 함께 고민하고, 다양한 시선을 통해 더 나은 해법을 찾아가는 과정 자체가 이 수업의 중요한 목표 중 하나였다. 자료조사나 아이디어 공유를 위한 공식적인 시간은 없었지만, 포트폴리오 공유를 통해 간접적으로 그 목적을 이루었다고 생각된다. 마지막으로, 이번 실습은 강화학습이라는 기술적 개념을 학생들의 진로와 삶의 탐색 과정과 연결지으려 했다. 강화학습은 탐색(Exploration)과 활용(Exploitation)이라는 균형 위에 서 있다. 이는 결국 우리가 살아가며 마주하는 선택의 문제와도 닮아 있다. 탐색하지 않으면, 우리는 좋은 선택의 기회를 얻을 수 없다. 이 단순한 원리를 학생들이 조금이라도 체감하고 받아들였기를 바란다.
나는 교육이 단지 지식을 전달하는 행위가 아니라, 학습자가 자신의 삶을 스스로 설계할 수 있도록 돕는 일이라고 믿는다.
강화학습이라는 알고리즘 속에도 결국 인간의 고민과 닮아 있는 본질이 있다. 시도하고, 실패하고, 피드백을 통해 조금씩 나아지는 것. 우리는 이 작은 모형 속에서, 삶과 배움의 방향성을 함께 배우고 있다. 교사는 그 여정에서 방향을 제시하는 이정표와 같고, 학생은 자신의 속도로 길을 걷는다.
이번 수업이 그 길 위에 놓인 작은 경험이 되기를 바란다. 마치 게임 속 캐릭터가 스스로 잘하게 되는 과정을 무한한 실패와 성공의 반복을 통해서 이루듯 말이다.