seungeunrho / rlfrombasics Goto Github PK
View Code? Open in Web Editor NEWprovides all the codes from the book "RL from basics(바닥부터 배우는 강화학습)"
provides all the codes from the book "RL from basics(바닥부터 배우는 강화학습)"
Line 91 in 8062dcd
158쪽의 코드에서는 없는 내용이고 실제로도 Q learning에서는 사용되지 않는 부분이지만, SARSA 코드에서 잘못 가져와진 line인 것 같습니다.
삭제하는 것이 어떨까 건의 드려봅니다.
안녕하세요, 노승은님.
저는 '바닥부터 배우는 강화학습' 책으로 강화학습을 처음 공부하고있는 남상호 라고 합니다.
먼저, 좋은 책 써주셔서 강화학습 쉽게 잘 공부하고 있습니다 감사합니다:)
다름이 아니고, 책 내용 관련해서 수정 필요한 부분이 있는 것 같아서 문의 드립니다.
(깃헙 채널로 문의드리는게 맞는지 모르겠으나, 이게 빠를 것 같아서 이쪽으로 문의드립니다.)
문의 내용은 아래 2개 이슈 입니다.
수정하면 아래와 같이 되는게 맞는거 같습니다. (두 스텝 째의 틱은 t+2가 맞으므로)
다시 한번 좋은 책 써주셔서 감사드립니다:)
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)
G_T-1 = r_1 이 아니고
G_T-1 = r_T-1 아닌가요?
위에서 6~8 번째 줄:
등식이 성립하지 않기 때문에 * 값을 아무리 여러 개 모아서 평균내도 그 값은 * 에 다가가지 않습니다. 믿기지 않는다면 실제로 뒤에 나올 구현 코드에서 log를 빼고 학습을 돌려보세요. 아마 학습이 잘 되지 않을 것입니다.
--> 등식이 성립하지 않아서라기 보다는, log 를 씌우지 않으면 underflow 문제 때문에 계산 정밀도가 부족해지기 때문이 아닌지요? 구체적으로는 1) 정밀도 부족으로 인한 오차, 2) 기울기 부족으로 인한 학습속도 저하. 등식은 성립하지 않겠지만 어차피 log 는 monotonic 함수이므로 계산 정밀도만 충분하다면, 결국은 학습에 성공할 것입니다.
RLfrombasics/ch9_ActorCritic.py
Lines 76 to 77 in 8062dcd
현재의 코드에 따르면 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를 계속 진행하게 된다면 종료 조건을 무시하면서 학습을 하는 것이기 때문에
저희가 원하는 학습이 이루어지지는 않을 것이라고 생각합니다.
p.54 에 그림 바로 아래 설명
'왜 s2에서 자장가를 불렀을 때만 ...' -> '왜 s2에서 같이 놀아줌을 했을 때만 ...'
으로 되어야 할 것 같습니다.
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)
작가님 책 177p 오타 제보드립니다.
문맥상 그림 7-6 => 그림 7-8에서 화살표마다 대응되는 w값이 ~ 가 맞다고 생각합니다.
141쪽에 해당하는 MCControl.py
에서는 self.alpha=0.01
을 정의하고 update_table()
에서 self.alpha
를 사용하고 있지만,
146쪽에 해당하는 SARSA.py
와 158쪽에 해당하는 QLearning.py
에서는 self.alpha
의 사용 없이 update_table()
에서 바로 0.1을 사용하고 있습니다.
표현을 하나로 통일한다면 셋의 비교가 조금 더 쉬울 것 같습니다!
make_batch 함수의, done 값을 통해 done_mask 변수를
done_mask = 0.0 if done else 1.0 으로 선언하셨는데, 0과 1이 반대가 되어야하는 것이 아닌가요?
만약, 책 내용이 정상이라면, 왜 이런지 설명해주시면 감사하겠습니다.
36페이지 5줄에 오타인 듯 합니다.
s_3에서 다시 s_4로 이어지는 -> s_4에서 다시 s_4로 이어지는
Lines 93 to 95 in 8062dcd
Lines 101 to 102 in 8062dcd
while not done:
안의 if done: break
은 불필요합니다.95줄이 s_prime, r, done, truncated, info = env.step(a)
으로 바뀐 이상, 위의 93줄도 while not (done or truncated):
로 바뀌어야 합니다. 그렇지 않으면 가끔 episode가 무한히 진행됩니다.
reference: https://gymnasium.farama.org/api/env/#gymnasium.Env.step , https://www.gymlibrary.dev/environments/classic_control/cart_pole/#episode-end
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.