의견.png

"DQN"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
5번째 줄: 5번째 줄:
  
 
==특징==
 
==특징==
* 합성곱층(Convolution Layers) : 지금까지 다뤘던 frozenLake나 cartPole은 인풋값이 매우 단순하여 큰 문제 없이 신경망을 구성할 수 있었다. 하지만 대부분의 게임은 매우 복잡한 환경과 인풋값을 가지고 있다. 이런 복잡한 인풋값에 대응하기 위한 좋은 방법은 CNN을 이용하는 것이다. CNN은 기존의 NN에 비해 더 딥하게 학습을 하는데 도움을 줄 수 있다.
+
* '''합성곱층'''(Convolution Layers) : 지금까지 다뤘던 frozenLake나 cartPole은 인풋값이 매우 단순하여 큰 문제 없이 신경망을 구성할 수 있었다. 하지만 대부분의 게임은 매우 복잡한 환경과 인풋값을 가지고 있다. 이런 복잡한 인풋값에 대응하기 위한 좋은 방법은 CNN을 이용하는 것이다. CNN은 기존의 NN에 비해 더 딥하게 학습을 하는데 도움을 줄 수 있다.
  
* 익스피리언스 리플레이(Experience Replay) : 이 방법은 기존의 정책 학습에서도 비슷하게 사용했던 방법이다. 첫 번째 아이디어는 스텝에 따른 결과로 바로 학습을 하는 것이 아니라 버퍼에 담아 두는 것이다. 두 번째 아이디어는 이 버퍼에 담긴 값들을 전부 사용하는 것이 아니라 랜덤하게 뽑아 학습에 사용한다. 이렇게 랜덤하게 선택을 하여 학습을 하는 이유는 일반적인 환경에서는 에이전트가 연속적으로 움직이기 때문에 연속적으로 쌓인 결과가 매우 근접하고 비슷하여 특정 상황에서 쌓인 결과일 가능성이 높다. 하지만 이렇게 랜덤하게 뽑아 학습을 한다면 전체적인 다양한 경험을 통해 올바를 학습을 할 수 있다.
+
* '''익스피리언스 리플레이'''(Experience Replay) : 이 방법은 기존의 정책 학습에서도 비슷하게 사용했던 방법이다. 첫 번째 아이디어는 스텝에 따른 결과로 바로 학습을 하는 것이 아니라 버퍼에 담아 두는 것이다. 두 번째 아이디어는 이 버퍼에 담긴 값들을 전부 사용하는 것이 아니라 랜덤하게 뽑아 학습에 사용한다. 이렇게 랜덤하게 선택을 하여 학습을 하는 이유는 일반적인 환경에서는 에이전트가 연속적으로 움직이기 때문에 연속적으로 쌓인 결과가 매우 근접하고 비슷하여 특정 상황에서 쌓인 결과일 가능성이 높다. 하지만 이렇게 랜덤하게 뽑아 학습을 한다면 전체적인 다양한 경험을 통해 올바를 학습을 할 수 있다.
  
