Reinforcement learning v0.5

19
시즌 RL - Deep Reinforcement Learning 요약 정리 Reinforcement Learning with Tensorflow & Open AI Gym freepsw

Transcript of Reinforcement learning v0.5

Page 1: Reinforcement learning v0.5

시즌 RL - Deep Reinforcement Learning

요약 정리

Reinforcement Learning with Tensorflow & Open AI Gym

freepsw

Page 2: Reinforcement learning v0.5

Open AI Gym

Page 3: Reinforcement learning v0.5

Lec 3. Dummy Q Learning

단순히 action에 대한 reward와 다음 단계 Q의 최대값을 더함

• 초기 아무것도 알지 못하는 상황에서 Q라는 대상에게action을 전달하면,

• Reward와 새로운 state, 게임 종료여부를 반환함.• 이를 기반으로 가장 보상이 큰 action을 선택하도록

하는 방식

Page 4: Reinforcement learning v0.5

Dummy Q Learning 알고리즘

Q Table의 값을 갱신하고, 이를 기반으로 action을 선택

Page 5: Reinforcement learning v0.5

Lec 3. Dummy Q Learning 학습 과정

초기에는 reward 0이 반복, 이후 성공하면서 Q값을 업데이트

• 게임에 성공했을 때만 1을 reward로받음

• 이후 다음 action 선택시에 Q Table에서 가장 큰 action을 선택함

• 최종 Q table이 업데이트 된 결과

Page 6: Reinforcement learning v0.5

Lec 4. Q-Learning Exploit & Exploration

Action 선택시 다양한 선택이 가능하도록 하는 방법

Decaying E-greedy Random noise

• 랜덤으로 선택한 값이 일정 값(e) 이하이면, action을 랜덤으로 선택, 이상이면 Q의 최대값 선택

• è 기존 값과 상관없이 완전히 새로운 선택 가능• Decaying : 시간이 지나면 e값이 작아져서 기존 Q를 많이

활용하도록 함

• 기존 Q값에 랜덤으로 생성된 값을 추가한 후 최대값을 선택하도록 변경

• è 기존 값에 영향을 받음

Page 7: Reinforcement learning v0.5

Discounted future reward

나중에 받을 reward가 미치는 영향을 줄이고, 현재 reward를 높임

• 위의 공식은 아래의 방식을 이용하여 도출

Page 8: Reinforcement learning v0.5

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로 설정

Page 9: Reinforcement learning v0.5

• 위와 같은 80*80 size의 화면에 2가지 색상인 경우 2의 80*80승만큼의 공간이 필요함. à 불가

• 상태를 입력으로 받고,• 상태에 따른 모든 action에 대한 가능성을 출력으로 구성하는 네트워크

Lec 5. Q-Network

Q Table에는 한계가 있으므로, 이를 Neural Network를 활용해 보자

Page 10: Reinforcement learning v0.5

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)를 계산하는 함수를 제외하면 거의 동일하게 활용가능

Page 11: Reinforcement learning v0.5

• 초기 상태를 random 초기화

• 첫번째 상태를 저장

• ∅(s1)는 상태(s)를 전처리한다는 의미, 여기서는 별도의 전처리가없으므로 s1과 동일

• Action 선택 (E-greedy 방식)

• Y(정답)은 2가지 방식으로 계산• 목표(goad)에 도달 했을 때는 다음 상태가 없으므로 reward만 저장• 다음 단계가 있을 때는 다음 단계에서의 가장 큰 값 (discount factor

적용)

그런데 왜 stochastic world에서 learing rate를 적용하여 target을 계산하지 않을까?

Learning rate(α)가 아주 미세하게 변경되기 때문에 적용하지 않아도 결과적으로 큰 차이는 없음.

Q-Network알고리즘 정리

Page 12: Reinforcement learning v0.5

• 예측한 Y^의 Θ (Weight)를 업데이트하게되면, target의 Θ도 함께 변경되게 된다.

