2048게임을 통한 강화학습 효율 비교 - 고등학교 졸업논문
고3 때 쓴 졸업논문을 정리하는 글이다.
주제는 강화학습이고 2048 게임을 가지고 학습의 효율을 비교하는 연구를 진행했다.
연구에서 사용되는 강화학습 모델은 DQN이라는 알고리즘인데, 이를 이해하기 위해서 먼저
강화학습의 기본 원리와 Q-learning 알고리즘을 알아야 한다.
https://bluesunset-hack.tistory.com/249
강화학습(마르코프 체인, 벨만 방정식, Q-learning)
강화학습은 Agent가 환경과 상호작용하며 보상을 최대화하는 action을 학습하는 기계 학습의 한 분야이다.Agent는 학습하고 행동을 하는 주체를 말하고, 주어진 환경에서 어떤 행동이 보상을 최대화
bluesunset-hack.tistory.com
해당 내용을 정리한 글이다.
Q-learning에서는 모든 상태 s와 행동 a에 대한 가치함수 Q(s,a)를 정의한다.
하지만 상태가 너무 많은 경우에는 이 방법을 사용할 수 없다.
당장 2048게임만 보더라도 16개의 칸 각각에 숫자가 2^1부터 2^11 까지 11가지나 들어갈 수 있으니
상태의 수가 11^16가지이다.
이렇게 많은 상태에 대해서는 Q-learning을 사용할 수 없기 때문에 이 알고리즘을 딥러닝과 결합한 모델이 바로 DQN이다.
DQN은 CNN 딥러닝 모델을 사용한다.
상태 s를 CNN 모델에 넣어서 모든 행동 a에 대한 Q(s,a1)...Q(s,an) 값을 뽑아낸다.
그리고 ε-greedy 로 행동을 하고, 실제로 관측된 보상으로 Q(s,a) 와의 오차를 계산해 CNN 모델의 가중치를 업데이트한다.
간단하게 생각해서 Q-learning 알고리즘은 모든 s,a 에 대해 Q(s,a) 테이블을 채워나갔다면,
DQN은 상태 s를 CNN 모델에 넣으면 모든 행동 a에 대한 Q(s,a)의 예측값이 나오는 방식이다.
실제 문제에서 상태 s가 너무 많거나 연속적인 값으로 이루어져 있는 경우가 많기 때문에 DQN이 더 일반적으로 많이 쓰인다.
내 연구에서는 2048게임과 3D 2048 게임을 이 DQN 알고리즘으로 학습시킨다.
3D 2048게임은 그냥 2048게임을 3차원으로 확장시킨 게임이다.
2048게임의 상태를 CNN 모델에 넣기 위해서 원핫인코딩을 해준다.
그렇게 생성된 4*4*12 크기의 상태 벡터를
(1,2), (2,1) 크기의 컨볼루션 레이어에 통과시킨다.
이 과정을 2번 해서 레이어에 통과시킨 모델을 출력층 레이어가 4개가 되도록 출력시킨다.
상하좌우 4개의 행동에 대한 Q값 예측 모델을 만든 것이다.
3D 2048 게임도 같은 원리로 예측 모델을 만들어준 뒤에 학습을 진행했다.
주제가 학습 효율 비교인데 학습에서 사용되는 gamma, batchsize, epsilon 이렇게 3가지 하이퍼 파라미터를 바꿔가며 비교했다.
gamma는 Q 함수를 업데이트 할때 미래의 보상에 대한 할인율은 의미하고, epsilon은 ε-greedy의 ε이다.
batchsize는 한번에 사용하는 샘플 수인데 강화학습 말고도 딥러닝이나 여러 학습에서 중요한 파라미터이다.
batchsize를 128, 256, 512일 때 각각 gamma 0.7, 0.8, 0.9, epsilon 0.7, 0.8, 0.9에 대해 9가지씩 총 27번 학습을 진행했다.
그래서 최적의 하이퍼 파라미터를 찾는 것이 연구 목표이다.
결과적으로 학습 노가다를 해서 그래프를 그리고 점수가 가장 높은 하이퍼 파라미터를 찾는 연구이다.
몇년이 지난 상태에서 다시 보니 이 졸업논문이 연구적 가치는 그렇게 높지 않다는 생각이 든다.
하이퍼 파라미터는 학습 효율을 결정짓는데 중요한 요소이긴 하지만, 결과를 보면 학습 효율이 그렇게까지 차이가 나지 않는다.
그리고 2048게임 말고 다른 특정 문제에 대해 똑같이 DQN 알고리즘을 사용한다고 할때, 이 연구에서의 하이퍼 파라미터를 똑같이 사용해야 학습 효율이 높지는 않을 것이다.
그렇다고 2048게임을 학습할 때는 이 하이퍼 파라미터를 사용하면 된다 이런 결론을 얻을 수 있는 것도 아니다.
단순히 CNN 모델의 레이어 크기만 조금 건드려도 최적의 하이퍼 파라미터는 바뀔 수 있다.
즉, 이 연구에서 구한 최적의 하이퍼 파라미터는 아무 쓸모가 없다는 소리이다.
그리고 같은 하이퍼 파라미터를 사용하더라도 학습 효율이 똑같을 수 없다.
애초에 ε-greedy를 사용하는 것부터 학습을 시킬 때마다 다른 결과가 나올 수 밖에 없는데 이 연구에서 구한 하이퍼 파라미터는
단순히 학습 몇번 시켜봤을 때 이 값이 가장 학습이 잘 된다라는 결론을 낸 것인데, 다음에는 다른 결론이 나올 수도 있다.
쓸데도 없는 값을 구했는데 그것조차 부정확하다는 말이라 연구적 가치가 낮긴 하지만, 내가 이 주제를 정한건 강화학습을 공부하고 싶어서 였기 때문에 어쩔 수 없었다고 생각한다.
DQN 알고리즘으로 모델을 설계하고 학습을 시켜보면서 딥러닝과 강화학습에 대한 이해도가 높아졌기 때문에 나에게는 의미 있었던 연구였지만 좀 더 가치 있는 연구 주제를 생각해 냈었다면 좋았겠다는 생각이 든다.
아래에 내가 썼던 논문을 올릴테니 자세한 과정이 궁금한 사람은 참고하면 될 것 같다.