티스토리 뷰

Study/MOOC

[MOOC] Reinforcement Learning Specialization

생각많은 소심남 2021. 2. 9. 23:30

아마 강화학습을 공부하는 사람이라면 Introduction to Reinforcement Learning이란 책은 거의 다 접해봤을 것이다. (무료로 제공되기도 하고, 참고로 번역본도 있어서 워낙 읽기가 쉬워졌다.) 사실 요새 유행하는 심층 강화학습을 이해하기 위해서는 기본적인 강화학습 이론에 대한 이해가 선행되어야 하고, 그 관점에서 보면 해당 책은 이론의 전개나 증명이 자세하게 다뤄진 거의 유일한 강화학습 책이 아닐까 싶다. 

그런데 그렇다고 뭔가 강화학습 이론을 실제로 적용해보고자 하는 사람은 이 책에서 언급된 SARSA나 Q-learning 이론을 구현해볼려고 딱 보면 난감하게 느낄 수 있다. 그도 그럴 것이 이 책은 프로그래밍 책이 아닌 엄연한 강화학습 이론서이기 때문에 자세한 알고리즘은 pseudo code 정도로만 제시되어 있다. 그래서 pseudo code를 python이나 c같은 프로그래밍 언어로 바꾸는데 익숙하지 않은 사람이라면, 책을 읽기가 아무래도 어려울 수 있다. 물론 이 책 말고도 전문적으로 강화학습을 python과 더불어서 소개하는 책들도 많이 나와있다. 또 앞에서 소개한 책도 서튼 교수 밑에 있던 학생(shangtong Zhang)이 python으로 변환한 코드를 공유해줬다. 여타 resource들이 많이 있긴하지만, 나도 개인적으로 공부하면서 도움을 받았던 resource를 공유해보고자 한다.

 내가 소개할 강의는 Coursera에서 제공되는 Reinforcement Learning Specialization이라는 프로그램이다. 

 

강화 학습

강화 학습에 대한 개념 이해. Implement a complete RL solution and understand how to apply AI tools to solve real-world problems. Enroll for free.

www.coursera.org

이 프로그램은 University of Alberta에서 제공하는 강의의 모음집이고, 총 4개의 강좌

Fundamentals of Reinforcement Learning
Sample-based Learning Methods
Prediction and Control with Function Approximation
A Complete Reinforcement Learning System (Capstone)

로 이뤄져 있다. 이 중 3개의 강의는 앞에서 소개한 Introduction to Reinforcement Learning에서 소개된 이론들을 다루고, 마지막 강의에서 배운 이론을 실제로 적용해보는 과정으로 되어 있다. 사실 직접 실습을 해보거나 퀴즈를 풀기 위해서는 수강료를 지불해야 하지만, 무료로 제공되는 강의 내용만 해도 책의 내용을 자세하게 다뤄주고 있어 좋다. 뭔가 책이 조금 장황하게 설명되어 있다고 생각한 사람은 강의를 들으면 좋을 것 같다. (무료로 강의를 수강하고 싶은 사람은 처음 수강시 audit 으로 신청하면 된다. 대신 언급했다시피 강의 내용을 복습할 수 있는 Python 과제나 퀴즈는 풀 수 없다.)

참고로 나는 Coursera Plus라는 일종의 정액제를 신청하고 있어서 해당 강의에 대한 실습과 퀴즈를 같이 배울 수 있었고, 해당 내용을 블로그에도 조금씩 정리해놨다. 그래서 작년 12월부터 듣기 시작한 내용이 오늘에서야 마무리하고 수료증을 받았다.

그림. Reinforcement Learning Specialization Certificate

물론 이 수료증이 기록 그 이상의 의미는 없지만, 사실 이 수료증보다 강의가 다루는 내용이나 다른 교수들이 부가적으로 설명해주는 내용들이 강화학습을 이해하는데 도움이 많이 되었다. 그리고 개인적으로는 돈을 내고서라도 이 강의에서 제공하는 프로그래밍 과제나 퀴즈를 푸는 것을 추천한다. 

참고로 프로그래밍 과제는 python으로 직접 강화학습 이론을 구현해보는 것이다. 물론 많이 알려져 있는 OpenAI Gym이나 Mujoco같이 복잡한 환경은 아니고, 간단한 이론 증명을 위해 구현된 RL-Glue 환경에서 강화학습 에이전트를 구현한다. 딱 필요한 것은 Python 프로그래밍 정도이고, Tensorflow나 PyTorch도 몰라도 된다. (심지어는 Neural Network을 직접 구현해서 Linear Function Approximator를 만들어보기도 한다)

여담이 좀 길긴 했는데, 이 강의의 좋은 점은 책의 진행방향과 일치하면서 내용이 진행되는 점이다. 강의의 서두마다 책에서 참고할 부분을 명시하기 때문에, 강의가 이해되지 않는다거나 조금더 자세하게 공부하고 싶은 사람은 강의와 책을 병행하면서 공부할 수 있다. 더불어 (유료로 제공되긴 하지만) 프로그래밍 과제는 배운 내용을 되짚어서 직접 강화학습 에이전트를 구현해보는 측면에서 도움이 많이 된다. 혹시나 어떤 형식인지 궁금한 사람은 내 github repository에도 강의 내용과 과제를 정리해놨으니까 참고하면 좋을 것 같다.

 

goodboychan/coursera

Repository for lectures offered from Coursera Plus - goodboychan/coursera

github.com

사실 나도 처음 강화학습에 관심을 가지고 공부를 하면서, "왜 신경망을 써서 강화학습을 적용하면 성능이 좋은데, 굳이 고전 강화학습 알고리즘을 알 필요가 있을까?" 하는 의구심을 가졌었는데, 이 강의도 듣고, 책을 읽으면서 내가 완전히 잘못 생각하고 있었다고 느꼈다. 그 심층 강화학습이라는 것도 결국에는 고전 강화학습이 기반이 되어서 파생된 알고리즘이고, 또 성능을 개선하고 새로운 부분을 찾기 위해서는 기존의 알고리즘에 대해서 어느정도 이해하고 있어야지 된다는 것을 많이 느끼고 있다. 그러다보니까 수학도 많이 부족한 것을 느끼고, 선형대수학이나 확률이론같은 원론적인 내용부터 공부하고 있다. ( 모르는 것을 파다보니까, 진짜 앎의 끝이 있는지도 잘 모르겠다....)

뭐 아무튼 Coursera에서 강화학습 강의가 제공되는데, 들어볼까 고민하는 사람한테는 도움이 되었으면 좋겠다.

PS: 처음 Specialization을 수료해서 잘 몰랐는데, 요새는 이런식으로 강의 이수 페이지를 제공하기도 한다. 그래서 강의에서 다룬 내용과 퀴즈/과제물 성적도 공유할 수 있다. 참 옛날에는 딸랑 PDF파일만 하나 줬었는데, 이제는 이렇게 제공되는 거 보면, 참 세상이 좋아진거 같다.

 

Completion Certificate for Reinforcement Learning

This certificate verifies my successful completion of University of Alberta's "Reinforcement Learning" on Coursera

www.coursera.org

 

댓글