Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Reinforcement learning v0.5

1,770 views

Published on

모두를 위한 Deep Reinforcement Learning 강의를 요약정리
http://hunkim.github.io/ml/
실습에 사용된 코드
https://github.com/freepsw/tensorflow_examples/tree/master/20.RL_by_SungKim

Published in: Data & Analytics
  • Be the first to comment

Reinforcement learning v0.5

  1. 1. 시즌 RL - Deep Reinforcement Learning 요약 정리 Reinforcement Learning with Tensorflow & Open AI Gym freepsw
  2. 2. Open AI Gym
  3. 3. Lec 3. Dummy Q Learning 단순히 action에 대한 reward와 다음 단계 Q의 최대값을 더함 • 초기 아무것도 알지 못하는 상황에서 Q라는 대상에게 action을 전달하면, • Reward와 새로운 state, 게임 종료여부를 반환함. • 이를 기반으로 가장 보상이 큰 action을 선택하도록 하는 방식
  4. 4. Dummy Q Learning 알고리즘 Q Table의 값을 갱신하고, 이를 기반으로 action을 선택
  5. 5. Lec 3. Dummy Q Learning 학습 과정 초기에는 reward 0이 반복, 이후 성공하면서 Q값을 업데이트 • 게임에 성공했을 때만 1을 reward로 받음 • 이후 다음 action 선택시에 Q Table에 서 가장 큰 action을 선택함 • 최종 Q table이 업데이트 된 결과
  6. 6. Lec 4. Q-Learning Exploit & Exploration Action 선택시 다양한 선택이 가능하도록 하는 방법 Decaying E-greedy Random noise • 랜덤으로 선택한 값이 일정 값(e) 이하이면, action을 랜덤 으로 선택, 이상이면 Q의 최대값 선택 • è 기존 값과 상관없이 완전히 새로운 선택 가능 • Decaying : 시간이 지나면 e값이 작아져서 기존 Q를 많이 활용하도록 함 • 기존 Q값에 랜덤으로 생성된 값을 추가한 후 최대값을 선택하 도록 변경 • è 기존 값에 영향을 받음
  7. 7. Discounted future reward 나중에 받을 reward가 미치는 영향을 줄이고, 현재 reward를 높임 • 위의 공식은 아래의 방식을 이용하여 도출
  8. 8. Lec 5. Q-learning on Nondeterministic Worlds 선택한 action이 불규칙하게 다른 action으로 변경된다면? • Frozen Lake 게임을 예로 들면 내가 LEFT 를 선택했는데, 실제 action은 아무것도 안 하거나, RIGHT를 실행하는 경우 • 이런 상황에서 기존 Code를 실행해 보면 게임의 성공률이 10%도 안되게 나온다. • 기존에는 다음 상태 Q의 state를 100% 따라서 Q Table의 state를 업 데이트 하였으나, • 이제는 나의 선택(현재 상태 Q)의 결정을 많이 반영하고, 다음 상태 Q 의 결정은 조금만 반영한다. • 이때 반영할 기준(수치)를 learning_rate로 설정
  9. 9. • 위와 같은 80*80 size의 화면에 2가지 색상인 경 우 2의 80*80승만큼의 공간이 필요함. à 불가 • 상태를 입력으로 받고, • 상태에 따른 모든 action에 대한 가능성을 출력으로 구성하는 네트워크 Lec 5. Q-Network Q Table에는 한계가 있으므로, 이를 Neural Network를 활용해 보자
  10. 10. 1). 정답(y, target)은 기존 Q-learning으로 계산 2). 예측은 아래와 같은 NN을 이용하여 계산 à Ws(y)의 값이 정답이 되도록 학습 3). 정답(y)와 예측값(Ws, Q_pred, Q^)를 가능한 동일하게 해주는 Weight(𝛉)를 찾자 Q-pred (Q^, 예측값) 4). Loss(Cost) 함수를 이용 𝛉하여 Weight 최적화 • Q^ : 𝛉가 주어졌을때 action, state에 대한 예측값 • Q* : Q-learnig에서의 출력값 Q-Network를 학습하는 방식 정답(Y)를 계산하는 함수를 제외하면 거의 동일하게 활용가능
  11. 11. • 초기 상태를 random 초기화 • 첫번째 상태를 저장 • ∅(s1)는 상태(s)를 전처리한다는 의미, 여기서는 별도의 전처리가 없으므로 s1과 동일 • Action 선택 (E-greedy 방식) • Y(정답)은 2가지 방식으로 계산 • 목표(goad)에 도달 했을 때는 다음 상태가 없으므로 reward만 저장 • 다음 단계가 있을 때는 다음 단계에서의 가장 큰 값 (discount factor 적용) 그런데 왜 stochastic world에서 learing rate를 적용하여 target을 계산 하지 않을까? Learning rate(α)가 아주 미세하게 변경되기 때문에 적용하지 않아도 결과적으로 큰 차이는 없음. Q-Network알고리즘 정리
  12. 12. • 예측한 Y^의 Θ (Weight)를 업데이트하게되면, target의 Θ도 함께 변 경되게 된다. • 즉 화살을 쏘는 순간 target도 함께 움직이게 되는 상황 Q Network는 network가 너무 적고, 변수간의 상관관계 및 고정되지 않는 Target으로 적용이 어렵다. Lec 7. Q Network 문제점
  13. 13. • 저장된 상태 중에서 랜덤하게 몇개만 가져오면, 전체의 분포가 잘 반 영될 수 있음. (correlation이 제거될 수 잇음) DQN의 해결방안 • Network의 깊이를 더 깊게하여 최적의 weight를 찾아가 도록 변경
  14. 14. • Target(Y)의 Θ (Weight)와 예측값(Y^)의 Θ를 분리한다 • 학습할때는 예측값의 Θ만 업데이트하고, • 일정한 시간 후에 target의 Θ 에 복사한다. DQN의 해결방안 Target Network가 현재 학습과정에서 영향을 받지 않도록 분리
  15. 15. DQN1 (NIPS 2013 적용) 위에서 제시한 3가지 중 2가지 해결방안을 적용 1단계. Go deep • Layer를 추가하여 2개로 생성.
  16. 16. 2단계. Replay Memory • Action에 대한 결과(state, reward.. )를 buffer에 저장 • 매 10번째 episode에서 buffer에 저장된 상태를 10개씩 50번 학습함. • 메모리(buffer)에서 받아온 정보를 stack에 저장하고, 이를 학습한다. • 일단 for문으로 minibatch(10건) 만큼씩 정답과 예측에 필요한 상태(state)를 저장한다. • 10개가 채워지면 실제 학습을 수행하는 dqn.update함수를 호출한다.
  17. 17. DQN2 (Nature 2015 적용) NIPS 2013 모델 Go Deep Capture and Replay • 학습초기에는 위와 같은 결과가 발생함. Nature 2015 모델 Go Deep Capture and Replay Separate Network • 학습초기 (3~400 episode)부터 10,000
  18. 18. • 상태를 저장할 버퍼를 생성한다. • Target과 예측에 사용될 네트워크 (Θ, Weight)를 각각 생성한다. 초기에는 2개의 값이 동일하다. • Action 선택 및 실행 후 reward, env를 받아온다. • Action에 의해 받아온 상태, reward를 바로 학습하지 않고, 일단 버퍼(D)에 저장한다. • 버퍼에 저장된 데이터를 랜덤하게 가져와서 학습을 한다. • 분리된 Target 네트워크 (Θ, Weight)를 이용한 값(Yi)와 학습에서 사용한 네트워크 (Θ)를 이용한 값을 비교하고, • 비교 결과에 따라서 학습에 사용된 네트워크(Θ)를 업데이트 한다. • 분리된 Target 네트워크 (Θ, Weight)를 이용한 값(Yi)와 학습에서 사용한 네트워크 (Θ)를 이용한 값을 비교하고, • 비교 결과에 따라서 학습에 사용된 네트워크(Θ)를 업데이트 한다. • 그리고 일정 단계 후에 Target 네트워크 (Θ)를 업데이트 한다. Nature 2015 전체 알고리즘
  19. 19. 1). 2개의 Network 생성 및 초기화 (2개 동일하게) 2). 학습 중에는 mainDQN만 업데이트 됨 --> 일정 간격마다 mainDQN = targetDQN으로 복사 3). 일정 간격마다 mainDQN = targetDQN으로 복사 (Weight 값을 복사) Network를 분리하고, 복사하는 방식 초기 동일한 NW로 구성하고, 학습시에는 target NW를 변경하지 않고, 일 정 기간이후에 학습된 NW를 target NW에 복사

×