Search Unity

6개월에 걸친 옵스타클 타워 챌린지(Obstacle Tower Challenge)를 진행하는 동안 마감 직전까지 출품작을 제출해주신 여러분의 열띤 성원 속에서 공모전이 종료되었습니다. 수상자 발표와 함께, 1라운드와 2라운드의 모든 참가자를 비롯하여 최종 수상자인 알렉스 니콜스(Alex Nichols), Compscience.org 팀, 최성빈(Songbin Choi) 님께 감사와 축하의 말씀을 드립니다. 또한 필요에 따라 연구 활동에 자유롭게 활용하실 수 있도록 옵스타클 타워의 오픈 소스를 공개합니다.

챌린지 수상자

2월에 시작된 이 챌린지는 Unity로 구축한 옵스타클 타워 환경을 제공하여 AI 분야의 연구 활동을 촉진할 목적으로 진행되었습니다. 옵스타클 타워는 현재의 머신러닝 알고리즘이 해결하기 어려운 형태로 개발되었으며, 순차적으로 환경을 생성함으로써 인공지능 시스템의 한계를 점차적으로 넘어서도록 구성되었습니다. 참가자들은 100개의 옵스타클 타워 인스턴스에만 액세스할 수 있었으며, 훈련된 에이전트가 처음 접하는, 순차적으로 생성된 특수한 타워에서 평가가 진행되었습니다. 따라서 에이전트는 이전에 접했던 적이 있는 다양한 환경에서 과제를 해결할 뿐 아니라 예상치 못한 변수가 발생해도 기량을 발휘함으로써 인공지능의 핵심 기능인 일반화(generalization) 능력을 입증해야 했습니다.

유니티는 옵스타클 타워를 만든 후 당시의 최신 알고리즘 2가지를 사용하여 테스트를 진행했습니다. 그 결과, 유니티의 훈련된 에이전트는 처음 접하는 타워의 인스턴스에서 평균적으로 3층을 약간 넘어가는 수준을 보였습니다.

이번 공모전을 시작한 후 수천 개 이상의 에이전트가 제출되었으며, 시간이 갈수록 더욱 강력한 에이전트들이 참가하기 시작했습니다. 최종적으로 상위 6위 안에 든 에이전트는 처음 접하는 타워 버전에서 10 이상까지 올라갔으며, 1위를 차지한 에이전트는 평균 20 가까이 올라갔습니다. 상위 3위에 오른 수상자들 외에 평가 기간 중 10층 이상 오른 모든 참가자들도 함께 소개하려고 합니다.

챌린지 수상자
수상 이름 사용자 이름 평균 층수 평균 보상
1위 알렉스 니콜스 unixpickle 19.4 35.86
2위 Compscience.org giadefa 16 28.7
3위 최성빈 sungbinchoi 13.2 23.2
주목할 등외 참가자
수상 이름 사용자 이름 평균 층수 평균 보상
4th 조 부스 joe_booth 10.8 18.06
5th 더그 멩 dougm 10 16.5
6th UEFDL Miffyli 10 16.42

오픈 소스 공개

이제 Apache 2 라이선스에 의거하여 옵스타클 타워의 모든 소스 코드를 공개합니다. 유니티는 과제나 평가 절차를 리버스 엔지니어링하는 일을 방지하기 위해 공모전이 종료된 후에 오픈 소스를 공개하기로 결정했습니다. 이제 공모전이 끝났으니 머신러닝 연구자와 사용자 모두가 코드를 분석하여 과제를 더 효과적으로 해결하는 방법을 익히고, 필요에 따라 옵스타클 타워를 수정하실 수 있습니다. 옵스타클 타워는 모듈 방식으로 제작되었으며, 각 층의 레이아웃부터 각 방의 아이템과 모듈 배치까지 환경의 다양한 요소를 순차적으로 생성할 수 있도록 구성되었습니다. 이러한 특성을 통해 머신러닝을 연구하시는 분들이 유니티가 구축한 요소와 툴을 이용하여 자체적인 커스텀 과제를 보다 쉽게 정의할 수 있을 것으로 기대됩니다.

옵스타클 타워 챌린지의 핵심은 유니티 논문에서 언급한 ‘약한 일반화'(혹은 ‘분포 내 일반화’)였습니다. 이번 챌린지에서 에이전트는 100개 층으로 구성된 타워에 액세스할 수 있었으며, 추가된 다섯 층에서 테스트되었습니다. 중요한 사실은 모든 타워가 동일한 규칙 세트를 사용하여 생성되었다는 것입니다. 따라서 에이전트가 전혀 예측하지 못할 만한 상황은 없었습니다.

