반응형 플레이 달성: Atari Breakout으로 실험하기 [R]
요약
Atari Breakout 환경에서 PPO 알고리즘이 공을 추적하지 않고 동작을 암기하는 문제를 해결하기 위해 보상 설계(Reward Shaping)를 적용한 실험 사례입니다. 환경 엔지니어링 대신 패들과 공의 수평적 근접성에 보상을 주는 세 줄의 코드로 반응형 플레이를 구현했습니다.
핵심 포인트
- PPO 에이전트가 환경을 암기하여 스크립트 방식으로 동작하는 문제 발견
- 환경 변화를 통한 페널티보다 보상 설계(Reward Shaping)가 더 효과적임
- 패들과 공의 근접도에 보상을 부여하여 반응형 추적 정책 유도
- 보상 설계 변경만으로 벽돌 구성에 상관없이 공을 추적하는 성능 확보
6개월 전, 저는 Machine Learning과 Reinforcement Learning에 대해 배우는 방법으로 PPO와 Breakout을 가지고 실험을 시작했습니다. 단순히 높은 점수를 얻으려고 몇 번의 실험을 해본 후, 모든 것이 사람이 플레이하는 것처럼 반응적인 플레이라기보다는 '암기된' 스크립트라는 사실이 저를 괴롭혔습니다. 그리하여 저는 PPO가 점수 획득에 집중하기보다 실제로 공을 추적하도록 설득하려는 여정을 시작했습니다. 저는 많은 아티클을 읽고 많은 것을 시도해 보았습니다. Atari Breakout에서 124번의 PPO 실험 끝에, 스티키 액션(sticky actions), 커서 래퍼(cursor wrappers), 엔트로피 튜닝(entropy tuning), 다이내믹스 랜덤화(dynamics randomization), 적대적 범퍼(adversarial bumpers) 등 모든 것을 거쳐도, 어떤 모델을 사용하든 반응적인 공 추적 정책이 아닌 암기된 액션 시퀀스로 수렴한다는 것을 발견했습니다. argmax는 항상 스크립트였습니다. 해결책은 환경 엔지니어링을 더 많이 하는 것이 아니었습니다. 그것은 보상 설계(reward shaping)의 세 줄 코드였습니다: 낙하하는 동안 패들(paddle)이 공과 수평적으로 가깝도록 직접 보상을 주는 것입니다. 훈련 중에 공이 하강할 때마다 적용되는 작은 보너스(벽돌당 1.0~7.0 대비 프레임당 0.05). 평가 시에는 에이전트가 보너스 없이 깨끗한 Breakout으로 플레이합니다. 행동이 전이됩니다!! 제가 시도했던 이전의 모든 접근 방식은 환경을 더 암기하기 어렵게 만들어 스크립트를 페널티화하는 것이었습니다. PPO는 항상 우회할 방법을 찾았습니다: 타이밍에 강건한 스크립트, 레이아웃 조건부 스크립트, 노이즈 내성 스크립트. 최적점은 항상 스크립트였습니다; 단지 모양만 바뀌었을 뿐입니다. 근접도 보상(Proximity reward)은 최적점이 무엇인지 바꿉니다. 중앙에 머무는 스크립트는 공이 근처를 지나갈 때 우발적인 보너스를 얻습니다. 반응형 추적기는 모든 하강 프레임에서 최대 보너스를 얻습니다. 최적화 압력은 명확합니다: 공을 추적하고, 더 많은 보상을 받으세요. 저는 또한 에이전트가 작동하는 것을 볼 수 있는 멋진 도구를 만들었습니다! 이것은
처음 123번의 실험에서는 에이전트가 매번 정확히 똑같은 패들 움직임을 반복하며, 표준적이지 않은 벽돌 구성으로 인해 발생하는 예상치 못한 공의 움직임으로 궤적이 변할 때 공을 무시하는 모습을 볼 수 있습니다. 하지만 124번째 실험에서는, 에이전트가 공을 추적하며 (IT TRACKS THE BALL) 벽돌 구성에 상관없이 성공할 수 있습니다. 실제로 동일한 에이전트가 공에 반응하여 패들을 다르게 움직이는 것을 관찰할 수 있습니다. 이것이 왜 작동하는지, 그리고 어떻게 최적화할 수 있는지에 대해서는 여전히 다듬는 중이지만, 여러분과 공유하고 싶었습니다!! 여기 split-watcher가 작동하는 영상이 있습니다. 유사한 PPO (Proximal Policy Optimization)를 만들 수 있게 해주는 프레젠테이션 프로젝트 링크는 다음과 같습니다: https://github.com/mharrell/breakout-reactive-ppo. 123번의 실패 사례와 그 어떤 제정신인 사람도 다 읽지 못할 만큼 방대한 문서가 포함된 전체 프로젝트는 여기 있습니다: https://github.com/mharrell/BreakoutBot. 더 자세한 내용이 담긴 제가 작성한 Medium 포스트 링크입니다: https://medium.com/@mikey.harrell/three-lines-of-code-fixed-123-failed-ppo-experiments-on-atari-breakout-c751dcf38f2a?sharedUserId=mikey.harrell /u/mikeysce 님이 r/MachineLearning 에 제출함 [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기