* 분리된 타켓 네트워크(Separate Target Network) : 기존 큐네트워크의 문제점 중 행동(predit Y)과 타켓(target(lable) Y)를 산출하는 중간에 모델이 계속 훈련된다는 문제가 있었다. 이 것이 문제가 되는 이유는 행동이 타켓을 향해 가까이 가도록 점점 훈련을 하는 것이 이 학습의 목적인데 타켓이 계속 바뀜으로써 행동이 어디로 갈지 갈길을 잃는 경우가 생긴다. 이 문제를 해결하기 위해 DQN에서는 간단하게 두 개의 모덴 메인, 타켓을 사용하는 방법을 이용했다. 모델을 두 개로 분리하여 메인 신경망에서는 행동을 계산하고 타켓 신경망에서는 타켓(lable Y)를 산출하여 Q값을 계산한다. 그리고 이 타켓 신경망은 일정 배치(batch)에 한 번씩 학습된 메인 모델을 타켓 모델로 복사를 하여 학습을 하게 된다.<ref> 〈[https://jaykaychoi.tistory.com/159 Deep Q-Networks and Beyond]〉, 《티스토리》, 2017-04-17</ref>
+
* '''분리된 타켓 네트워크'''(Separate Target Network) : 기존 큐네트워크의 문제점 중 행동(predit Y)과 타켓(target(lable) Y)를 산출하는 중간에 모델이 계속 훈련된다는 문제가 있었다. 이 것이 문제가 되는 이유는 행동이 타켓을 향해 가까이 가도록 점점 훈련을 하는 것이 이 학습의 목적인데 타켓이 계속 바뀜으로써 행동이 어디로 갈지 갈길을 잃는 경우가 생긴다. 이 문제를 해결하기 위해 DQN에서는 간단하게 두 개의 모덴 메인, 타켓을 사용하는 방법을 이용했다. 모델을 두 개로 분리하여 메인 신경망에서는 행동을 계산하고 타켓 신경망에서는 타켓(lable Y)를 산출하여 Q값을 계산한다. 그리고 이 타켓 신경망은 일정 배치(batch)에 한 번씩 학습된 메인 모델을 타켓 모델로 복사를 하여 학습을 하게 된다.<ref> 〈[https://jaykaychoi.tistory.com/159 Deep Q-Networks and Beyond]〉, 《티스토리》, 2017-04-17</ref>
  
 
==알고리즘==
 
==알고리즘==

2020년 7월 28일 (화) 17:13 판

DQN(Deep Q-Networks)은 구글 딥마인드(DeepMind)에서 발표한 논문 Playing Atari with Deep Reinforcement LearningHuman-level control through deep reinforcement learning에서 제시된 강화학습 알고리즘으로, 기존 큐러닝(Q-learning) 알고리즘의 Q(action-value) 함수를 딥러닝으로 근사하는 알고리즘이다.

개요

DQN은 큐러닝과 딥러닝을 합친 것을 말한다. 큐테이블(Q-table) 대신 신경망(neural net)을 사용해서, 뉴럴넷이 Q 가치를 근사해낼 수 있도록 학습시키는 것이다. 이러한 이유로 DQN은 근사기(approximator) 또는 근사 함수(approximating functioin)이라고 부르기도 한다. 아타리 2600 게임을 인간 수준으로 플레이할 수 있는 인공지능이며, 2015년 2월 네이쳐에 게재되었다. 이 인공지능의 놀라운 부분은, 인공지능에 화면을 입력하고 패드를 움직이도록 하여 '고득점을 내는 것이 목표이다' 이외에 아무 것도 알려주지 않고 마음대로 플레이하게 두었더니, 스스로 게임을 이해하고 공략법을 알아내었다는 것에 있다.[1] 이 알고리즘이 중요한 이유는 딥러닝을 강화학습에 적용하는 것을 어렵게 하는 문제를 해결했기 때문이다. 어려운 점의 대표적인 예시로는 성공적인 딥러닝을 위해선 잘 가공된 대규모의 데이터 셋이 필요한데, 강화학습은 인풋에 대응되는 정답을 명확히 알 수 없을 뿐더러 지연(delay)가 있고 노이즈가 섞인 스칼라 리워드(scalar reward)만으로 네트워크를 학습해야한다. 또한, 대부분의 딥러닝 알고리즘은 학습 데이터가 서로 독립적임을 가정하는데, 강화학습에 쓰이는 환경에서 제공하는 데이터는 연속된 행동에 대한 결과이지 때문에 서로 연관되어 있다. 심지어 에이전트가 학습함에 따라 정책(policy) 또한 달라지면서, 학습 데이터의 분산(distrubution) 자체도 시간에 따라 변화한다. 딥러닝은 데이터에 대해 고정된 기본 분산(fixed underlying distribution)을 가정하기 때문에 학습이 제대로 진행되지 않을 수 있다. DQN은 첫 번째 문제에 대해서는 특별한 해법을 제시하지 않았고, 두 번째 문제는 exprience replay라는 개념을 통해 어느 정도 해결했다. 이 개념은 들어로는 입력을 순서대로 사용하면 데이터 간 연관성이 너무 커지므로 최근 x개의 데이터를 계속해서 저장하고, 네트워크를 학습할 땐 저장한 데이터 중 몇 개를 무작위로 샘플하여 사용하는 방법이다.[2]

특징

  • 합성곱층(Convolution Layers) : 지금까지 다뤘던 frozenLake나 cartPole은 인풋값이 매우 단순하여 큰 문제 없이 신경망을 구성할 수 있었다. 하지만 대부분의 게임은 매우 복잡한 환경과 인풋값을 가지고 있다. 이런 복잡한 인풋값에 대응하기 위한 좋은 방법은 CNN을 이용하는 것이다. CNN은 기존의 NN에 비해 더 딥하게 학습을 하는데 도움을 줄 수 있다.
  • 익스피리언스 리플레이(Experience Replay) : 이 방법은 기존의 정책 학습에서도 비슷하게 사용했던 방법이다. 첫 번째 아이디어는 스텝에 따른 결과로 바로 학습을 하는 것이 아니라 버퍼에 담아 두는 것이다. 두 번째 아이디어는 이 버퍼에 담긴 값들을 전부 사용하는 것이 아니라 랜덤하게 뽑아 학습에 사용한다. 이렇게 랜덤하게 선택을 하여 학습을 하는 이유는 일반적인 환경에서는 에이전트가 연속적으로 움직이기 때문에 연속적으로 쌓인 결과가 매우 근접하고 비슷하여 특정 상황에서 쌓인 결과일 가능성이 높다. 하지만 이렇게 랜덤하게 뽑아 학습을 한다면 전체적인 다양한 경험을 통해 올바를 학습을 할 수 있다.
  • 분리된 타켓 네트워크(Separate Target Network) : 기존 큐네트워크의 문제점 중 행동(predit Y)과 타켓(target(lable) Y)를 산출하는 중간에 모델이 계속 훈련된다는 문제가 있었다. 이 것이 문제가 되는 이유는 행동이 타켓을 향해 가까이 가도록 점점 훈련을 하는 것이 이 학습의 목적인데 타켓이 계속 바뀜으로써 행동이 어디로 갈지 갈길을 잃는 경우가 생긴다. 이 문제를 해결하기 위해 DQN에서는 간단하게 두 개의 모덴 메인, 타켓을 사용하는 방법을 이용했다. 모델을 두 개로 분리하여 메인 신경망에서는 행동을 계산하고 타켓 신경망에서는 타켓(lable Y)를 산출하여 Q값을 계산한다. 그리고 이 타켓 신경망은 일정 배치(batch)에 한 번씩 학습된 메인 모델을 타켓 모델로 복사를 하여 학습을 하게 된다.[3]

알고리즘

2013 NIPS

Playing Atari with Deep Reinforcement Learning 버전의 알고리즘이다. 기존의 큐러닝 알고리즘과 다른 부분은 크게 두 가지 이다.

  • Q 함수를 배열(array)이나 딕셔너리(dictionary)가 아닌 신경망으로 구현했다. 이는 'Q 함수를 딥러닝을 통해 근사했다' 정도로만 생각할 수도 있지만, 그것보단 더 의미 있는 일이다. 먼저 Q 함수를 뉴럴넷으로 근사한 덕분에 사람이 직접 특징을 정해주는 Hand-crafted feature가 아닌 이미지 픽셀 정보를 상태로 사용할 수 있게 되었다. 만약 Q 함수를 배열로 구현했다면 비슷한 상태, 예를 들어 공의 위치가 1픽셀 정도 다른 두 상태에 대해서 서로 연관성 있는 결과를 얻어내기 힘들 것이다. 하지만 딥뉴럴넷(Deep Neural Network)의 종류 중 하나인 CNN을 통해 중요한 정보를 자동으로 뽑아낸 다음 그 특징들을 기반으로 다시 각각의 Q 값을 계산하기 때문에 특징도 자동으로 뽑아내며 작은 상태 변화에 대해 로버스트한 계산을 기대할 수 있다.
  • 기존 큐러닝에서는 목표값(target value)를 정확하게 학습할 수 있었는데, 그냥 배열이나 다른 자료구조에 그 값을 대입해버리게 되기 때문이다. 하지만 Q함수를 뉴럴넷으로 구현하면 목표값을 정확하게 나타내려면 여러번의 경사 하강법(gradient descent)을 시행해야 하고, 무엇보다 기존에 학습한 결과가 바뀔수 있다. 또한 동시에 학습 데이터의 분포가 바뀌기 때문에 안정적인 학습이 이루어지기 힘들다. 이러한 문제점을 해결해 주는 것이 exprience replay이다.[2]

2015 NATURE

2013년 버전과 비교하여 가장 눈에 띄는 변화는 목표값의 계산 방식이다. 2013년 버전의 경우 목표값 를 계산할 때 Q 함수를 그대로 사용한 반면 2015년 버전의 경우 일정 스텝 동안 weight를 고정한 네트워크인 을 사용한다. 이를 통해 학습의 불안정성을 개선했다고 한다. 그 외의 변경사항은 3가지가 있다.

  • 이미지를 전처리 할 때 110*84로 줄인 뒤 중앙을 잘라내는 방식이 아닌 처음부터 84*84로 재설계(rescale)했다.
  • 네트워크의 구조가 더 깊어졌다.
  1. 84*84*4 크기의 입력 레이어
  2. 보폭(stride) 4, 8*8 크기의 필터 32개를 적용한 뒤 ReLU 적용
  3. 보폭 4, 4*4 크기의 필터 64개를 적용한 뒤 ReLU 적용
  4. 보폭 4, 3*3 크기의 필터 64개를 적용한 뒤 ReLU 적용
  5. 512개의 노드를 가지는 출력 레이어(fully-connected)와 연결후 ReLU 적용
  6. "가능한 행동의 개수" 크기의 출력 레이어와 연결
  • 각 프레임을 그대로 쓰지 않고, 바로 이전 프레임과 픽셀 단위로 최대(max) 연산을 취한 프레임으로 사용했다. 아타리 게임에서 사용되는 물체 중 홀수번째 프레임에만 등장하거나 짝수번째 프레임에만 등장하는 경우가 있기 때문이다. 프레임스킵핑(frame-skipping)까지도 고려하면 원래 게임의 번째 프레임 중 사용되는 프레임은 번째 프레임을 최대 연산으로 합친 프레임 하나이고, 이러한 프레임 4개를 쌓아서 하나의 상태로 쓰는 것이다. 아래는 하나의 상태를 나타낸 것이다.[2]

각주

  1. DQN 나무위키 - https://namu.wiki/w/DQN
  2. 2.0 2.1 2.2 기리이이이인, 〈Deep Q Network〉, 《기리이이이인》, 2018-03-10
  3. Deep Q-Networks and Beyond〉, 《티스토리》, 2017-04-17

참고자료

같이 보기


  의견.png 이 DQN 문서는 인공지능 기술에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.