또한 ‘강한 일반화'(또는 ‘분포 외 일반화’)라고 하는 다른 종류의 일반화 또한 흥미로운 부분이었습니다. 이 부분에 대해서는, 훈련 세트에 적용된 규칙과 다른 규칙을 사용하여 생성한 옵스타클 타워 버전에서 에이전트를 테스트하였습니다. 유니티의 논문을 보면 서로 다른 텍스처, 지오메트리와 조명이 사용된 평가 단계에 대해 별도의 비주얼 테마가 지정된 것을 확인할 수 있습니다. 이와 같은 기준 덕분에 인공지능의 발전을 더욱 효과적으로 측정할 수 있을 것으로 생각됩니다. 커뮤니티에서 이러한 오픈 소스를 활용하여 유니티의 작업을 더욱 확장하고, 자체적인 작업물을 보여주시기를 기대합니다.

마지막으로 이 프로젝트를 함께 진행해 준 줄리안 토겔리우스(Julian Togelius)와 아메드 칼리파(Ahmed Khalifa)의 노고에 감사의 말씀을 드립니다.

프로젝트에 대한 자세한 내용 및 오픈 소스를 활용하는 방법을 알아보려면 프로젝트의 GitHub 페이지를 참고하시기 바랍니다.

수상자 소개

1위 – 알렉스 니콜스

소개

알렉스는 11살에 프로그래밍을 시작했으며, 고등학교에 재학 중일 때부터 AI에 큰 관심을 갖게 되었습니다. AI에 관한 그의 지식은 온라인 코스, 블로그, 논문 등을 통해 100% 독학한 것입니다. 이후 알렉스는 코넬 대학교에서 3학기를 마친 후 학업을 그만두고 AI 연구에 집중했으며, 이후 OpenAI에 입사했습니다. 현재는 퇴사한 상태이나, AI에 대한 관심은 여전합니다. 최근에는 요리에도 관심을 갖게 되었다고 합니다!

 

상세 정보

알렉스는 몇 단계에 걸쳐 에이전트를 훈련했습니다. 먼저 상자나 문 등의 오브젝트를 인식할 수 있도록 분류기(classifier)를 훈련했습니다. 이 분류기는 프로세스 전반에서 지난 50개의 타임스텝에서 관찰된 오브젝트를 에이전트에 전달하는 데 사용되었습니다. 다음으로 알렉스는 행동 복제(behavioral cloning)를 사용하여 에이전트가 사람의 시연을 모방하도록 훈련했습니다. 마지막으로 ‘prierarcy*’라고 하는 PPO 배리언트를 사용하여 행동을 복제한 에이전트를 게임의 보상 함수에 따라 미세 조정했습니다. 이 PPO 배리언트는 행동을 복제한 원본 정책과 유사하게 에이전트를 유지하는 KL 항으로 엔트로피 항을 대체합니다. 이외에도 알렉스는 보다 샘플 효율적인 모방 학습을 위한 GAIL, 정책을 처음부터 학습하기 위한 CMA-ES, 분류기의 상태 출력을 사용하는 대신 분류기의 마지막 레이어 기능을 스태킹하여 에이전트로 가져오는 방법 등 색다른 접근 방식을 여러 가지 시도했으나 성공하지는 못했습니다.

 

자세한 내용은 알렉스의 블로그 게시물 및 챌린지에 사용한 코드를 참조하시기 바랍니다. 알렉스의 Twitter, Github개인 웹사이트도 확인해 보시기 바랍니다.

* prierarchy – 알렉스가 만든 용어로 ‘prior’와 ‘hierarchy’의 합성어. 사전 지식(prior)을 계층적 강화 학습(Hierarchical Reinforcement Learning)을 이용해 학습하도록 하는 것을 말한다.

2위 – Compscience.org

소개

지아니(Gianni)와 미하(Miha)는 폼페우 파브라 대학교(Universitat Pompeu Fabra)의 계산과학연구소(www.compscience.org)에서 컴퓨팅과 여러 애플리케이션 영역 간 인터페이스를 연구하며 지능형 행동이 가능한 계산 모델을 개발하고 있습니다. 지아니는 폼페우 파브라 대학교의 계산과학연구소 소장 겸 ICREA 연구교수이자 Acellera의 창립자입니다. 미하는 지아니의 생물학 그룹에 참여하는 박사 과정 학생입니다. Compscience.org 팀은 옵스타클 타워 챌린지가 관련 3D 환경에서 새로운 아이디어를 빠르게 학습하고 테스트할 수 있는 좋은 방법이라고 생각한다고 밝혔습니다.

 

