DQN 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
4번째 줄: 4번째 줄:
  
 
==개요==
 
==개요==
DQN은 큐러닝과 딥러닝을 합친 것을 말한다. 큐테이블(Q-table) 대신 신경망(neural net)을 사용해서,  뉴럴넷이 Q 가치를 근사해낼 수 있도록 학습시키는 것이다. 이러한 이유로 DQN은 근사기(approximator) 또는 근사 함수(approximating functioin)이라고 부르기도 한다.<ref> Jeina, 〈[https://jeinalog.tistory.com/20 강화학습 개념부터 Deep Q Networks까지, 10분만에 훑어보기]〉, 《티스토리》, 2019-10-28</ref> 아타리(Atari) 2600 게임을 인간 수준으로 플레이할 수 있는 인공지능이며, 2015년 2월 네이쳐에 게재되었다. 이 인공지능의 놀라운 부분은, 인공지능에 화면을 입력하고 패드를 움직이도록 하여 '고득점을 내는 것이 목표이다' 이외에 아무 것도 알려주지 않고 마음대로 플레이하게 두었더니, 스스로 게임을 이해하고 공략법을 알아내었다는 것에 있다.<ref> DQN 나무위키 - https://namu.wiki/w/DQN</ref> 이 알고리즘이 중요한 이유는 딥러닝을 [[강화학습]]에 적용하는 것을 어렵게 하는 문제를 해결했기 때문이다. 어려운 점의 대표적인 예시로는 성공적인 딥러닝을 위해선 잘 가공된 대규모의 데이터 셋이 필요한데, 강화학습은 인풋에 대응되는 정답을 명확히 알 수 없을 뿐더러 지연(delay)가 있고 노이즈가 섞인 스칼라 리워드(scalar reward)만으로 [[네트워크]]를 학습해야한다. 또한, 대부분의 딥러닝 알고리즘은 학습 데이터가  서로 독립적임을 가정하는데, 강화학습에 쓰이는 환경에서 제공하는 데이터는 연속된 행동에 대한 결과이지 때문에 서로 연관되어 있다. 심지어 에이전트가 학습함에 따라 정책(policy) 또한 달라지면서, 학습 데이터의 분산(distrubution) 자체도 시간에 따라 변화한다. 딥러닝은 데이터에 대해 고정된 기본 분산(fixed underlying distribution)을 가정하기 때문에 학습이 제대로 진행되지 않을 수 있다. DQN은 첫 번째 문제에 대해서는 특별한 해법을 제시하지 않았고, 두 번째 문제는 exprience replay라는 개념을 통해 어느 정도 해결했다. 이 개념은 들어로는 입력을 순서대로 사용하면 데이터 간 연관성이 너무 커지므로 최근 x개의 데이터를 계속해서 저장하고, 네트워크를 학습할 땐 저장한 데이터 중 몇 개를 무작위로 샘플하여 사용하는 방법이다.<ref name="기린"> 기리이이이인, 〈[https://wwiiiii.tistory.com/entry/Deep-Q-Network Deep Q Network]〉, 《기리이이이인》, 2018-03-10</ref><ref name="숨니야"> 숨니야, 〈[https://sumniya.tistory.com/18 DQN(Deep Q-Networks)]〉, 《숨니의무작정따라하기》, 2018-02-04</ref>
+
DQN은 큐러닝과 딥러닝을 합친 것을 말한다. 큐테이블(Q-table) 대신 신경망(neural net)을 사용해서,  뉴럴넷이 Q 가치를 근사해낼 수 있도록 학습시키는 것이다. 이러한 이유로 DQN은 근사기(approximator) 또는 근사 함수(approximating functioin)이라고 부르기도 한다.<ref> Jeina, 〈[https://jeinalog.tistory.com/20 강화학습 개념부터 Deep Q Networks까지, 10분만에 훑어보기]〉, 《티스토리》, 2019-10-28</ref> 아타리 2600 게임을 인간 수준으로 플레이할 수 있는 인공지능이며, 2015년 2월 네이쳐에 게재되었다. 이 인공지능의 놀라운 부분은, 인공지능에 화면을 입력하고 패드를 움직이도록 하여 '고득점을 내는 것이 목표이다' 이외에 아무 것도 알려주지 않고 마음대로 플레이하게 두었더니, 스스로 게임을 이해하고 공략법을 알아내었다는 것에 있다.<ref> DQN 나무위키 - https://namu.wiki/w/DQN</ref> 이 알고리즘이 중요한 이유는 딥러닝을 [[강화학습]]에 적용하는 것을 어렵게 하는 문제를 해결했기 때문이다. 어려운 점의 대표적인 예시로는 성공적인 딥러닝을 위해선 잘 가공된 대규모의 데이터 셋이 필요한데, 강화학습은 인풋에 대응되는 정답을 명확히 알 수 없을 뿐더러 지연(delay)가 있고 노이즈가 섞인 스칼라 리워드(scalar reward)만으로 [[네트워크]]를 학습해야한다. 또한, 대부분의 딥러닝 알고리즘은 학습 데이터가  서로 독립적임을 가정하는데, 강화학습에 쓰이는 환경에서 제공하는 데이터는 연속된 행동에 대한 결과이지 때문에 서로 연관되어 있다. 심지어 에이전트가 학습함에 따라 정책(policy) 또한 달라지면서, 학습 데이터의 분산(distrubution) 자체도 시간에 따라 변화한다. 딥러닝은 데이터에 대해 고정된 기본 분산(fixed underlying distribution)을 가정하기 때문에 학습이 제대로 진행되지 않을 수 있다. DQN은 첫 번째 문제에 대해서는 특별한 해법을 제시하지 않았고, 두 번째 문제는 exprience replay라는 개념을 통해 어느 정도 해결했다. 이 개념은 들어로는 입력을 순서대로 사용하면 데이터 간 연관성이 너무 커지므로 최근 x개의 데이터를 계속해서 저장하고, 네트워크를 학습할 땐 저장한 데이터 중 몇 개를 무작위로 샘플하여 사용하는 방법이다.<ref name="기린"> 기리이이이인, 〈[https://wwiiiii.tistory.com/entry/Deep-Q-Network Deep Q Network]〉, 《기리이이이인》, 2018-03-10</ref><ref name="숨니야"> 숨니야, 〈[https://sumniya.tistory.com/18 DQN(Deep Q-Networks)]〉, 《숨니의무작정따라하기》, 2018-02-04</ref>
  
 
==특징==
 
==특징==
26번째 줄: 26번째 줄:
  
 
[[파일:DQN 2013 NIPS.png|썸네일|400픽셀]]
 
[[파일:DQN 2013 NIPS.png|썸네일|400픽셀]]
* Q 함수를 배열(array)이나 딕셔너리(dictionary)가 아닌 신경망으로 구현했다. 이는 'Q 함수를 딥러닝을 통해 근사했다' 정도로만 생각할 수도 있지만, 그것보단 더 의미 있는 일이다. 먼저 Q 함수를 뉴럴넷으로 근사한 덕분에 사람이 직접 특징을 정해주는 Hand-crafted feature가 아닌 이미지 픽셀 정보를 상태로 사용할 수 있게 되었다. 만약 Q 함수를 배열로 구현했다면 비슷한 상태, 예를 들어 공의 위치가 1픽셀 정도 다른 두 상태에 대해서 서로 연관성 있는 결과를 얻어내기 힘들 것이다. 하지만 딥신경망(Deep Neural Network)의 종류 중 하나인 CNN을 통해 중요한 정보를 자동으로 뽑아낸 다음 그 특징들을 기반으로 다시 각각의 Q 값을 계산하기 때문에 특징도 자동으로 뽑아내며 작은 상태 변화에 대해 로버스트한 계산을 기대할 수 있다.
+
* Q 함수를 배열(array)이나 딕셔너리(dictionary)가 아닌 신경망으로 구현했다. 이는 Q 함수를 딥러닝을 통해 근사했다' 정도로만 생각할 수도 있지만, 그것보단 더 의미 있는 일이다. 먼저 Q 함수를 뉴럴넷으로 근사한 덕분에 사람이 직접 특징을 정해주는 Hand-crafted feature가 아닌 이미지 픽셀 정보를 상태로 사용할 수 있게 되었다. 만약 Q 함수를 배열로 구현했다면 비슷한 상태, 예를 들어 공의 위치가 1픽셀 정도 다른 두 상태에 대해서 서로 연관성 있는 결과를 얻어내기 힘들 것이다. 하지만 딥신경망(Deep Neural Network)의 종류 중 하나인 CNN을 통해 중요한 정보를 자동으로 뽑아낸 다음 그 특징들을 기반으로 다시 각각의 Q 값을 계산하기 때문에 특징도 자동으로 뽑아내며 작은 상태 변화에 대해 로버스트한 계산을 기대할 수 있다.
  
 
* 기존 큐러닝에서는 목표값(target value)를 정확하게 학습할 수 있었는데, 그냥 배열이나 다른 자료구조에 그 값을 대입해버리게 되기 때문이다. 하지만 Q함수를 뉴럴넷으로 구현하면 목표값을 정확하게 나타내려면 여러번의 경사 하강법(gradient descent)을 시행해야 하고, 무엇보다 기존에 학습한 결과가 바뀔수 있다. 또한 동시에 학습 데이터의 분포가 바뀌기 때문에 안정적인 학습이 이루어지기 힘들다. 이러한 문제점을 해결해 주는 것이 익스피리언스 리플레이이다.<ref name="기린"></ref>
 
* 기존 큐러닝에서는 목표값(target value)를 정확하게 학습할 수 있었는데, 그냥 배열이나 다른 자료구조에 그 값을 대입해버리게 되기 때문이다. 하지만 Q함수를 뉴럴넷으로 구현하면 목표값을 정확하게 나타내려면 여러번의 경사 하강법(gradient descent)을 시행해야 하고, 무엇보다 기존에 학습한 결과가 바뀔수 있다. 또한 동시에 학습 데이터의 분포가 바뀌기 때문에 안정적인 학습이 이루어지기 힘들다. 이러한 문제점을 해결해 주는 것이 익스피리언스 리플레이이다.<ref name="기린"></ref>

위키원에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 위키원:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)