개요
강화학습이란 무엇인지가 너무 궁금하였으며, 몬테카를로 트리 서치가 어떻게 동작하는지 궁금하여 읽게되었다. 책의 내용은 기계학습 중 대표적인 강화 학습과 딥 러닝에 대해서 설명이 되어 있었는데, 그 중 딥 러닝 내용은 많이 쉽고, 이미 기존에 다 알고있던 내용이라서 크게 어렵게 다가오지 않았다. 하지만 강화학습의 경우 잘 알지 못하였던 개념이 많아 많이 어려움을 겪었다. 책의 핵심적인 요소에 대한 개념은 모두 이해하고 읽었지만, 논리적인 수학적인 공식은 따로 읽지 않으면서 기초로 맛보기로 이해하기로 하였다(솔직하게 개념을 읽고 1~2년 뒤에 다시 읽으면 머리가 스스로 해석하고 분석해주기에..). 그런 다음 간단히 개념과 머릿속을 정리하는 계기로 작성하게 되었다.
딥 러닝에 대한 내용
딥 러닝은 지금 현재 연구하고 있는 분야이기도하며, 요새는 너무 심층적으로 공부하다 보니 너무 쉬워진 개념이 되고 말았다. 만일 1~2년전의 지식이였다면 정말로 어려워했을 것 같지만 지금은 많이 쉬워졌다. 내용으로는 Neural Network에서 분류하고, 회귀하고, ResNet이 무엇인지 설명을 하였다. 특히 ResNet을 주로 연구하고 있던지라 Residuel Block이나 Convolution을 단순히 깊게 만든 VGG 쪽으로 공부하고 있던지라 크게 어렵지 않고 쉽게 이해할 수 있었으며, 크게 어렵지 않았다.
강화학습에 대한 내용
강화 학습은 놀랍게도 이미 알고 있었던 내용이 절반이상 나와 나를 당황하게 만들었다. 과거에 작성하였던 [MinMax]나 Alpha Beta 프루닝과 같은 내용이 강화 학습 중 하나였다는것에 많이 놀라였다. 그 외에 몬테카를로 탐색 방법은 효율적으로 트리를 탐색하는 기법 중 하나였으며, 이를 수학적인 표현 방법 중 하나였다는 것을 알게 되었다. 그래서 모든 수를 탐색하는 알파베타에 비해, 성능이 안좋다는 것을 알게 된 순간 몬테카를로 트리 서치에 대한 이해가 급상승하게 된 계기가 되었다.
알파 제로에 대한 내용
알파 제로는 딥러닝을 통해 현재의 보드 상태를 수치화하며, 몬테카를로 트리 서치를 통해 효율적인 트리 탐색을, 이 모든것을 학습을 하기 위한 강화학습을 통한다는것을 알게 되었다. 이때, 만약 트리 서치를 알파 베타를 수행하게 된다면 엄청나게 많은 딥러닝 추론하게 되면서 성능이 느려지게 된다. 따라서 완전 탐색 게임을 수행할 수 없는 경우 비교적 효율적인 탐색을 할 수 있는 몬테카를로 트리 서치가 등장하게 된 계기이다.
알파 제로에서 딥러닝을 수행하는 부분은 “학습 및 가중치를 저장하는 딥러닝 모델”과 “실제로 게임을 하면서 점수를 구한 후 학습을 위한 데이터를 생성하는 딥러닝 모델” 이렇게 2가지가 존재한다(이때 2개의 딥러닝 모델은 동일할 수 있고, 다를 수 있다.). 이때 발생된 학습을 위한 데이터를 다시 강화학습이나 가중치를 재조정을 함으로써 다시 현재 상태에 대한 점수를 다시 측정할 수 있다. 이를 지속적으로 반복하여 현재 상태를 최고의 점수를 나타내는 딥러닝 모델과, 최소한의 탐색으로 최고의 값을 탐색하는 몬테카를로를 활용하는 것이다.
이때 알파제로는 게임의 점수를 계산하기 위해 ResNet을 활용하였기에, 본 책의 딥 러닝에 대한 내용에서 ResNet을 예시로 든 것 같다. 이후의 대한 내용은 수학적인 요소가 잔뜩 들어가 있다보니 자세히 읽지는 않았다.
정리
우선적으로 개념을 정리하면서 처음엔 많이 어려웠던 강화학습이라는 내용이 DQN과, 알파 제로의 구현 방식에 대해서 이해하게 되면서 정말 간단하면서 매우 신박한 개념을 적용하였다는것을 알게 되었다. 강화 학습과 딥 러닝은 완전히 다른 분야이면서 많은 분야에 적용할 수 있을것이라 생각하게 되었다. 예를 들어 알파 제로를 하이퍼 파라미터 최적화나, 블랙박스 최적화에 매우 효율적으로 적용이 가능할것이라 생각하게 된다.
물론 컴퓨터의 성능이 매우 뛰어나다면 크게 상관이 없겠지만.. 딥러닝 대신에 간단한 XGBoost나 다양하게 현재 상태를 분석할 수 있다면 무엇이든 최고로 좋은 강화학습 모델이 될 것이라 생각하게 된다.