상세 정보

이 팀의 최종 모델은 행동 세트가 감소하고 보상 함수가 변형된 PPO입니다. 또한 알렉스 니콜스가 적용한 방식과 비슷하게 처음 몇 개 층에서 KL 항을 사용하여 에이전트의 행동을 유도했습니다. 단, 이후 고층에서는 더 이상 KL 항을 사용하지 않았습니다. 또한 이 팀은 주요 층에서 샘플링 알고리즘을 사용하여 좋지도 나쁘지도 않은 층과 시드에서 행위자가 더 많이 달리도록 하는 데 주력했으며, 고층에서는 보다 표준적인 샘플링을 사용했습니다. 각 방식의 이점을 정확하게 평가할 시간이 부족했던 관계로, 이 작업은 향후 진행할 예정입니다. 이러한 내용을 충분히 이해하고 일반화할 수 있게 되는 대로 소스 코드를 공개할 것이라고 합니다. 마지막으로 Compscience.org 팀은 월드 모델, 즉 자동 인코더를 이용해 관찰을 고도로 압축하여 구현하고, 이 공간에 대해 혁신적인 알고리즘을 사용하여 정책을 수립하는 작업을 시도했습니다. 이러한 시도가 성공하지는 못했으나, 이 과정에서 많은 내용을 학습할 수 있었습니다.

 

이 팀은 옵스타클 타워에서의 도전을 즐겼으며, 에이전트가 충분한 수의 샘플을 이용하여 놀라운 결과를 보여줄 수 있으려면 물리 측면에서 더욱 사실적인 환경이 중요하다는 결론을 내렸습니다. 팀은 10B 단계에 걸쳐 에이전트를 훈련했습니다. Compscience.org 팀에 대한 자세한 내용은 Github 및 연구소 웹사이트를 참고하시기 바랍니다.

3위 – 최성빈

소개

서울에 거주하는 최성빈 씨는 의공학박사이며, 딥러닝에 매료된 많은 사람들처럼 독학으로 AI를 익혔습니다. 최성빈 씨는 논문, 강의, 라이브러리와 온라인에서 무료로 제공되는 코드를 활용하여 공부하고 있으며, 이전에도 여러 차례 컴퓨터 비전 작업과 공모전에 참여한 경험이 있습니다. 옵스타클 타워와 강화 학습 문제에 도전할 수 있다는 데 흥미를 느껴 이번 챌린지에 참가했습니다.

 

상세 정보

최성빈 씨는 ML-Agents 툴킷의 일부로 구현된 PPO 알고리즘을 사용했습니다. 이번 챌린지에서 에이전트가 특정한 하위 과제(예: 상자를 특정 위치로 옮기기)를 달성하기 위해 행동을 순차적으로 조정하는 방식을 적용했으며, GRU(Gated Recurrent Unit, 게이트 순환 유닛)를 사용하여 에이전트가 메모리 기반 결정을 내리게 했습니다. 또한 오버피팅을 감소시키기 위해 드롭아웃 레이어를 추가하고, 좌우 반전도 사용했습니다. 이는 이미징 작업에서 자주 사용되는 데이터 증강(Data Augmentation) 방법입니다. 또한 사람의 플레이를 기록하고, 훈련하는 동안 이러한 경험을 리플레이 버퍼에 계속 추가했습니다. 이를 위해 챌린지를 진행하는 동안 계속해서 옵스타클 타워를 플레이하다보니 이 게임의 전문가가 되었다고 합니다. 사람의 플레이를 수집하는 데는 많은 비용이 소요되지만, 품질이 높고 시뮬레이션 시간을 단축한다는 장점이 있습니다. 보다 긴 길이의 시퀀스도 시도했으나 예상과는 달리 더 나은 성과를 얻지 못했으며 여전히 그 원인을 추적하고 있습니다. 또한 훈련을 하면서 타워 시드 100개를 모두 사용했으며, 별도의 평가 검증은 수행하지 않았습니다. 이 과정에서 최대한 줄여보려고 했으나 모델에서 오버피팅이 발생한 것으로 의심된다고 합니다.

 

