Coder Social home page Coder Social logo

rlfrombasics's Introduction

RLfrombasics

"바닥부터 배우는 강화학습"에 수록된 코드를 모아놓은 레포입니다. 누군가에게 도움이 되는 책이었으면 좋겠습니다. 감사합니다.

This repo provides all the codes from the book "RLfrombasics" Hope this book is useful to somebody Thankyou :)

Versions (버전)

GYM 라이브러리 버전 0.26.2 이상 에서 테스트 되었습니다. 이보다 낮은 버전의 GYM 라이브러리를 사용하신다면 본 코드가 올바르게 동작되지 않을 것입니다!

Please use latest version of the GYM library.

Typo(오타)

  1. 챕터 5 : ch5_mclearning.py 코드 97라인
    (수정 전) cum_reward = cum_reward + gamma * reward
    (수정 후) cum_reward = reward + gamma * cum_reward
    Thanks to goodjian7

  2. 챕터 3 : 67, 69 페이지 OX 퀴즈
    (수정 전) r_t+1 + gamma * r_t+1 + ...
    (수정 후) r_t+2 + gamma * r_t+2 + ...
    Thanks to namdori61

rlfrombasics's People

Contributors

seungeunrho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

rlfrombasics's Issues

ch9 codes error (torch 1.13.0)

Traceback (most recent call last):
File "D:\RLfrombasics\ch9_ActorCritic.py", line 101, in
main()
File "D:\RLfrombasics\ch9_ActorCritic.py", line 80, in main
prob = model.pi(torch.from_numpy(s).float())
TypeError: expected np.ndarray (got tuple)

[Chapter 6] MCControl, SARSA, QLearning의 QAgent()에서의 minor suggestion

141쪽에 해당하는 MCControl.py에서는 self.alpha=0.01을 정의하고 update_table()에서 self.alpha를 사용하고 있지만,
146쪽에 해당하는 SARSA.py와 158쪽에 해당하는 QLearning.py에서는 self.alpha의 사용 없이 update_table()에서 바로 0.1을 사용하고 있습니다.
표현을 하나로 통일한다면 셋의 비교가 조금 더 쉬울 것 같습니다!

gym library update

gym library의 아래 update로 인해 221 쪽 예제 code 정상 동작 하지 않습니다.
https://github.com/openai/gym/releases/tag/0.26.0

아래와 같이 고치면 정상 동작 합니다.

@ line 90 @ file 'ch8_DQN.py'
-) s = env.reset()
+) s, info = env.reset()

@ line 95 @ file 'ch8_DQN.py'
-) s_prime, r, done, info = env.step(a)
+) s_prime, r, done, _, info = env.step(a)

242페이지 make_batch 부분

make_batch 함수의, done 값을 통해 done_mask 변수를

done_mask = 0.0 if done else 1.0 으로 선언하셨는데, 0과 1이 반대가 되어야하는 것이 아닌가요?
만약, 책 내용이 정상이라면, 왜 이런지 설명해주시면 감사하겠습니다.

[ch8_DQN.py] infinite loop

RLfrombasics/ch8_DQN.py

Lines 93 to 95 in 8062dcd

while not done:
a = q.sample_action(torch.from_numpy(s).float(), epsilon)
s_prime, r, done, truncated, info = env.step(a)

RLfrombasics/ch8_DQN.py

Lines 101 to 102 in 8062dcd

if done:
break

  1. (suggestion) L101-L102의 삭제
  • while not done: 안의 if done: break은 불필요합니다.
  1. (bug) L93의 수정

내용 문의

p.54 에 그림 바로 아래 설명
'왜 s2에서 자장가를 불렀을 때만 ...' -> '왜 s2에서 같이 놀아줌을 했을 때만 ...'
으로 되어야 할 것 같습니다.

226페이지 내용 관련 의문

위에서 6~8 번째 줄:

