-
Notifications
You must be signed in to change notification settings - Fork 48
우리는 어떻게 강화학습을 공부했는가
강화학습을 공부해야 하는 이유는 알았지만 어떻게 공부를 해야할지 모르는 경우가 많습니다. 강화학습을 공부하는 방법은 정말 많습니다. 어느 방법이 옳다고 말할 수가 없습니다. 여기에서는 RLKorea 운영진과 소수의 멤버분들이 어떻게 강화학습을 공부했는지에 대한 개인적인 경험을 공유하도록 하겠습니다. 강화학습을 공부하시는 분들께 하나의 예시로서 참고가 되었으면 좋겠습니다.
(이웅원) 저는 모두의 연구소 강화학습 스터디에서 강화학습을 공부하기 시작했습니다. 제가 참여했던 스터디에서는 David Silver의 RL Course 강의를 함께 들었습니다. David Silver가 부교재로 Richard Sutton의 책을 사용했기 때문에 중간 중간 Sutton의 책으로 강의 내용을 복습했습니다. 3개월 정도 스터디를 통해 Silver의 강의를 다 들은 이후에 모두연 홈페이지와 gitbook에 관련 내용을 정리했습니다.
Gitbook을 쓴 이후에 gitbook을 보고 모인 4명의 다른 학생들과 RLCode라는 이름으로 작은 모임을 만들었습니다. RLCode가 처음 모인 목적은 알까기를 강화학습 시키기 위해서였습니다. 하지만 강화학습 공부가 더 필요하다고 생각해서 함께 공부하면서 책을 쓰기로 했습니다. 강화학습 책을 쓰면서 추가적으로 John Schulmann의 강의 자료와 UC berkely의 CS188, CS294를 수강하며 공부했습니다. 당시에 Keras가 나왔었는데 직관적인 예제 코드를 위해 REINFORCE, DQN, Actor-Critic, A3C를 Keras로 구현했습니다.
강화학습 책을 출판한 이후로 패스트 캠퍼스에서 강화학습 camp를 진행했습니다. 수강생 분들에게 좀 더 최신 내용을 알려드리기 위해 DDQN, Dueling Network, PER, NoiseNet, C51, RAINBOW, A2C를 공부했습니다. 그러면서 개인적으로 DQN을 슈퍼마리오에 적용해보고 DDPG를 자동차 시뮬레이션에 적용해봤습니다. 또한 NIPS 2017 competition인 Learning to run에 잠깐 참여해서 skeleton이 걷는 것에 DDPG를 적용해봤습니다. 결과적으로는 잘 학습시키지 못했습니다.
그 이후에 RLKorea를 만들고 피지여행 프로젝트를 시작했습니다. 피지여행 프로젝트를 하면서 NPG, TRPO, DDPG, PPO를 공부했습니다. 논문을 리뷰하고 난 이후에는 Mujoco와 Unity ML-agent의 walker 환경에 PPO 적용했습니다. 알파오목 프로젝트에도 참여해서 알파고 제로 알고리즘을 오목에 적용해봤습니다. 그 다음 프로젝트로 몬테주마 복수 시리즈를 시작했습니다. 몬테주마 복수 시리즈에서는 TMC+CMC, FeUdal Network, RND을 공부하고 있습니다. 또한 알고리즘을 구현해서 몬테주마의 복수 게임에 적용해보고 있습니다.
개인적으로 다양한 강화학습 논문을 지속적으로 리뷰하고 있습니다. 강화학습 논문은 주로 트위터, arxiv sanity, 각종 학회 제출 논문, Google Brain 블로그, DeepMind 블로그, OpenAI 블로그에서 접하고 있습니다.
(이의령) 강화학습을 처음 접하게 된건 DeepMind가 공개한 벽돌깨기 DQN 에이전트 영상으로 부터 였습니다. Supervised Learning과 Unsupervised Learning만 알고있었던 저로써는 충격적인 영상이었습니다. 그때 당시는 강화학습에 대한 공부 자료가 거의 없었고, David Silver 강의가 유일한 동영상 강의였던 것 같습니다. 그때 당시 유일하게 한글자료로 볼 수 있던게, 이웅원님 강화학습 Gitbook 자료 였습니다.
그리고 실제 공부를 시작하게 된건 RLCode 팀을 꾸리고 나서부터 였습니다. 처음 시작한 계기는 알까기 인공지능을 강화학습을 적용하여 만들기 위해서 였고, 이웅원, 양혁렬, 김건우, 이영무님과 프로젝트 형식으로 진행하였습니다. 그 때 당시 마주쳤던 한계점은 Continuous Action Space in RL & Environment 구축 이었는데, 현재는 이런 것들을 도와줄 수 있는 여러 논문과 Environment들이 쏟아져 나오는 것 같습니다. 앞으로 RL은 계속 발전해나갈 것 같다고 생각이 듭니다. 그리고 무엇보다 강화학습을 같이 공부하는 분들이 많이 늘어서 가장 좋습니다!!
과거도 그랬고 현재도 강화학습하면 가장 먼저 생각나는 도메인은 게임이지 않을 까 생각합니다. 저는 강화학습이 게임 도메인 말고 어느 분야에서 발전해 나갈 수 있을까 고민해봤습니다. 그리고 생각한 것은 3D Environment 환경에서 Visual Interaction 형식으로 학습하는 분야였습니다. 최근 딥마인드에서 연구하고 있는 분야이기도 한데, 최근 RL + Vision + NLP 가 멀티 모델 형태로 구성 되있는 분야가 공부할 것도 많고 재밌어 보여서 공부하기 시작하였습니다. 최근 로보틱스 전공하신 분들도 많은 연구를 하고 계시는 것 같습니다. RLKorea에서 제 1회 프로젝트 세미나에서 3개월동안 HomeNavi 팀원들과 논문 리서치 & 구현을 했었습니다. 관련 발표 자료는 여기 링크에 있습니다.
무엇보다 중요한건 열정적인 팀원들과 같이 공부를 하는 것이 가장 큰 원동력이자 노하우가 되는 것 같습니다.
(민규식) 저는 처음에는 인공지능과 관련된 다양한 수업을 듣다가 Udacity에서 Artificial Intelligence라는 강의를 들었고 거기서 처음으로 Markov decision process나 Reinforcement Learning, Q-learning, Approximate Q-learning 등에 대해서 공부하였습니다.
이후 Deepmind에서 공개했던 DQN을 이용한 블럭깨기(breakout) 영상을 보고 DQN 공부를 시작했습니다. 처음에는 DQN 논문을 읽으면서 공부를 했고 논문을 읽으면서 이해가 되지 않는 내용은 블로그 등을 참고하였습니다. frame skipping 참고 블로그
DQN을 공부한 이후에는 DQN을 기반으로 발표되었던 다음의 논문들에 대해 공부 및 구현을 수행하였습니다.
- Deep Reinforcement Learning with Double Q-learning
- Prioritized Experience Replay
- Dueling Network Architectures for Deep Reinforcement Learning
- Deep Recurrent Q-Learning for Partially Observable MDPs
- Noisy Networks for Exploration
- A Distributional Perspective on Reinforcement Learning 위 논문들은 논문들을 읽고 tensorflow로 구현을 수행하였으며 github에 코드들을 정리하였습니다.
다음으로는 RL Korea의 첫번째 프로젝트로 김정대님, 김태영님, 이웅원님과 함께 알파고 제로 알고리즘을 오목에 적용한 알파오목 프로젝트를 시작하였습니다. 해당 프로젝트는 9x9 오목판에서 일반적인 사람의 실력을 뛰어넘는 agent를 만들어내며 성공적으로 마무리 되었고 현재 다양한 세미나, 전시회등에서 발표를 진행하고 있습니다. 알파오목 프로젝트의 경우 아직도 발전하고 있으며 해당 내용들은 RLKorea github에 모두 정리되어 있습니다.
다음으로는 Deepmind에서 발표한 Distributional RL에 흥미가 생겨 RLKorea에서 활동중이신 차금강님, 윤승제님, 김정대님, 김하영님과 함께 스터디 그룹을 만들고 Distributional RL 스터디를 진행하였습니다. 약 3개월 정도 스터디를 진행하였으며 다음의 논문들을 리뷰 및 코드 정리하였습니다.
- A Distributional Perspective on Reinforcement Learning
- Distributional Reinforcement Learning with Quantile Regression
- Implicit Quantile Networks for Distributional Reinforcement Learning 위 논문들에 대한 내용 정리는 RLKorea blog에, 코드는 RLKorea github에 정리되어 있습니다. Distributional RL을 공부할 때는 다음의 블로그들이 매우 도움이 되었습니다.
- Distributional Bellman and the C51 Algorithm
- Distributional RL
- Quantile Reinforcement Learning
그리고 약 1년 정도 Unity ML-agents에 흥미를 가지고 지속적으로 공부하며 사용하고 있습니다. 강화학습 알고리즘을 테스트 할 수 있는 환경을 만들고 이를 이용하여 논문 작성 및 연구를 수행할 예정에 있습니다. ML-agents를 이용하여 간단한 자율주행 환경을 구성하고 이를 이용하여 2018 Intelligent Vehicle Symposium학회에 논문을 제출하기도 하였습니다. 해당 논문의 알고리즘과 환경은 2017 Machine Learning Camp Jeju github에 정리되어 있습니다. 또한 이번 RLKorea 2번째 프로젝트로 신명재님, 윤성훈님, 이현호님, 정규석님, 조동헌님과 함께 Unity ML-agents에서 간단한 환경을 만들고 알고리즘을 검증해볼 수 있도록 튜토리얼을 정리하고 있습니다. 또한 다양한 Multi-agents RL 환경을 공개하여 연구자들이 알고리즘의 성능을 검증해 볼 수 있도록 할 예정입니다.
개인적으로 다양한 논문들을 읽으면서 지속적으로 공부를 진행하고 있습니다. 최근에는 imitation learning이나 multi-agent RL 쪽에도 흥미를 가지고 공부를 진행하고 있습니다. 개인적으로 논문이나 블로그 등에 대한 정보를 트위터나 페이스북을 통해 많이 접하고 있습니다. 트위터에서 deepmind, openAI, BAIR 혹은 강화학습 관련 유명한 연구자들을 follow하시면 최신 논문이나 학회, 게시물 등에 대한 정보를 아주 빠르게 접할 수 있습니다.
(유지원) 저는 2018 2월, ETRI에 연구연수생으로 재직당시, 강화학습을 처음 마주하게 되었습니다. 당시에는 자율주행 차량을 위해 기초적인 강화학습 알고리즘 구현이 제 연구주제 였습니다. 당시, 저에게 머신러닝과 강화학습 둘 다 낯선 주제였기 때문에 sungkim 교수님의 모두를 위한 딥러닝과 모두를 위한 RL강좌 유투브 강의 로 입문하였습니다. 저에게 주어진 시간이 별로 없었기에, 이주일에 걸쳐 모든 강의를 듣고 linux서버에 구현을 하며 이해하는 방식을 택했습니다. 하지만 아무래도 기본기가 없었기에, 논문과 책을 참고하였습니다. 참고한 논문은 Playing Atari with Deep Reinforcement Learning, GA3C, 참고 서적은 3분 딥러닝, 강화학습과 케라스로 구현하는 딥러닝과 강화학습 입니다.(상기 책은 딥러닝과 강화학습에 대한 책이므로, 강화학습만을 다루는 최근 강화학습 책을 보시는 것을 추천드립니다!)
하지만 책과 남이 짜놓은 코드를 해석하는 것 만으로는 이해가 되지 않는 점들이 많았습니다. 그러다, 운이 좋게 대전에서 강화학습 세미나를수강하게 되었고, 영상으로 익히는 것이 효과적임을 깨달았습니다. 그 후 네이버 D2 세미나 강의와 David Silver의 RL Course 강의자료를 찾아 공부하고, 파이썬과 케라스로 배우는 강화학습 와 이웅원님의 깃북를 정독하며 개념을 익혔습니다. 이를 통해 gym의 cartpole과 Atari 게임 등의 여러 환경에 DQN, A3C를 linux서버에 구현하는데 성공했습니다.
서울로 돌아온 뒤, 새로운 회사에서 머신러닝과는 전혀 다른 업무를 맡게 되었습니다. 하지만, 강화학습에 대한 호기심은 커져갔습니다. Roboschool, Carla (지금은 기억 저편으로 가신 분들...) 같은 시뮬레이터 상에 value-based 접근이 가진 한계를 인식했기 때문입니다. 따라서, 연속적인 동작에 대한 제어를 연구하기 위해 모두의 연구소에 지원했습니다. 자율주행 모형차에 실제로 임베딩 할 수 있는 알고리즘을 고민했습니다. 현재는 DQN이 임베딩 되어있습니다.
실물 강화학습과는 별개로, PG에 대한 공부가 필요하다고 생각했습니다. RLKorea의 피지여행 프로젝트를 팔로우업 하며 본격적으로 PG에 대해 공부했습니다. 출퇴근 시간에 RLCode와 A3C 쉽고 깊게 이해하기를 돌려보며 기본에 대한 감각을 잃지 않으려 힘썼습니다. 피지여행을 통해 Sutton PG, NPG, TRPO (비교적) 쉽게 논문을 이해할 수 있었습니다. 최근에는 출퇴근 영상으로 PR12 논문 읽기 모임을 보고 있습니다. (30분 내외라 제격입니다!)
현재는 RLKorea에서 로봇팔 시뮬레이션에 적용할 수 있는 논문을 찾고, 적용해보는 "각잡고 로봇팔 프로젝트"를 진행중입니다.하나의 Task를 수행하는 데 있어 적용할 만한 논문들을 찾아 리뷰했고, 최종적으로 계층형 강화학습, Data-Efficient Hierarchical Reinforcement Learning을 구현하고자 합니다. 파생되어 함께 리뷰하는 논문은 Addressing Function Approximation Error in Actor-Critic Methods, Deep Determinstic Policy Gradient 입니다.
제 의견으로는, 강화학습을 이해하는데 있어 가장 중요한 점은 "관심" 이라고 생각합니다. 수학, 딥러닝에 대한 배경지식이 풍부하다 할지라도, 빠르게 성장하고 있는 강화학습의 흐름을 파악하려면 무엇보다도 지속적인 관심이 필요하다고 생각합니다. 물론, 딥러닝과 수학(미적분, 선형대수)에 대한 개념또한 중요합니다. 첫 업무를 맡았을 때, 저는 딥러닝에 대한 기초가 없어 논문에서 언급한 용어들조차 이해하지 못했습니다.
개인적으로, 모션캡쳐 장비를 이용하여 실제 로보틱스에 구현하는 것을 큰 목표로 삼고 있습니다. 이를 위해, 딥러닝 라이브러리를 사용하는 것과 별개로 MCU와 임베디드SW를 공부하고 있습니다. 다음 단기 목표는 Deepmimic완벽 이해 및 간단한 모션 모방입니다.
(이동민) 저는 2017년 6월부터 머신러닝, 딥러닝 공부를 시작하였습니다. 공부를 하면서 인공지능 분야에 대한 시각을 키우고자 여러 세미나를 가게 되었는데 강화학습이란 키워드를 알고 난 뒤로 '강화학습이 진정한 인공지능에 가깝지 않을까?'라는 생각을 하였습니다. 그래서 공부를 해보고 싶었고, 2017년 12월부터 서울 강남역 부근에서 스터디를 직접 운영하며 강화학습 공부를 시작하였습니다. 스터디를 만든 이유는 혼자서 공부를 하는 것보다 여러명이서 같이 하니 더 효율적이라고 생각했기 때문입니다.
처음 스터디를 진행했을 때는 김성훈 교수님의 "Deep Reinforcement Learning" 강의를 한달 동안 들었습니다. 아무래도 처음 접하기에는 김성훈 교수님의 강의가 좋다고 생각하였고, 매주 한 lecture씩 듣고 주말에 모여 다같이 리뷰하는 형식으로 공부를 하였습니다. 내용은 Q-learning과 DQN에 대해서 아주 쉽게 설명을 해주시기 때문에 무리없이 공부하였습니다.
김성훈 교수님의 강의를 들었지만 아직도 의문이 드는 점들이 많았고, 좀 더 세부적으로 공부하고 싶었습니다. 그래서 정한 책이 바로 파이썬과 케라스로 배우는 강화학습 이란 책이었습니다. 내용이 보다 더 많았기 때문에 스터디에서 약 3개월 정도 기간을 잡고 공부하였습니다. 지금 생각해보면 이 책 덕분에 많은 내용들을 쉽게 접할 수 있었던 것 같습니다. 내용에서 강화학습 기초로는 MDP부터 시작하여 Sarsa와 Q-learning, 강화학습 심화로는 Deep Sarsa, REINFORCE, DQN, Actor-Critic, A3C 까지 자세하게 나와 있었습니다. 추가적으로, 스터디에서 논문 리뷰까지 같이 진행을 하였습니다. RL쪽으로 나오는 논문들 중에서 각자 하나씩 관심있는 논문을 리뷰하였는데, 혼자 하나의 논문을 보는 것보다 다같이 모여서 각자 관심있는 논문을 보니 강화학습에 대한 시야도 넓어졌고, 논문리뷰 발표를 준비해야했기 때문에 더 깊게 논문을 읽었던 것 같습니다. 사실 이 때부터 논문이라는 것을 처음 접했기 때문에 상당히 힘들었습니다. 하지만 RL 분야는 영어로 된 문서들이 상당히 많기 때문에 근성을 가지고 논문을 읽어왔던 것 같습니다.
위의 책을 봤음에도 저는 개인적으로 강화학습 관련 이론들에 호기심이 많았기 때문에 이후에는 Richard Sutton의 책 으로 약 3개월 동안 강화학습을 공부하였습니다. 서튼책을 고른 이유는 아무래도 강화학습 이론의 끝판왕은 서튼책이라고 생각하였고, 외국 원서를 통해 보다 더 깊은 이해가 되었으면 하여 선택하였습니다. 그리고 간략하게 요약하고 싶거나 좀 더 보충자료를 이용할 때는 David Silver의 RL Course 강의와 자료 를 통해 추가적으로 공부하였습니다. 이 때도 계속해서 스터디에서 논문 리뷰를 진행하였습니다.
이후에는 RLKorea에서 피지여행 프로젝트 를 시작했습니다. 피지여행을 통해 총 7가지 논문을 리뷰하였고, Vanilla PG, DPG, DDPG, NPG, TRPO, GAE, PPO 논문을 리뷰하였고, 이후에는 많은 분들이 쉽게 보실 수 있도록 논문들을 정리하였습니다.
그리고 그 다음 프로젝트로는 Inverse RL 프로젝트를 시작하였습니다. Inverse RL 프로젝트에서는 Andrew Y. Ng 교수님이 쓴 "Algorithms for Inverse Reinforcement Learning" 논문을 필두로 하여 APP, MMP, MaxEnt, GAIL, VAIL** 의 논문들을 공부하였고, 블로그에 논문들을 보기좋게 정리하고, Mountain Car와 MuJoCo Hopper 환경을 통해 구현하였습니다.
개인적으로 저는 Safe Reinforcement Learning 에 관심이 많기 때문에 이쪽으로 연구할 생각이며, 앞으로도 꾸준히 강화학습 공부를 할 것입니다.
저는 휴학 중에 먼저 딥러닝을 Andrew Ng 의 Machine Learning 수업과 Deep Learning Specialization 을 통해 배우고, 그 후 바로 David Silver 의 UCL Course on RL 을 통해서 강화학습을 시작했습니다. 굉장한 난이도라서 스터디를 구하던 와중, 모두의연구소 라는 곳을 알게 되어서 스터디에 참여하게 되었습니다.
첫 6개월 정도는 스터디를 통해 강화학습의 교과서 Sutton & Barto 를 읽으면서 가장 유명한 논문들 몇 개 (Rainbow, PPO) 에 초점을 맞추었습니다. 이 교과서들을 완벽하게 이해하지는 못했지만, 교과서에 있는 용어들에 익숙해지면서 논문들을 좀 더 편하게 읽을 수 있었습니다.
그 이후에는 교과서보다는 실전 경험을 쌓고 싶었고, 강화학습 대회들에 참여하기 시작했습니다. 처음 OpenAI Retro Contest 에 입상하지는 못했지만, 잘 알려진 알고리즘 (Rainbow)에 저만의 아이디어들을 구현해서 실험해보면서 강화학습의 첫 걸음을 내딛었습니다. 그 이후에는 NeurIPS 2018 AI Prosthetics Challenge, Unity Obstacle Tower Challenge 등 다양한 대회에 참여해 보았습니다.
그렇게 대회를 참여하다 보니, 자연스레 제가 알고 있는 알고리즘보다 더 뛰어난 알고리즘은 없는지 궁금해졌고, 그렇게 최신 논문들을 읽어보기 시작했습니다. 최신 논문이 나오는 속도를 따라잡기 위해 빠르게 논문의 중요성을 판별하는 법과 논문이 말하고자 하는 것을 찾는 법을 터득했습니다. 또 이렇게 읽은 논문들을 정리하면서 자연스럽게 강화학습 뉴스레터 를 시작했는데, 덕분에 최신 논문을 읽고 정리하는데 좋은 습관을 들일 수 있었습니다.
또 이렇게 논문을 읽고 대회에 참여하면서, 저 나름대로의 연구 주제들도 떠오르기 시작했습니다. 그러기 위해서는 우선 구현하는 능력이 필요하기 때문에, 그 능력을 갖춰보려 열심히 코딩중입니다.
2019년 여름 현재 Google Summer of Code 라는 프로그램을 통해 TensorFlow의 정식 강화학습 라이브러리 TF-Agents 에 기여하고 있으며, 그와 별개로 AAAI-20 과 ICLR 2020 에 제출하기 위해 논문을 준비하는 중입니다.
(이정우) 저는 컴퓨터 공학을 전공하면서 학부3학년에 있던 기계학습 수업을 통해 강화학습의 원리를 처음 알게 되었습니다. 이유는 모르지만, 당시 한창 인기있던 NLP, CV분야 보다 강화학습에 관심이 많이 생겼습니다. 특히 4학년 인공지능 수업시간에 교수님께서 windy-world 환경, Q-learning, SARSA에 대한 python scratch 코딩 과제를 제출해주셔서 atari로 강화학습을 시작하신 분들 보다, 강화학습에서 필요한 전체 흐름에 대해 빨리 익혔던 것 같습니다.
본격적으로 Deep Reinforcement Learning은 모두의 연구소에서 진행했던 AI college 활동을 하면서 하게 되었습니다. 스타크래프트를 이용한 환경에서 여러 task를 강화학습으로 해결해 보면서, DQN, A2C, PPO를 구현해 적용 했고, 효과적으로 task를 풀 수 있었습니다. 이 당시 multi-agent RL에 대해서도 몇가지 실험해 보고 논문을 공부하면서 시야를 넓힐 수 있었습니다.
이후에는 레빈 교수님의 CS285 강좌, DeepMind의 주요 알고리즘 논문 리뷰를 하는 'DeepMind 따라가기', 그리고 개인적으로 사람과 같은 지능체에 어울린다고 느낀 Model-based RL 분야의 논문들을 공부해 왔습니다.
알고리즘 구현에 있어서는 DQN부터 Rainbow까지 최대한 논문과 같도록 구현을 진행해봤습니다. 결국 소프트웨어로 탄생 시켜야한다는 점에서, 논문에 기반한 알고리즘 구현이 이해도와 경험적인 면에서 많은 도움이 되었습니다.
최근의 관심사는 highest return policy 1개만 추구하는 Agent보다, 현실세계에서 유연한 policy 사용이 가능한 Agent 구현에 관심을 가지고 있습니다. Continual Learning, Diversity, Option에 관련된 연구들을 주요하게 살펴보고 있습니다. 현재는 행동 중심의 강화학습뿐만 아니라, NLP, CV 등 기존에 잘 적용 되지 않았던 분야에서의 강화학습 활용에 대해 연구하고 있습니다.
(정규열)저는 게임업계에서 프로그래머로 3년간 근무했었고 게임에도 AI를 적용하고싶은 마음이 들어 강화학습을 처음 접하게 되었습니다. 게임개발 하면서 짬을 내어 조금식 강화학습 알고리즘들을 공부하였고 처음에는 어려웠지만 흥미를 느끼며 몇가지 모델도 구현해 보았습니다. 이후 좀 더 심화된 내용 즉, 게임에 꼭 필요한 협력적 Multi-Agent Reinforcement Learning(MARL)을 연구를 하고싶어 대학원에 진학하였습니다.
대학원에서 MARL 연구를 시작 했지만 강화학습에 대해 아직은 기초가 부족한 상태였기 때문에 이해하기는 매우 어려웠습니다. 따라서 기본부터 다시 공부하기 시작하였으며 DQN을 직접 구현해 보았고 Policy Gradient의 구현 및 수식들을 이해하려고 노력하였습니다. 이러한 기본기를 먼저 쌓은 덕분에 이후에 새로운 논문 및 여러가지 모델들을 봐도 이해가 잘되기 시작하였습니다.
이렇게 기본기를 쌓았던 덕분에 본격적으로 MARL에 매진할 수 있었습니다. MARL 모델 중 이해하기 간단하며 2021년 현재까지도 나름 준수한 성능을 보이는 Q러닝 기반의 QMIX(2018년에 제안) 모델을 집중적으로 분석하기 시작 하였습니다. 주로 실시간 전략게임 스타크래프트2에서 MARL 챌린지 환경으로 제공하는 SMAC : StarCraft Multi-Agent Challenge환경에서 적용된 QMIX 코드와 논문을 이해하려고 노력하였습니다. 또한 Actor-Critic 기반의 COMA 모델도 분석을 하였고 이에따라 MARL의 연구 이슈 및 방향을 파악할 수 있었습니다. 여기서 더 나아가 앞서 언급한 COMA 모델을 현실적인 문제에 대응시키기 위한 모델을 고안 하였습니다. 이 모델을 정보처리학회논문지 소프트웨어 및 데이터 공학에 투고 하였습니다.
이후 좀 더 심화된 MARL 기법들을 파악하기 시작하였습니다. 먼저 일반적인 강화학습과 달리 MARL에서는 Policy Gradient 기법의 성능이 떨어지는 이유를 분석한 모델 DOP를 파악하였습니다. 그 다음 ROLE을 부여하여 MARL을 접근하는 ROMA, RODE 기법을 파악하였고 코드까지 모두 분석을 하였습니다. 특히 RODE는 heuristic하게 변경하여 효과적인 모델로 제안 하고자 하였으나 성능이 차이가 크지 않아 접은 경험도 있습니다. 이러한 경험들을 바탕으로 제 개인 블로그에 MARL 모델들을 정리 했으며 Github에 여러가지 MARL baseline 모델을 정리하였습니다.
한편으로는 제가 게임업계에서 근무할때 Unity3D를 이용하였기 때문에 ML-Agent 또한 공부하였습니다. 특히 제가 직접 환경을 만들어 강화학습을 진행 할 수 있다는것이 너무 매력적이었습니다. 이 부분은 규식님의 책 : 텐서플로와 유니티 ML-Agents로 배우는 강화학습의 도움을 많이 받았습니다. 이후 제가 비행슈팅게임을 직접 만들어 강화학습을 진행해 보았습니다. 추가적으로 제가 연구하고 있는 MARL을 직접 환경제작 및 학습을 시키고자 PredatorPrey게임을 만들어 QMIX로 학습을 해 보았고 나름 성능도 괜찮았습니다.
현재는 Continual Learning을 추가적으로 공부하여 MARL에 적용하려고 시도하고 있습니다. 이를 통해 여러 Task를 순차적으로 학습 할 경우 몇개 Task를 망각하는 문제를 해결하기 위한 연구를 진행하고 있습니다.