마지막으로, 최근 몇 년 동안 특히 이미지 분류 과제를 비롯해 컴퓨터 비전의 딥러닝이 발전했으나, 심층 강화 학습 과제는 좀 더 까다로운 것으로 나타났습니다. 최성빈 씨의 에이전트 중 점수가 가장 높은 에이전트 역시 실제 사람과 비교했을 때 비슷한 수준(약 30층)을 달성하지 못했습니다. 최성빈 씨는 알파고와 알파스타가 프로 선수들을 이긴 것처럼, 옵스타클 타워에서도 발전할 여지가 많이 남아있다고 생각합니다.

주목할 등외 참가자

조 부스(Joe Booth)

소개

조 부스는 비디오 게임 업계에 25년 이상 종사했으며, 피파(FIFA), 니드 포 스피드(Need For Spped), 고스트리콘(Ghost Recon), 롤러코스터 타이쿤(Rollercoaster Tycoon) 등 수많은 유명 타이틀과 시리즈 제작에 참여했습니다. 현재 조는 Orions Wave라는 인큐베이터 기업의 개발 담당 부사장을 맡고 있습니다. Orions Wave의 주력 제품은 동영상 분석 플랫폼인 Orions Systems로 오늘날의 AI가 가진 한계를 극복하기 위해 사람과 AI/CV의 연산을 번갈아가며 분산 사용합니다.

 

상세 정보

조는 옵스타클 타워 챌린지에 최적화된 PPO 및 데모 버전을 사용했습니다. 조는 네트워크의 입력/출력을 압축하는 데 집중하여 이를 위해 반복 메모리를 추가하고, 호기심 기반 학습(Curiosity-Driven Learning)의 Unity 환경에 대한 대규모 연구에 기반하여 하이퍼파라미터(hyperparameter)를 설정했습니다. 2라운드에서는 10층을 통과했으나 일관성이 없는 데모를 추가했으며, 시맨틱 사용도 시도했습니다. 비록 시간이 부족하여 이러한 시도에 대해 결과를 얻는 데에는 실패했으나, 장기적인 관점에서 진행하려 했던 방향이었습니다.

 

조는 옵스타클 타워에 관한 별도의 블로그 게시물을 작성하고, Arxiv에 1라운드의 내용을 정리한 논문을 발표했습니다. 조가 1라운드에서 사용한 코드는 여기를 참조하시기 바랍니다. Twitter, LinkedIn, Github, Facebook개인 웹사이트도 확인해 보시기 바랍니다.

더그 멩(Doug Meng)

소개

더그 멩은 NVIDIA의 솔루션 설계자로, 클라우드의 GPGPU를 가능하게 하는 응용 머신러닝을 담당하고 있습니다. 더그는 과거에 머신러닝, 통계학 및 분산 시스템 분야에서 수년간 근무한 이력이 있으며, 신호 처리를 연구하기도 했습니다.

 

상세 정보

더그는 배치된 추론(batched inference)과 커스터마이즈된 리플레이 버퍼가 포함되도록 수정한 DeepMind IMPALA 를 사용하여 에이전트를 훈련했습니다. 이 과정에서 더그는 프레임 스태킹을 4로 설정한 옵스타클 타워 레트로 모드를 사용했으며, OpenAI 기준의 요령 몇 가지를 함께 활용했습니다. 에이전트 훈련에는 약 12일이 소요되었으며, 이 중 대부분의 시간은 더 많은 알고리즘을 시도하기 위해 훈련 시간을 단축하는 데 소요되었습니다. 또한 더그는 PPO와 Rainbow를 시도했으나, 정책을 벗어나는 경우 모델의 성능이 상당히 떨어지는 것을 발견했습니다(IMPALA는 정책을 약간 벗어남). 이러한 에이전트는 항상 7층을 통과하지 못했습니다.

 

UEFDL

소개

UEFDL은 이스턴 핀란드 대학교 컴퓨터학과의 동기들인 안시 카너비스토(Anssi Kanervisto), 얀네 카투넨(Janne Karttunen), 빌레 하우타마키(Ville Hautamaki) 로 이루어진 3인 팀입니다. 안시는 박사 과정 2년차 학생으로 비디오 게임을 이용한 강화 학습을 연구하고 있습니다. 얀네는 최근 게임에서 로봇 공학으로의 심층 강화 및 변환 학습에 관한 논문으로 MSc 학위를 취득했습니다. 빌레는 머신러닝, 베이지안(Bayesian) 추론과 음성 기술을 연구하는 선임 연구원입니다.

 