• 즉 화살을 쏘는 순간 target도 함께 움직이게 되는 상황

Q Network는 network가 너무 적고, 변수간의 상관관계 및 고정되지 않는Target으로 적용이 어렵다.

Lec 7. Q Network 문제점

Page 13: Reinforcement learning v0.5

• 저장된 상태 중에서 랜덤하게 몇개만 가져오면, 전체의 분포가 잘 반영될 수 있음. (correlation이 제거될 수 잇음)

DQN의 해결방안

• Network의 깊이를 더 깊게하여 최적의 weight를 찾아가도록 변경

Page 14: Reinforcement learning v0.5

• Target(Y)의 Θ (Weight)와 예측값(Y^)의 Θ를 분리한다• 학습할때는 예측값의 Θ만 업데이트하고,• 일정한 시간 후에 target의 Θ 에 복사한다.

DQN의 해결방안

Target Network가 현재 학습과정에서 영향을 받지 않도록 분리

Page 15: Reinforcement learning v0.5

DQN1 (NIPS 2013 적용)

위에서 제시한 3가지 중 2가지 해결방안을 적용

1단계. Go deep

• Layer를 추가하여 2개로 생성.

Page 16: Reinforcement learning v0.5

2단계. Replay Memory

• Action에 대한 결과(state, reward.. )를 buffer에 저장

• 매 10번째 episode에서 buffer에 저장된 상태를 10개씩 50번 학습함.

• 메모리(buffer)에서 받아온 정보를 stack에 저장하고, 이를 학습한다.

• 일단 for문으로 minibatch(10건) 만큼씩 정답과 예측에 필요한 상태(state)를 저장한다.

• 10개가 채워지면 실제 학습을 수행하는 dqn.update함수를 호출한다.

Page 17: Reinforcement learning v0.5

DQN2 (Nature 2015 적용)

NIPS 2013 모델

Go DeepCapture and Replay

• 학습초기에는 위와 같은 결과가 발생함.

Nature 2015 모델

Go DeepCapture and ReplaySeparate Network

• 학습초기 (3~400 episode)부터 10,000

Page 18: Reinforcement learning v0.5

• 상태를 저장할 버퍼를 생성한다.

• Target과 예측에 사용될 네트워크 (Θ, Weight)를 각각 생성한다.초기에는 2개의 값이 동일하다.

• Action 선택 및 실행 후 reward, env를 받아온다.

• Action에 의해 받아온 상태, reward를 바로 학습하지 않고, 일단버퍼(D)에 저장한다.

• 버퍼에 저장된 데이터를 랜덤하게 가져와서 학습을 한다.

• 분리된 Target 네트워크 (Θ, Weight)를 이용한 값(Yi)와 학습에서 사용한네트워크 (Θ)를 이용한 값을 비교하고,

• 비교 결과에 따라서 학습에 사용된 네트워크(Θ)를 업데이트 한다.

• 분리된 Target 네트워크 (Θ, Weight)를 이용한 값(Yi)와 학습에서 사용한네트워크 (Θ)를 이용한 값을 비교하고,

• 비교 결과에 따라서 학습에 사용된 네트워크(Θ)를 업데이트 한다.• 그리고 일정 단계 후에 Target 네트워크 (Θ)를 업데이트 한다.

Nature 2015 전체 알고리즘

Page 19: Reinforcement learning v0.5

1). 2개의 Network 생성 및 초기화 (2개 동일하게)

2). 학습 중에는 mainDQN만 업데이트 됨--> 일정 간격마다 mainDQN = targetDQN으로 복사

3). 일정 간격마다 mainDQN = targetDQN으로 복사 (Weight 값을 복사)

Network를 분리하고, 복사하는 방식

초기 동일한 NW로 구성하고, 학습시에는 target NW를 변경하지 않고, 일정 기간이후에 학습된 NW를 target NW에 복사