나는 큰 오해를 하고 있었다. 아타리, OpenGym등 오픈소스를 보면서 DQN의 Input이 image로 한정되고, 효율이 가장 좋다고.
하지만 몇 가지의 예시를 보면서 그것이 아니라는 것을 알게 되었다.
DQN은 이미지나 음성같이 raw data만을 input으로써 받는것이 아니고 자유롭게 설정할 수 있다(학습에 필요한 데이터가 충분히 주어진다면) 그리고 DQN 알고리즘은 Neural Network Architecture과 분리 다른 존재로 봐야한다.
DQN이 아무 Neural Network Architecture의 구조를 사용해도 되는것은 맞지만 일반적으로 사용되는 것은 Convolutional layers를 시작 layers로 한 구조이고 그 구조가 이미지 기반 입력에 적합한 것 뿐이다.
사용하지 않는 예시는 다음과 같다. 두 예시는 Convolutional layers가 없는 비교적 간단한 다중레이어 구조이다.
이는 즉, 어떤 구조여도 무관하지만, 위의 예시와 같이 학습을 위한 입력값이 적절히 들어와야 함을 보여준다.
하지만 2015년에 AlphaGo를 개발한 DeepMind의 "Playing Atari with Deep Reinforcement Learning"은 image을 input으로 하고 CNN을 사용하는 심층 강화학습이라고 한다. 뭐 짧게 DQN 2.0, 3.0 이렇게 표현하기도 하던데 아마 이 부분에서 내가 햇갈린것이 아닌가 싶다.
하지만 앞서 확인해 보았듯이 문제는 이거다. 어떤 입력이든 DQN을 사용할 순 있지만 어떤 구조일때 DQN이 강력할까?
만약 feature들이 올바르게 학습시킬 수 있을만큼 잘 정의되어 있고 확신이 있다면 DQN을 쓰지 않아도 되지만, 이미지 기반 입력이라면 DQN을 사용하는 것이 좋다고 한다.
결국 중요한 것은 input의 관점보다는 나의 input에 대하여 학습모델을 결정하는 것이 바람직하다는 것이다.
'ML' 카테고리의 다른 글
트리 탐색과 유전 알고리즘을 활용한 외판원 문제 근접해 구하기 (0) | 2021.05.12 |
---|---|
ML Agent의 강화학습을 활용한 Unity AI학습 (0) | 2021.05.11 |
TensoFlow를 활용한 DQN 실습 Breakout 적용 - 2 (0) | 2021.04.03 |
TensoFlow를 활용한 DQN 실습 Breakout 적용 - 1 (0) | 2021.04.03 |
Convolutional layer (ConvNet, CNN) (0) | 2021.04.02 |