상세 정보

UEFDL 팀은 LSTM과 함께 stable-baselines 패키지의 A2C를 사용했습니다. 또한 0~4층과 5~9층에 모델을 각각 1개씩 활용했습니다. 10층 이상에 사용된 모델은 퍼즐을 풀기 위한 학습을 하지 않았으므로 포함되지 않았습니다. 먼저 팀은 0~4층에 사용할 모델을 훈련한 다음, 훈련한 모델을 5~9층에서 사용했습니다. 이러한 방식으로 에이전트는 다음 층에서 키를 찾는 데 집중하고, 가능성은 낮지만 5~9층의 모델이 이전 층을 완료하는 방법을 잊어버리는 문제를 방지할 수 있었습니다. 이외에도 UEFDL 팀은 호기심이 수반된 AC2 사용, 여러 엔트로피에서 PPO 사용, 옵스타클 타워 환경의 일부를 사람의 게임플레이에서 얻은 ‘리플레이 환경’으로 대체하는 등 몇 가지 실험을 진행했습니다. 전반적으로 이 팀은 공모전과 기타 머신러닝 비디오 게임 공모전에 흥미를 보였습니다.

감사의 말

모든 참가자 여러분께 감사드리며, 챌린지 개최에 사용된 GCP 크레딧과 AICrowd를 제공해주신 Google Cloud에도 감사의 말씀을 전합니다. 공모전을 시작할 때에는 과연 참가자가 10층이라는 한계를 넘을 수 있을지 반신반의했지만, 최대 19층까지 도달하여 타워의 새로운 버전을 발견하는 놀라운 성과를 보여주었습니다. 참고로 옵스타클 타워의 인스턴스 1개당 100개 층이 포함되어 있으므로, 타워의 80%는 아직 풀리지 않은 채로 남아 있습니다. 또한 위층으로 올라갈수록 적들과 더 위험한 방, 복잡한 층 레이아웃이 나타나므로 더욱 섬세한 컨트롤과 계획이 필요합니다. 따라서 새로운 방법을 개발하여 옵스타클 타워를 더욱 발전시킬 수 있는 가능성은 무궁무진합니다. 향후 옵스타클 타워를 연구하시는 분들이 보여주실 놀라운 발전을 기대하겠습니다.

 

챌린지에 관한 질문이 있다면 OTC@unity3d.com으로 문의하시기 바랍니다. 머신러닝과 게임이 결합된 이 흥미로운 분야에서 커리어를 원하신다면 지금 진행 중인 채용 공고를 확인하고 지원하세요!

8 코멘트

코멘트 구독

댓글 남기기

사용할 수 있는 HTML 태그 및 속성: <a href=""> <b> <code> <pre>

  1. Everyone tried very hard on this contest. Why not publish at least the IDs of top 10 final contestants? It would be a good gesture. As one of the contestants who placed top 10, I would appreciate if you do so, so I can save the article as a good memory of the time I spent. Also as a student, I want to put it on my resume that I placed top 10 in an RL contest.

  2. If you have some free time on your hands, why not make some extra cash every week? Follow this link for more information

    1. Spam user.
      Admin: delete these comments and then ban this seemingly bot spam user

  3. I was interested in this blog post but feel it is too hard to follow for anyone who isn’t already an expert in the field because of all the acronyms/initialisms that are never explained.

  4. nice

  5. I was interested in this blog post but feel it is too hard to follow for anyone who isn’t already an expert in the field because of all the acronyms/initialisms that are never explained.

    Eventually all the acronyms and jargon became too dense that I gave up on reading this entry, which is a shame because I find the topic fascinating.

    A good rule of thumb when using acronyms of jargon is to fully write it out the first time, followed by the acronym in parentheses. Then if the reader ever finds themselves unsure of the meaning of an acronym they’ve just seen 5 times in the same paragraph, they can just scroll back up to the first mention of it to get a quick reminder/explanation.

    Skimming the text as I scrolled down to the comments, I only saw one instance (GRU) where this was done.

    I may not know what a gated recurrent unit is, but it’s a lot easier to find out through my own research if I have more to go on than just GRU, searching for which would likely give me more results related to Despicable Me, Minions, or a monster that will eat me than anything about AI.

    1. Hi Deozaan – thank you for your feedback. You are absolutely correct, we should include the full spelled out acronyms for readers who may not be as deep in the space.

      1. Can you update the post to explain what PPO etc means? Would be lovely to not have to do a ton of research just to understand the blog post