등식이 성립하지 않기 때문에 * 값을 아무리 여러 개 모아서 평균내도 그 값은 * 에 다가가지 않습니다. 믿기지 않는다면 실제로 뒤에 나올 구현 코드에서 log를 빼고 학습을 돌려보세요. 아마 학습이 잘 되지 않을 것입니다.

--> 등식이 성립하지 않아서라기 보다는, log 를 씌우지 않으면 underflow 문제 때문에 계산 정밀도가 부족해지기 때문이 아닌지요? 구체적으로는 1) 정밀도 부족으로 인한 오차, 2) 기울기 부족으로 인한 학습속도 저하. 등식은 성립하지 않겠지만 어차피 log 는 monotonic 함수이므로 계산 정밀도만 충분하다면, 결국은 학습에 성공할 것입니다.

[ch9_ActorCritic.py] n_rollout 질문

while not done:
for t in range(n_rollout):

현재의 코드에 따르면 step은 10틱 단위로 연속해서 행해지고 그 데이터를 모아서 model을 업데이트하는데,
10틱이 진행되는 중간에 negative done이 일어났다가 다시 정상 궤도로 돌아온다면 문제가 생기지 않을까요?
https://www.gymlibrary.dev/environments/classic_control/cart_pole/#episode-end
예를 들어, pole angle이 +-12도를 넘어가거나 cart position이 +-2.4를 넘어간다면 negative termination의 조건에 해당하여 episode가 종료되어야 하지만,
10틱이 채 지나기 전에 복구하여 episode를 계속 진행하게 된다면 종료 조건을 무시하면서 학습을 하는 것이기 때문에
저희가 원하는 학습이 이루어지지는 않을 것이라고 생각합니다.

[ch6_QLearning.py] minor suggestion

a_prime = self.select_action(s_prime) # S'에서 선택할 액션 (실제로 취한 액션이 아님)

158쪽의 코드에서는 없는 내용이고 실제로도 Q learning에서는 사용되지 않는 부분이지만, SARSA 코드에서 잘못 가져와진 line인 것 같습니다.
삭제하는 것이 어떨까 건의 드려봅니다.

36 page 오타 제보

36페이지 5줄에 오타인 듯 합니다.
s_3에서 다시 s_4로 이어지는 -> s_4에서 다시 s_4로 이어지는

'바닥부터 배우는 강화학습' 책 오타 문의

안녕하세요, 노승은님.
저는 '바닥부터 배우는 강화학습' 책으로 강화학습을 처음 공부하고있는 남상호 라고 합니다.
먼저, 좋은 책 써주셔서 강화학습 쉽게 잘 공부하고 있습니다 감사합니다:)

다름이 아니고, 책 내용 관련해서 수정 필요한 부분이 있는 것 같아서 문의 드립니다.
(깃헙 채널로 문의드리는게 맞는지 모르겠으나, 이게 빠를 것 같아서 이쪽으로 문의드립니다.)

문의 내용은 아래 2개 이슈 입니다.

  1. 67페이지 OX퀴즈 내용 및 69 페이지 정답 관련 수식 (형광펜으로 표시)
    원래 책 내용은 아래와 같이 되어 있는데요, 2번에서 기대값 함수 내의 2번째 항은 t+2 로 수정이 되어야 맞지 않나요?
    KakaoTalk_Photo_2020-11-30-10-21-05

수정하면 아래와 같이 되는게 맞는거 같습니다. (두 스텝 째의 틱은 t+2가 맞으므로)
KakaoTalk_Photo_2020-11-30-10-20-56

  1. 141페이지 QAgent 클래스 코드
    간단한 오탈자 인데, init 함수 내에서 self.alpha 정의 시에 s가 빠진 것 같습니다. (깃헙 코드는 정상적입니다)
    KakaoTalk_Photo_2020-11-30-10-20-46

다시 한번 좋은 책 써주셔서 감사드립니다:)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.