일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 백준
- github
- python
- STAGE
- 1
- Reset
- 수정사항업데이트
- git commit
- git
- 1330
- remote repository 생성
- Push
- regExr
- git push
- ADD
- Baekjoon
- GitHub 설치
- amend
- commit
- local repository 생성
- 함수
- 정규식
- 두수비교하기
- git config global
- Restore
- 파이썬
- 15596
- boostcamp #aI tech #주간리뷰
- Today
- Total
Très bien
Human-level control through deep reinforecement learning 본문
★★★ 본 페이지는 홍콩 과기대의 김성훈 교수님의 김 교수님의 '모두를 위한 딥러닝 (시즌 RL)' 강의와 고려대학교 강형원 학생의 논문 리뷰 동영상을 기반으로 학습한 내용을 정리하였습니다.
Google DeepMind팀이 2015년에 발표한 논문으로 Reinforcement Learning에 Multi-Layer Neural Netowrk을 적용하여 Atari game을 시스템에 학습시킨 Deep-RL 관련 논문입니다.
기계학습은 크게 주어진 데이터 셋을 선행적으로 학습하여 모델을 만드는 supervised learning(교사학습), 클러스터링이나 image segmentation과 같이 사전 학습 없이 데이터 분포를 분석하여 합치는 unsupervised learning(비교사학습) 으로 구분합니다. 그리고 행동을 하고 그 결과값으로부터 보상을 받는 행동을 반복해서 학습을 진행하는 reinfoecement learning(강화학습)이 있습니다.
강화학습에서 가장 기본적으로 소개되는 용어들은 다음과 같습니다. 게임 맵과 같은 Environment 상에서 움직이는 Agent가 어떠한 Action을 연속적으로 했을 때, 최종적으로 State가 목적지에 도달하느냐, 못하느냐, 혹은 게임을 클리어 했는가, 아닌가, 혹은 휴머노이드 로봇이 일어섰는가, 아닌가 등 agent의 반복적 행동이 만들어낸 결과를 판단하여 + 혹은 – 값의 보상, Reward를 얻게 됩니다. 이러한 행동과 보상 행위를 반복적으로 수행하는 trial and error (explore and exploit)을 통해 agent가 목표하는 행동을 점진적으로 학습하게 되는 방법이 강화학습입니다.
https://drive.google.com/file/d/1YsYylqfWWQURGJCKzVnXFvJx92BSYzcR/preview
강화학습은 3가지 특성으로 분류를 합니다. Model의 여부에 따라 model based/moel free 로 구분할 수 있습니다. Model based 는 world에 대한 모델링이 있는지 없는지의 여부로 판단합니다. 환경에 대한 모델이 있다면, 초기 학습을 반복해서 모델을 만들면 이후 플래닝을 적용할 수 있으며, 모델을 주기적으로 업데이트 할 수 있습니다. (로봇 청소기를 처음 on 하면 맵 빌딩을 하고, 이후에 돌아다니면서 map을 업데이트 하는 연구를 본 적이 있는데, 이 케이스와 비슷하다고 생각합니다.)
또한, value function의 적용 유무에 따라 구분할 수 있습니다. 가치 기반 알고리즘은 가치 함수를 구축하는 것을 목표로 하며, 이를 통해 이후의 정책을 정의할 수 있습니다. 우리는 이후에 가장 간단하고 인기 있는 가치 기반 알고리 즘 중 하나인 Q 학습 알고리즘(Watkins, 1989)에 대해 논의합니다. 또한 신경망을 함수 근사기로 사용하여 픽셀에서 ATARI 게임을 할 때 초인적 수준의 제어를 달성한 DQN(심 층 Q 네트워크) 알고리즘(Mnih et al., 2015) 의 주요 요소에 대해서도 살펴볼 것입니다. Value based 방식으로 학습하는 강화학습을 Deterministic 이라고 부르는데, 이는 모든 상태 s에서 선택 a는 변함이 없이 항상 행동 a를 선택하게 됩니다. 반면, Policy based (정책 기반) 알고리즘은 확률적 정책(stochastic policy)를 적용하여 (pi)가 상태 s에서 할 수 있는 행동을 확률 분포로 정의합니다. 예컨데, 가위, 바위, 보를 하는데 세 번 중 한 번은 랜덤하게 가위, 바위, 보를 하게 되면 새로운 상황에 대한 학습을 추가적으로 할 수 있어서 좀 더 유연하게 대처할 수 있습니다.
가치함수, Q-Value는 어떤 행동을 했을 때 미래에 받을 것이라고 예상되는 보상의 최대값을 의미합니다. 아래의 그림에서 마리오는 맨 처음 (1,1) 위치에 있고, 1행 4열에 코인이 있습니다. 마리오가 이동하다 코인을 먹으면 점수를 획득하고 게임이 끝난다고 해보겠습니다. 마리오는 행동의 주체가 되는 agent이며, 상,하,좌,우 네 가지의 action 중 하나를 하게 됩니다. 동전의 위치에 마리오가 도착하면 reward 1점을 받게 됩니다. 여기서, 당장 한 칸 옮겼을 때 받을 수 있는 보상은 reward입니다. 마리오가 처음 있는 (1,1)은 initial state 라고 하며, 코인이 있는 (1,4) 에 도착하여 게임이 끝나는 상태를 terminal state라고 합니다. nitial state에서 terminal state까지 이동하는 일련의 과정을 episode라고 합니다. 마리오는 매 순간 최적의 reward를 받을 것이라고 예상되는 행동(action) 선택해 나가는 방식으로 행동하며 최종적인 해답에 도달하게 됩니다. 여기서, Q-value는 어떤 action을 취했을 때, 미래에 받을 것이라고 예상되는 reward, 보상 값을 수치화한 함수입니다. 게임의 횟수를 반복하면 마리오는 코인을 획득할 수 있는 path를 학습하 수 있습니다. 그리고 학습된 Q 값에 따라 마리오는 그 이후의 게임에서는 항상 똑같은 path를 이동하며 coin을 획득하게 됩니다. 물론, 마리오는 학습된 루트를 통해 코인을 항상 획득할 수는 있지만, 매번 같은 path로 이동하게 되는데요, 이렇게 학습한 path가 꼭 최적의 이동 경로는 아닙니다. 이렇게 주어진 상태에서 행동을 선택하는 것을 policy 정책이라고 하고, greedy action 정책은 현재 상태에서 주어진 가치들 중 가장 큰 값에 대응하는 행동을 선택하는 방식입니다.
시스템이 Greedy action을 통해 학습하는 경우, 더 좋은 방법이 있는지 새로운 path를 찾아보는 정책을 ε-Greedy 기법이라고 합니다. 여기서 ε은 0~1 사이의 값을 갖는 변수입니다. ε 확률로 랜덤한 action을 취하거나 1-ε의 확률로 기존에 학습된 greedy action을 취할 수 있습니다. 예를 들어, ε 이 0.2라고 한다면, 10번 중 8번은 기존에 학습된 Q 값에 따라 state를 이동하는 행동을 하게 되지만, 10번의 시도 중 나머지 2번은 새로운 방향으로 이동을 하며 더 짧은 이동 경로를 가즌 새로운 solution이 있는지 찾는 것을 시도할 수 있게 됩니다. (Exploration) 물론, exploration을 한다고 항상 더 좋은 path를 발견하는 것은 아니고, 오히려 학습을 방해할 수도 있습니다. 그렇기 때문에 환경에 맞는 적당한 ε 값을 설정하는 것이 중요한데요, 이를 위하여, 학습 초반에는 최대한 많은 경우의 수를 try할 수 있도록 ε 의 값을 크게 하고, 학습이 진행될수록 ε 값을 감소시켜 기존에 학습된대로 잘 따라갈 수 있도록 decay ε-Greedy 기법을 적용할 수 있습니다.
이러한 Q-function을 네트웍에 적용해보면 주어진 입력값(s, state)에서 agent가 행동할 수 있는 모든 action값에 대한 Q-value를 출력하는 network 모델을 만들고 학습하여 Q-value를 approximation 할 수 있습니다. 그림처럼 agent의 현재 state를 입력하면 state에서 가능한 모든 action에 대한 reward 즉, Q-value를 추정하기 위한 Neural network 모델을 학습하도록 모델링할 수 있습니다.
논문은 앞에서 소개한 Q-Network에 두 개의 convolution layer와 fully-connected layer를 연결하여 네트웍 학습 모델을 구성하였습니다. Atari2600 이라는 오락실 게임을 실험 플랫폼으로 적용했고요, 210 x 160 크기의 영상을 60Hz로 입력받는 high-dimensional data를 입력받았습니다. 입력된 데이터는 , RGB 프레임으로부터 밝기(luminance) 정보를 갖는 Y-channel을 추출하고, 84 x 84 크기로 resize 시킨 영상을 사용하였고, 프레임간 움직임 정보도 함께 활용하기 위하여 4 프레임 영상을 입력했습니다. 즉, neural-network의 입력값의 크기는 84 x 84 x 4 입니다. 세 개의 convolution layer와 2 층의 fully connected layer를 쌓아서 만든 모델을 학습에 적용하였습니다. Output은 18개의 Joystic과 button의 위치 정보라고 합니다.
이제, 이를 수식으로 표현해보겠습니다. 모델링을 하기 위해 agent는 행동을 하면, 상태 전이와 reward를 연속적으로 발생하는 sequential task라고 가정합니다. 그리고 Q-Network의 목적은 누적된 future reward(return)를 최대로 하는 action을 선택할 수 있도록 학습을 통해 뉴럴넷의 하이퍼파라미터(가중치)를 추정(approximation)하는 것입니다.
Q function을 살펴보면, 앞서 설명한 Greedy search를 수식으로 옮겨놓은 형태임을 알 수 있습니다. 시간 t에서 현재 agent의 상태와 행동, 그리고 입실론 값을 얼마나 정의해서 몇 번을 랜덤으로 이동하고 몇 번을 value 값에 따라 이동할 지 등의 policy, 파이 값이 주어졌을 때, agent가 받게 되는 reward(다음 step의 결과가 반영되는 값이죠.) 와 최종 terminal state에 도착했을 때 받게 될 것으로 예측되는 보상값 return에 각 step 마다 discount factor를 곱해준 값. 이 값들을 다 합한 것이 agent가 state s에서 a 행동을 선택했을 때 받게되는 rewar인데, 이를 최대화할 수 있도록 파라미터들을 학습하는 것을 value function Q*라고 정의할 수 있습니다.
이 내용을 알고리즘으로 정리한 것입니다. 처음에 Q network을 랜덤 변수, theta로 초기화합니다.Episode를 M번만큼 반복을 하는데요, agent의 initial 상태 x 값을 가져와서, 전처리를 수행합니다. 파이는 입력된 상태데이터가 Atari 같은 경우에는 image size 조정, channel 변경 등의 전처리를 하여 입력 상태 파이를 생성합니다. 행동을 선택하는데 적당한 입실론의 확률로 랜덤 action을 선택하거나 현재 알고있는 네트웍 가중치, theta 값을 기준으로 최적의 보상을 주는 행동을 선택합니다. 즉, value-function 값인 보상값을 최대로 하는 행동을 다음 step으로 가는 행동으로 선택합니다. 행동을 하고, 주어진 보상값과 변경된 상태값을 받아옵니다.이후, training을 합니다. 만약, 다음 단계가 종료되는 terminates 단계이면, rewar값을 y값을 계산합니다. 상태가 중간단계 상태이면, reward 와 discount factor가 적용된 보상값의 최대 예측치의 합을 y값으로 계산합니다. 이렇게 계산한 loss function에 gradient descent step을 적용하여 새로운 네트웍 파라미터 theta를 업데이트합니다.
그런데, 이렇게 네트웍을 모델링하여 Q-function을 학습을 시키면 두 가지 원인에 의해서 수렴하지를 않았습니다. 첫 번째 원인은 샘플 데이터 간에 correlation이 높기 때문입니다. 빠른 주기로 연속적으로 수집되는 data set은 상호 연관성이 높기 때문에 편향된 학습을 하게될 수 있습니다. 학습 결과에 왜곡이 생길 수 있습니다. 예를 들어서, 오른쪽 그래프와 같이 데이터가 분포되어 있다고 가정합시다. 전체 데이터 분포는 대각선 방향인데, 일부 correlation이 높은 데이터만 주어졌다면 잘못된 학습을 할 수도 있습니다. 이를 극복하기 위하여, 본 논문에서는 Capture & Replay 라는 기법을 제안했습니다. Experience Replay는 각각의 time step t 에 대해 주요 변수 s, a, r, s’을 replay buffer에 tuple 형태로 저장합니다. 학습시, replay buffer에서 uniform 하게 추출되는 sample 또는 mini batches를 사용하여 업데이트 합니다.
두 번째 원인은 non-stationary targe입니다. Loss function을 다시 생각해보면, 현재 theta값으로 추정하는 예측값과 target이 되는 reward의 최대값, Q(star)의 차이를 최소로 만들어야 하는데, 이 두개의 term이 모두 네트웍 파라미터 theta의 영향을 받습니다. 즉, 예측값이 학습을 통해, target과 가까워지기 위해서 weight, theta를 업데이트하면, target 값도 동시에 업데이트되어 바뀌게 됩니다. Neural Network에서 정답, label이 실시간으로 바뀌게 되면 학습의 안정성을 저하시키게 됩니다. 이를 극복하기 위하여 target Network을 별도로 구분하였습니다. 적용하는 것을 제안했습니다. target 값이 너무 자주 변경되는 것을 방지하기 위해, time stamp C 만큼 Q Network를 업데이트 하면, Q Network의 파라미터를 그대로 사용하여 Target Network의 파라미터를 업데이트해줍니다. 이러한 과정을 반복하여 Q Network가 optimal function 이 되도록 학습하는 과정이 DQN 입니다.
https://www.youtube.com/watch?v=TmPfTpjtdgg
Papers
동영상
기타
모두를 위한 머신러닝/딥러닝 강의
hunkim.github.io
고려대학교 강형원 DQN - Bing
Bing은 지능적인 검색 기능은 사용자가 원하는 정보를 빠르게 검색하고 보상을 제공합니다.
www.bing.com