검수요청.png검수요청.png

"딥큐러닝"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
2번째 줄: 2번째 줄:
  
 
== 개요 ==  
 
== 개요 ==  
딥큐러닝은 일반적인 [[큐-러닝]](Q-learning)과 다르게 매 스탭마다 <math>(s_t,\ a_t,\ r_t,\ s_{t+1})</math> 정보(experience)리플레이 메모리에 저장하고 학습시 균등 분포(uniform distribution)에 따라 샘플링하여 사용한다. 이 방식은 정보가 여러 번 사용될 수 있게 만들기 때문에 데이터의 효율성을 높여 준다. 또한, 연속적인 샘플 사이에는 높은 상관관계를 가지는데 샘플들을 랜덤으로 뽑아서 사용하기 때문에 분산을 줄일 수 있다.<ref>choyi0521, 〈[https://www.secmem.org/blog/2020/02/08/snake-dqn/ Deep Q-learning으로 뱀 게임 인공지능 만들기]〉,  《삼성소프트웨어멤버십》, 2020-02-08 </ref> [[딥마인드]] 시스템은 수용적 장의 효과를 모방하기 위해 타일 방식의 합성곱 필터 층을 가진 [[심층합성곱신경망]]를 사용했다. 신경망과 같은 비선형 함수 근사치를 사용하여 <math>Q</math>를 나타낼 때 보강학습이 불안정하거나 다양하다. 이러한 불안정성은 관찰 순서에 존재하는 상관관계, <math>Q</math>에 대한 소규모 업데이트로 인해 정책과 데이터 배포, Q와 목표값 간의 상관관계에서 비롯된다. 딥큐러닝의 알고리즘대로 하면 관측 순서의 상관관계가 제거되고 데이터 분포의 변화가 원활해진다. 반복 업데이트는 <math>Q</math>를 주기적으로만 업데이트되는 목표값으로 조정하여 목표값과의 상관관계를 더욱 감소시킨다.<ref>Q-learning Wikipedia -  https://en.wikipedia.org/wiki/Q-learning#Learning_Rate</ref> 또한 소규모 데이터를 활용하여 비교적 적은 양의 데모 데이터에서도 학습 프로세스를 대폭 가속화하는 알고리즘으로, 시간차 업데이트를 시연자의 큰 마진 분류와 결합하여 작동한다. 데모 데이터가 좋지 않은 경우에도 딥큐러닝이 [[DQN]]보다 빠르게 학습한다는 장점이 있다.<ref>Bilal Piot 외 11인, 〈[https://www.researchgate.net/publication/316072750_Learning_from_Demonstrations_for_Real_World_Reinforcement_Learning Learning from Demonstrations for Real World Reinforcement Learning]〉,  《ResearchGate》 </ref>  
+
딥큐러닝은 일반적인 [[큐-러닝]](Q-learning)과 다르게 매 스탭마다 <math>(s_t,\ a_t,\ r_t,\ s_{t+1})</math> 경험(experience)리플레이 메모리에 저장하고 학습시 균등 분포(uniform distribution)에 따라 샘플링하여 사용한다. 이 방식은 경험이 여러 번 사용될 수 있게 만들기 때문에 데이터의 효율성을 높여 준다. 또한, 연속적인 샘플 사이에는 높은 상관관계를 가지는데 샘플들을 랜덤으로 뽑아서 사용하기 때문에 분산을 줄일 수 있다.<ref>choyi0521, 〈[https://www.secmem.org/blog/2020/02/08/snake-dqn/ Deep Q-learning으로 뱀 게임 인공지능 만들기]〉,  《삼성소프트웨어멤버십》, 2020-02-08 </ref> [[딥마인드]] 시스템은 수용적 장의 효과를 모방하기 위해 타일 방식의 합성곱 필터 층을 가진 [[심층합성곱신경망]]를 사용했다. 신경망과 같은 비선형 함수 근사치를 사용하여 <math>Q</math>를 나타낼 때 보강학습이 불안정하거나 다양하다. 이러한 불안정성은 관찰 순서에 존재하는 상관관계, <math>Q</math>에 대한 소규모 업데이트로 인해 정책과 데이터 배포, Q와 목표값 간의 상관관계에서 비롯된다. 딥큐러닝의 알고리즘대로 하면 관측 순서의 상관관계가 제거되고 데이터 분포의 변화가 원활해진다. 반복 업데이트는 <math>Q</math>를 주기적으로만 업데이트되는 목표값으로 조정하여 목표값과의 상관관계를 더욱 감소시킨다.<ref>Q-learning Wikipedia -  https://en.wikipedia.org/wiki/Q-learning#Learning_Rate</ref> 또한 소규모 데이터를 활용하여 비교적 적은 양의 데모 데이터에서도 학습 프로세스를 대폭 가속화하는 알고리즘으로, 시간차 업데이트를 시연자의 큰 마진 분류와 결합하여 작동한다. 데모 데이터가 좋지 않은 경우에도 딥큐러닝이 [[DQN]]보다 빠르게 학습한다는 장점이 있다.<ref>Bilal Piot 외 11인, 〈[https://www.researchgate.net/publication/316072750_Learning_from_Demonstrations_for_Real_World_Reinforcement_Learning Learning from Demonstrations for Real World Reinforcement Learning]〉,  《ResearchGate》 </ref>  
  
 
== 역사 ==
 
== 역사 ==
 
큐-러닝은 간단하지만 꽤 강력한 알고리즘으로 에이전트의 커닝 시트를 만든다. 이는 에이전트가 정확히 어떤 조치를 수행해야 하는지 파악하는 데 도움이 된다. 하지만 시간이 흘러 연구원들은 큐-러닝의 수표지가 너무 길다는 문제에 맞닥뜨리게 된다. 상태(state) 당 10,000개의 상태와 1,000개의 상태별 행동(action)이 있는 환경을 상상해 보자. 이것은 천만 개의 세포로 이루어진 표를 만들게 되어 일을 걷잡을 수 없게 될 것이다. 이미 탐사된 상태에서 새로운 상태의 Q-값을 추론할 수 없다는 것은 분명하다. 이것은 두 가지 문제를 제시한다. 첫째, 상태 수가 증가함에 따라 해당 테이블을 저장하고 업데이트하는 데 필요한 메모리 양이 증가할 것이다. 둘째, 필요한 Q-테이블을 만들기 위해 각 상태를 탐색하는 데 필요한 시간은 비현실적일 것이다. 이 문제를 보완하기 위해 신경망과 같은 [[머신러닝]] 모델과 이 Q-값을 근사하게 비교한다는 아이디어가 나오게 되었다. 이는 딥마인드의 알고리즘 이면에 있는 아이디어로, 구글이 5억 달러에 인수하게 된 딥큐러닝이다.<ref name="아날리틱스">ANKIT CHOUDHARY, 〈[https://www.analyticsvidhya.com/blog/2019/04/introduction-deep-q-learning-python/ A Hands-On Introduction to Deep Q-Learning using OpenAI Gym in Python]〉,  《Analytics Vidhya》, 2018-04-18 </ref>
 
큐-러닝은 간단하지만 꽤 강력한 알고리즘으로 에이전트의 커닝 시트를 만든다. 이는 에이전트가 정확히 어떤 조치를 수행해야 하는지 파악하는 데 도움이 된다. 하지만 시간이 흘러 연구원들은 큐-러닝의 수표지가 너무 길다는 문제에 맞닥뜨리게 된다. 상태(state) 당 10,000개의 상태와 1,000개의 상태별 행동(action)이 있는 환경을 상상해 보자. 이것은 천만 개의 세포로 이루어진 표를 만들게 되어 일을 걷잡을 수 없게 될 것이다. 이미 탐사된 상태에서 새로운 상태의 Q-값을 추론할 수 없다는 것은 분명하다. 이것은 두 가지 문제를 제시한다. 첫째, 상태 수가 증가함에 따라 해당 테이블을 저장하고 업데이트하는 데 필요한 메모리 양이 증가할 것이다. 둘째, 필요한 Q-테이블을 만들기 위해 각 상태를 탐색하는 데 필요한 시간은 비현실적일 것이다. 이 문제를 보완하기 위해 신경망과 같은 [[머신러닝]] 모델과 이 Q-값을 근사하게 비교한다는 아이디어가 나오게 되었다. 이는 딥마인드의 알고리즘 이면에 있는 아이디어로, 구글이 5억 달러에 인수하게 된 딥큐러닝이다.<ref name="아날리틱스">ANKIT CHOUDHARY, 〈[https://www.analyticsvidhya.com/blog/2019/04/introduction-deep-q-learning-python/ A Hands-On Introduction to Deep Q-Learning using OpenAI Gym in Python]〉,  《Analytics Vidhya》, 2018-04-18 </ref>
 +
 +
== 특징 ==
 +
;타겟 네트워크
 +
같은 [[네트워크]]가 예측값과 목표값을 계산하고 있기 때문에 이 둘 사이에는 많은 차이가 있을 수 있다. 그래서, 학습을 위해 1개의 신경망을 사용하는 대신에, 2개의 신경망을 사용할 수 있다. 또한 목표물을 추정하기 위해 별도의 네트워크를 사용할 수 있다. 이 타겟 네트워크(Target Network)는 함수 근사치와 동일한 아키텍처를 가지지만, 고정된 매개변수를 가지고 있다. 모든 하이퍼 파라미터의 C 반복에 대해 예측 네트워크의 파라미터는 대상 네트워크로 복사된다. 이는 목표 기능을 잠시 동안 고정하기 때문에 보다 안정적인 훈련으로 이어진다.<ref name="아날리틱스"></ref>
 +
 +
<center>
 +
{|border=0
 +
|align=center|[[Image: 대상 네트워크.png]]<br>
 +
|}</center>
 +
 +
타겟 네트워크는 신경망으로 <math>Q </math>기능을 나타내는 신경망의 느린 사이클로 업데이트된다. 고정 목표 네트워크를 활용해 목표치를 산출함으로써 학습과정 전체의 안정화를 기대할 수 있다. 일반적으로 타겟 네트워크의 업데이트 빈도가 낮으면 학습 과정이 보다 안정적일 수 있다. 예를 들어 에르난데스-가르시아(Hernandez-Garcia, 2019)와 에르난데스-가르시아·서튼(Hernandez-Garcia, 2019)은 업데이트 빈도를 2000에서 500으로 꾸준히 줄이면 알고리즘의 불안정성이 감소한다고 보고했다. 2016년, 판 하셀트(van Hasselt) 외 연구진은 조치값의 과대평가를 줄이기 위해 타겟 네트워크의 업데이트 주기를 1만에서 3만으로 늘렸다. 타겟 네트워크를 업데이트하지 않으면 가치가 전파되지 않아 온라인 강화 학습에 지장을 주고 학습 속도를 늦추는 것으로 알려져 있다.<ref name="프론티어">Hong Qiao,, 〈[https://www.frontiersin.org/articles/10.3389/fnbot.2019.00103/full Constrained Deep Q-Learning Gradually Approaching Ordinary Q-Learning]〉,  《Frontiers》, 2019-12-10 </ref>
 +
 +
; 경험 반복
 +
경험 반복(Experience replay)은 시계열 데이터를 재생 메모리라는 버퍼에 저장하는 기법이다. 체험 재생에서는 버퍼에서 무작위로 샘플링한 데이터를 사용하여 미니 배치 학습을 실시한다. 결과적으로 훈련 샘플 간의 상관관계가 감소하고, 따라서 학습이 안정화된다.<ref name="프론티어"></ref> 경험 반복은 이를 수행하기 위해 에이전트 경험  <math>store\ t=((t,at,at,rt,st+1)</math>을 저장한다. 위의 증명은 시뮬레이션이나 실제 경험 중에 발생하는 상태 혹은 행동 쌍에 대한 큐-러닝을 실행하는 대신, 시스템은 [상태, 행동, 보상, 다음 상태]에 대해 발견된 데이터를 큰 표에 저장한다. 예를 들어 우리가 게임의 각 프레임이 다른 상태를 나타내는 비디오 게임 봇을 만들려고 한다고 가정해 보자. 교육 기간 동안, 네트워크를 훈련시키기 위해 마지막 10만 프레임에서 무작위로 64 프레임의 배치를 샘플링할 수 있다. 이렇게 하면 샘플 간의 상관관계가 낮은 부분집합을 얻을 수 있을 것이고 또한 더 나은 샘플링 효율을 제공할 수 있을 것이다.<ref name="아날리틱스"></ref>
 +
 +
== 알고리즘 ==
 +
  <math>\mathrm{initialize\ replay\ memory}\ D</math>
 +
  <math>\mathrm{initialize\ action-value\ function}\ Q \mathrm{with\ random\ weights }</math>
 +
  <math>\mathrm{observe\ initial\ state}\ s</math>
 +
  <math>\mathrm{repeat}</math>
 +
      <math>\mathrm{select\ an\ action}\ a</math>
 +
          <math>\mathrm{with\ probability}\ \varepsilon \mathrm{select }\ a \mathrm{random\ action}</math>
 +
          <math>\mathrm{otherwise\ select}\ a = argmaxa' Q(s,\ a') </math>
 +
      <math>\mathrm{carry\ out\ action}\ a</math>
 +
      <math>\mathrm{observe\ reward}\ r \mathrm{and\ new\ state}\ s'</math>
 +
      <math>\mathrm{store\ experience}\ <s, a, r, s'> \mathrm{in\ replay\ memory}\ D</math>
 +
 
 +
      <math>\mathrm{sample\ random\ transitions}\ <ss,\ aa,\ rr,\ ss'> \mathrm{from\ replay\ memory}\ D</math>
 +
      <math>\mathrm{calculate\ target\ for\ each\ minibatch\ transition}</math>
 +
          <math>\mathrm{if} ss' \mathrm{is\ terminal\ state\ then}\ tt\ =\ rr</math>
 +
          <math>\mathrm{otherwise }\ tt = rr + \gamma maxa'\ Q(ss',\ aa')</math>
 +
      <math>\mathrm{train\ the}\ Q \mathrm{network\ using}\ (tt - Q(ss, aa))^2\ \mathrm{as\ loss}</math>
 +
 
 +
      <math>s = s'</math>
 +
  <math>\mathrm{until\ terminated} </math>
 +
 +
위의 알고리즘을 풀이하면 다음과 같다.<ref>Ddanggle, 〈[https://ddanggle.github.io/demystifyingDL 딥 강화학습 쉽게 이해하기]〉,  《깃허브》, 2016-09-24 </ref>
 +
 +
  Q[상태 갯수, 행동 갯수]를 임의적으로 초기화시킨다.
 +
  초기 상태 s를 조사한다.
 +
  반복
 +
    행동 a를 선택하고 수행한다.
 +
      무작위적인 행동 a를 선택하는 확률 ε를 사용한다.
 +
      다른 것들은 select a = argmaxa'Q(s,a')
 +
    행동 a를 끄집어낸다.
 +
    리워드 r를 관찰하고 새로운 상태 s'로 만든다.
 +
    재현 매모리 D에 경험 <s, a, r, s'> 을 저장한다.
 +
 
 +
    무작위적인 샘플 <ss, aa, rr, ss'>를 재현 메모리 D로부터 끄집어낸다.
 +
    각각의 미니 배치 계산을 위한 목표를 계산한다.
 +
      만약 ss' 이 끝나는 상태이면 tt = rr
 +
      그렇지 않으면 tt = rr + γmaxa’Q(ss', aa')
 +
    게임에서 질 때까지 (tt - Q(ss, aa))^2 을 이용해서 Q 네트워크를 트레이닝 시킨다.
 +
    s = s' (상태를 s'로 바꾼다)
 +
  끝날 때까지 반복
  
 
{{각주}}
 
{{각주}}
12번째 줄: 67번째 줄:
 
* Q-learning Wikipedia -  https://en.wikipedia.org/wiki/Q-learning#Learning_Rate
 
* Q-learning Wikipedia -  https://en.wikipedia.org/wiki/Q-learning#Learning_Rate
 
* Bilal Piot 외 11인, 〈[https://www.researchgate.net/publication/316072750_Learning_from_Demonstrations_for_Real_World_Reinforcement_Learning Learning from Demonstrations for Real World Reinforcement Learning]〉,  《ResearchGate》
 
* Bilal Piot 외 11인, 〈[https://www.researchgate.net/publication/316072750_Learning_from_Demonstrations_for_Real_World_Reinforcement_Learning Learning from Demonstrations for Real World Reinforcement Learning]〉,  《ResearchGate》
 +
* Ddanggle, 〈[https://ddanggle.github.io/demystifyingDL 딥 강화학습 쉽게 이해하기]〉,  《깃허브》, 2016-09-24
 
* ANKIT CHOUDHARY, 〈[https://www.analyticsvidhya.com/blog/2019/04/introduction-deep-q-learning-python/ A Hands-On Introduction to Deep Q-Learning using OpenAI Gym in Python]〉,  《Analytics Vidhya》, 2018-04-18
 
* ANKIT CHOUDHARY, 〈[https://www.analyticsvidhya.com/blog/2019/04/introduction-deep-q-learning-python/ A Hands-On Introduction to Deep Q-Learning using OpenAI Gym in Python]〉,  《Analytics Vidhya》, 2018-04-18
 +
* Hong Qiao,, 〈[https://www.frontiersin.org/articles/10.3389/fnbot.2019.00103/full Constrained Deep Q-Learning Gradually Approaching Ordinary Q-Learning]〉,  《Frontiers》, 2019-12-10
 
* choyi0521, 〈[https://www.secmem.org/blog/2020/02/08/snake-dqn/ Deep Q-learning으로 뱀 게임 인공지능 만들기]〉,  《삼성소프트웨어멤버십》, 2020-02-08
 
* choyi0521, 〈[https://www.secmem.org/blog/2020/02/08/snake-dqn/ Deep Q-learning으로 뱀 게임 인공지능 만들기]〉,  《삼성소프트웨어멤버십》, 2020-02-08
  

2020년 8월 27일 (목) 16:43 판

딥큐러닝(Deep Q-learning)은 모델을 특정하지 않는 강화학습 알고리즘이다. 소규모 데모 데이터 세트를 활용하여 비교적 적은 양의 데모 데이터에서도 학습 프로세스를 대폭 가속화하고, 우선 순위가 지정된 재생 메커니즘 덕분에 학습하는 동안 데모 데이터의 필요한 비율을 자동으로 평가할 수 있다.

개요

딥큐러닝은 일반적인 큐-러닝(Q-learning)과 다르게 매 스탭마다 경험(experience)을 리플레이 메모리에 저장하고 학습시 균등 분포(uniform distribution)에 따라 샘플링하여 사용한다. 이 방식은 경험이 여러 번 사용될 수 있게 만들기 때문에 데이터의 효율성을 높여 준다. 또한, 연속적인 샘플 사이에는 높은 상관관계를 가지는데 샘플들을 랜덤으로 뽑아서 사용하기 때문에 분산을 줄일 수 있다.[1] 딥마인드 시스템은 수용적 장의 효과를 모방하기 위해 타일 방식의 합성곱 필터 층을 가진 심층합성곱신경망를 사용했다. 신경망과 같은 비선형 함수 근사치를 사용하여 를 나타낼 때 보강학습이 불안정하거나 다양하다. 이러한 불안정성은 관찰 순서에 존재하는 상관관계, 에 대한 소규모 업데이트로 인해 정책과 데이터 배포, Q와 목표값 간의 상관관계에서 비롯된다. 딥큐러닝의 알고리즘대로 하면 관측 순서의 상관관계가 제거되고 데이터 분포의 변화가 원활해진다. 반복 업데이트는 를 주기적으로만 업데이트되는 목표값으로 조정하여 목표값과의 상관관계를 더욱 감소시킨다.[2] 또한 소규모 데이터를 활용하여 비교적 적은 양의 데모 데이터에서도 학습 프로세스를 대폭 가속화하는 알고리즘으로, 시간차 업데이트를 시연자의 큰 마진 분류와 결합하여 작동한다. 데모 데이터가 좋지 않은 경우에도 딥큐러닝이 DQN보다 빠르게 학습한다는 장점이 있다.[3]

역사

큐-러닝은 간단하지만 꽤 강력한 알고리즘으로 에이전트의 커닝 시트를 만든다. 이는 에이전트가 정확히 어떤 조치를 수행해야 하는지 파악하는 데 도움이 된다. 하지만 시간이 흘러 연구원들은 큐-러닝의 수표지가 너무 길다는 문제에 맞닥뜨리게 된다. 상태(state) 당 10,000개의 상태와 1,000개의 상태별 행동(action)이 있는 환경을 상상해 보자. 이것은 천만 개의 세포로 이루어진 표를 만들게 되어 일을 걷잡을 수 없게 될 것이다. 이미 탐사된 상태에서 새로운 상태의 Q-값을 추론할 수 없다는 것은 분명하다. 이것은 두 가지 문제를 제시한다. 첫째, 상태 수가 증가함에 따라 해당 테이블을 저장하고 업데이트하는 데 필요한 메모리 양이 증가할 것이다. 둘째, 필요한 Q-테이블을 만들기 위해 각 상태를 탐색하는 데 필요한 시간은 비현실적일 것이다. 이 문제를 보완하기 위해 신경망과 같은 머신러닝 모델과 이 Q-값을 근사하게 비교한다는 아이디어가 나오게 되었다. 이는 딥마인드의 알고리즘 이면에 있는 아이디어로, 구글이 5억 달러에 인수하게 된 딥큐러닝이다.[4]

특징

타겟 네트워크

같은 네트워크가 예측값과 목표값을 계산하고 있기 때문에 이 둘 사이에는 많은 차이가 있을 수 있다. 그래서, 학습을 위해 1개의 신경망을 사용하는 대신에, 2개의 신경망을 사용할 수 있다. 또한 목표물을 추정하기 위해 별도의 네트워크를 사용할 수 있다. 이 타겟 네트워크(Target Network)는 함수 근사치와 동일한 아키텍처를 가지지만, 고정된 매개변수를 가지고 있다. 모든 하이퍼 파라미터의 C 반복에 대해 예측 네트워크의 파라미터는 대상 네트워크로 복사된다. 이는 목표 기능을 잠시 동안 고정하기 때문에 보다 안정적인 훈련으로 이어진다.[4]

대상 네트워크.png

타겟 네트워크는 신경망으로 기능을 나타내는 신경망의 느린 사이클로 업데이트된다. 고정 목표 네트워크를 활용해 목표치를 산출함으로써 학습과정 전체의 안정화를 기대할 수 있다. 일반적으로 타겟 네트워크의 업데이트 빈도가 낮으면 학습 과정이 보다 안정적일 수 있다. 예를 들어 에르난데스-가르시아(Hernandez-Garcia, 2019)와 에르난데스-가르시아·서튼(Hernandez-Garcia, 2019)은 업데이트 빈도를 2000에서 500으로 꾸준히 줄이면 알고리즘의 불안정성이 감소한다고 보고했다. 2016년, 판 하셀트(van Hasselt) 외 연구진은 조치값의 과대평가를 줄이기 위해 타겟 네트워크의 업데이트 주기를 1만에서 3만으로 늘렸다. 타겟 네트워크를 업데이트하지 않으면 가치가 전파되지 않아 온라인 강화 학습에 지장을 주고 학습 속도를 늦추는 것으로 알려져 있다.[5]

경험 반복

경험 반복(Experience replay)은 시계열 데이터를 재생 메모리라는 버퍼에 저장하는 기법이다. 체험 재생에서는 버퍼에서 무작위로 샘플링한 데이터를 사용하여 미니 배치 학습을 실시한다. 결과적으로 훈련 샘플 간의 상관관계가 감소하고, 따라서 학습이 안정화된다.[5] 경험 반복은 이를 수행하기 위해 에이전트 경험 을 저장한다. 위의 증명은 시뮬레이션이나 실제 경험 중에 발생하는 상태 혹은 행동 쌍에 대한 큐-러닝을 실행하는 대신, 시스템은 [상태, 행동, 보상, 다음 상태]에 대해 발견된 데이터를 큰 표에 저장한다. 예를 들어 우리가 게임의 각 프레임이 다른 상태를 나타내는 비디오 게임 봇을 만들려고 한다고 가정해 보자. 교육 기간 동안, 네트워크를 훈련시키기 위해 마지막 10만 프레임에서 무작위로 64 프레임의 배치를 샘플링할 수 있다. 이렇게 하면 샘플 간의 상관관계가 낮은 부분집합을 얻을 수 있을 것이고 또한 더 나은 샘플링 효율을 제공할 수 있을 것이다.[4]

알고리즘

 
 
 
 
     
         
         
     
     
     
 
     
     
         
         
     
 
     
 

위의 알고리즘을 풀이하면 다음과 같다.[6]

 Q[상태 갯수, 행동 갯수]를 임의적으로 초기화시킨다.
 초기 상태 s를 조사한다. 
 반복
   행동 a를 선택하고 수행한다. 
     무작위적인 행동 a를 선택하는 확률 ε를 사용한다. 
     다른 것들은 select a = argmaxa'Q(s,a')
   행동 a를 끄집어낸다.
   리워드 r를 관찰하고 새로운 상태 s'로 만든다.
   재현 매모리 D에 경험 <s, a, r, s'> 을 저장한다.
 
   무작위적인 샘플 <ss, aa, rr, ss'>를 재현 메모리 D로부터 끄집어낸다.
   각각의 미니 배치 계산을 위한 목표를 계산한다.
     만약 ss' 이 끝나는 상태이면 tt = rr
     그렇지 않으면 tt = rr + γmaxa’Q(ss', aa')
   게임에서 질 때까지 (tt - Q(ss, aa))^2 을 이용해서 Q 네트워크를 트레이닝 시킨다.
   s = s' (상태를 s'로 바꾼다)
 끝날 때까지 반복

각주

  1. choyi0521, 〈Deep Q-learning으로 뱀 게임 인공지능 만들기〉, 《삼성소프트웨어멤버십》, 2020-02-08
  2. Q-learning Wikipedia - https://en.wikipedia.org/wiki/Q-learning#Learning_Rate
  3. Bilal Piot 외 11인, 〈Learning from Demonstrations for Real World Reinforcement Learning〉, 《ResearchGate》
  4. 4.0 4.1 4.2 ANKIT CHOUDHARY, 〈A Hands-On Introduction to Deep Q-Learning using OpenAI Gym in Python〉, 《Analytics Vidhya》, 2018-04-18
  5. 5.0 5.1 Hong Qiao,, 〈Constrained Deep Q-Learning Gradually Approaching Ordinary Q-Learning〉, 《Frontiers》, 2019-12-10
  6. Ddanggle, 〈딥 강화학습 쉽게 이해하기〉, 《깃허브》, 2016-09-24

참고자료

같이 보기


  검수요청.png검수요청.png 이 딥큐러닝 문서는 인공지능 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.