66,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결프로그래머를 위한 강화학습(저자 직강)
MyModel(tf.keras.Model)에 action matrix와 reward와 관련해서
training시에 필요한 action matrix와 reward를 받기위해 inputs에 dummy로 input_action_matrixs와 input_rewards를 정의하고 있는것처럼 보이는데요. 이렇게 하지않고 MyModel에 예를들면 setActionMatrixs, setRewards 이런식으로 함수를 정의하고 fit를 호출하기전에 set함수를 호출하여도 될것 같은데, 이렇게 했을때 단점이 있나요?
- 미해결프로그래머를 위한 강화학습(저자 직강)
2.7 TD 상태가치함수
2.7 TD와 SARSA를 공부하던 중 이해가 가지 않는 부분이 있어 질문 드렸습니다!상태가치함수 V(t)는 반환값에 대한 기댓값이고 다이내믹 프로그래밍은 model-based이기 때문에 전체 상태와 가치를 다 안다는 전제하에 V(t)를 구할 수 있습니다. MC에서는 에피소드를 여러번 반복해서 실행하고 누적된 반환값을 에피소드 횟수로 나누어서 V(t)를 구합니다.그런데 여기에서 이해가 안되는 것이 TD에서 V(t+1)을 구하는 방법입니다. 다이내믹 프로그래밍과 같이 model-based인 것도 아니고 MC처럼 에피소드가 끝날때까지 계속 구하는 것도 아닌데 어떻게 상태 가치 함수를 구할 수 있는 건가요? 상태가치함수는 반환값에 대한 기댓값이라고 이해했는데, 반환값은 에피소드가 끝날때까지 실행해야 알 수 있는 것 아닌가요?질문 봐주셔서 감사합니다!
- 미해결프로그래머를 위한 강화학습(저자 직강)
cartpole_DQN 에러
github에 있는 cartpole_DQN 코드를 그대로 사용하는데 위와 같이 에러가 뜹니다. 별도로 수정한 내용은 없고 우분투 20.04, 코랩에서 돌렸습니다.
- 미해결프로그래머를 위한 강화학습(저자 직강)
교재 P42 MDP 계산 질문
맨 아래 수식이 파이1 X p1 + 파이2 X p1 으로 나오는데요,파이1 X p1 + 파이1 X p2 가 되어야 하지 않나요?파이는 행동을 선택할 확률이고 S1->S2 로 이동하는건 파이 1에 국한되는 일이기 때문에 파이 1은 고정, S3로 갈수도 있는 확률을 곱해서 더해줘야 할것 같은데..글을 쓰다 보니 이것도 아닌것 같네요..조금 더 설명 부탁드립니다.
- 미해결프로그래머를 위한 강화학습(저자 직강)
PPO에서 min()을 사용하는 이유가 궁금합니다
설명해주신대로면,min()을 사용하지 않아도 이미 clip()을 통해서 r()이 상항과 하한을 넘기면 a 혹은 b로 고정되고, 그 범위 안에 들어가면 r()이 그대로 나오는 것으로 생각됩니다. min()이 여기서 어떠한 역할을 하는지 궁금합니다.=> 범위 안에 있을때 r(original) 과 r(clipped)가 달라지는 경우가 있나요?
- 미해결프로그래머를 위한 강화학습(저자 직강)
cartpole_reinforce.ipynb 에러
코랩에서 cartpole_reinforce.ipynb 실행시킬때 아래와 같은 에러 발생합니다.ValueError: Layer "my_model_1" expects 3 input(s), but it received 1 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(None, 1, 4) dtype=float32>]에러나는 소스 위치는 아래 화면에서 "y_pred = self(states, training=True)" 부분에서 에러가 발생됩니다. class MyModel(tf.keras.Model): def train_step(self, data): in_datas, out_actions = data states, action_matrix, rewards = in_datas[0], in_datas[1], in_datas[2] with tf.GradientTape() as tape: y_pred = self(states, training=True) action_probs = K.sum(action_matrix*y_pred, axis=-1) loss = -K.log(action_probs)*rewards trainable_vars = self.trainable_variables gradients = tape.gradient(loss, trainable_vars) self.optimizer.apply_gradients(zip(gradients, trainable_vars)) tensorflow 버젼 : 2.9.2 이며, 모델에 3개의 값을 주어야 하는데, 1개만 받아서 그런것 같습니다.해결 방법 알려 주시기 바랍니다.감사합니다.
- 미해결프로그래머를 위한 강화학습(저자 직강)
DQN 알고리즘 실행 결과
말씀하신대로 코드를 수정하니 정상적으로 학습을 진행합니다.다만 학습 결과가 안 좋은데.... 강의에서 설명하신 것을 보면 하이퍼 파라메터에 민감하다고 하셨습니다.제 생각에는 하이퍼 파라메타 문제보다 타겟 신경망을 계속 업데이트하는 문제, 즉 부트스트랩의 문제점이라고 생각합니다. 유튜브나 다른 책에서 DQN 코드를 보면 별도의 타겟 신경망을 만들어서 따로 업데이트하고 있습니다.현재 코드는 부트스트랩 문제를 안고 있는데, 학습 결과가 좋지 않은 것에 대해 의견 부탁드립니다.
- 미해결프로그래머를 위한 강화학습(저자 직강)
DQN 코드 에러
ValueError: cannot reshape array of size 2 into shape (1,4) DQN 코드에서 다음과 같은 에러가 납니다.state_t = np.reshape(state,[1, 1, self.state_size])여기서 문제가 생기는 거 같은데.. 코드 확인 부탁합니다. DQN 뿐만 아니라 REINFORCE, A2C 모두 같은 에러가 납니다.
- 미해결프로그래머를 위한 강화학습(저자 직강)
DQN 질문
(사진)
- 미해결프로그래머를 위한 강화학습(저자 직강)
개발환경 구축관련 문의 드립니다.
안녕하세요... 강의 환경 구축관련 문의 입니다.리눅스에 도커 깔고 거기서 환경을 만드려고 하는데요.(visual code로 접속해서 사용)Microsoft Visual C++ 설치도 나와 있던데.리눅스환경에서 어떻게 처리 해야 하나 궁금해서 문의 드립니다.
- 미해결프로그래머를 위한 강화학습(저자 직강)
MDP질문
교재에서 v(s)와 vㅠ(s)가 같은 값이라고 하셨는데, 그러면 최적 상태 가치 함수는 어떻게 나오는 건가요? 어차피 v(s)는 vㅠ(s)와 같은 값일 텐테 어떻게 값이 변화되는 건지 모르겠습니다.
- 미해결프로그래머를 위한 강화학습(저자 직강)
MDP 질문
MDP에서 상태가 변한다는 것은 원래 가지고 있던 상태 전이 매트릭스와 정책의 영향을 동시에 받는다는 것과 같다. (이해완료)따라서 행동에 따른 정책과 상태 전이 확률의 기댓값(평균)을 구함으로서 정책을 고려한 상태 전이 매트릭스를 구할 수 있다(이해 못함) -> 두번째 문장에서 기댓값을 구해서 상태전이 매트릭스를 구할 수 있다는 부분이 이해가 잘 안됩니다.
- 미해결프로그래머를 위한 강화학습(저자 직강)
보상값과 보상함수
MRP에서 R을 보상 함수라고 책에 써 두셨는데, 여기서 보상함수를 구하는 방법은 확률의 기대값으로 계산한다고 하셨습니다. 확률의 기대값을 구하는 방법은 각각의 확률에 해당 상태의 기대값(주어지는 값, 임의의 값)을 곱한 것을 다 더해주면 된다고 하셨습니다. 그런데 MDP 설명하는 강의에서 계속 보상값이라는 표현을 쓰시는데 이 표현이 정확한 것인지 문의 합니다.
- 미해결프로그래머를 위한 강화학습(저자 직강)
MDP 상태가치 함수에서 기대값 관련 질문 드립니다.
안녕하세요, 선생님MDP 상태가치 함수에서 정책의 기대값 식이 이해가 잘 안갑니다. 기대값은 앞강의에서 알려주신 바와 같이 gain x 확률의 총합으로 정의되는데 이 정책의 기대값은 조건부 확률 pi의 합인데 어떻게 기대값이 되는건가요?
- 미해결프로그래머를 위한 강화학습(저자 직강)
Reward 에 대한 질문 드립니다.
좋은 강의 감사드립니다. 깊이 있는 지식에서 나오는 것들이라 듣는 순간 아는것 처럼 착각하게 됩니다. 중반까지 듣고 있는데 풀리지 않는 의문이 있어서 질문드립니다. 보상에 관한 것인데 나누어 질문 드리려고 합니다. 1. Gym 과 같은 것을 사용하면 보상이 나오는데 이것은 일종의 설계로 보입니다. 즉, 좌 또는 우로 움직여서 성공적으로 움직이면 reward 가 주어지는 구조로 보입니다. 제가 이해한 것이 맞는지? 이런 질문을 드리는 이유는 강화학습이 reword 를 학습하는것은 아니다 라는 판단이 있어서 입니다. 2. 만약 위 질문에서 답이 yes 라면 reward 를 환경과 상황에 따라 설계를 해야된다는 말씀이 되는데 어떤 규칙이나 방법이 존재하는지? 너무 복잡한 환경에서 어떤 reward 를 줘야 되는지 모른다면 어떻게 접근하면 될까요? 3. reward 가 지연되어 들어온다면 여전히 강화학습이 유효한가? 라는 질문입니다. 예를 들어 비행기 시뮬레이션에서 pitch 를 위로 올린다면 올리기 시작 후 원하는 각도가 될따까지 시간적인 지연이 있을 것입니다. 이경우 그 행동을 시작했던 시점과 시간차가 나는데 여전히 유효하게 학습을 하는지? 라는 질문이 됩니다. 아마도 deep learning model 이 함께 사용된다면 가능할 수 도 있겠다는 생각이지만 그게 아닌 단순한 Q-Learning 정도로 이것은 가능한지? 최대한 짧게 정리하려고 했는데 결국 두서없이 작성했습니다. 문장력이 없어서라고 생각하고 이해 부탁드립니다. 간단한 힌트라도 좋으니 멀티코어 님의 조언 부탁드립니다. 미리 감사드립니다.
- 미해결프로그래머를 위한 강화학습(저자 직강)
ppo에서 exploration을 어떻게 하는지 궁금합니다.
안녕하세요 강의 잘 듣고 이를 토대로 모델을 만들어서 학습하고 있습니다. 저는 ppo기반으로 학습을 진행했는데요 제가 만든환경에서 어느정도 학습이 이루어지면 환경이 조금 변화 되어 지속 학습을 하게끔하였습니다. 여기서 궁금한점은 제가 만든 환경에서 일부 환경이 바뀌게 되면 지금까지 최신화된 정책을 일부만 따르게 하고 액션을 랜덤하게 샘플링 하고 싶습니다. q러닝에서는 e-greedy 개념으로 epsilon을 통해 액션을 랜덤하게 샘플링 하도록 조절하는데 ppo같이 stochastic 모델에서는 어떻게 해야하는지 잘 모르겠습니다 ㅠㅠ
- 미해결프로그래머를 위한 강화학습(저자 직강)
강의 외 질문입니다. Env 내부 action에 대한 질문입니다.
안녕하십니까 수강생입니다. 저번 질문인, 특정 episode 마다 딥러닝 모델 weight를 저장하는 질문에대해 잘 가르쳐주셔서 정말 감사드립니다. 이번 질문은 강의에서는 약간 거리가 있을 수 있는 점에 대해 여쭤보고 싶은 내용입니다. 강의를 잘 학습하고 이해한 뒤, 최종적으로는 자신이 만든 env에 적용하는 것이 엔지니어가 최종적으로 원하는 행동일 것 같습니다. 현재는 학습과 제 자신이 만든 env에 적용해보는 실습을 동시에 진행하는 중입니다. 제가 만든 env에 여러 종류의 정책기반 강화학습을 적용해보고 다시 한 번 깨닫고 이해하는 시간을 갖는중입니다. 이러한 시간을 갖던 중에, 제 env에서 마음에 들지 않는 점이 있어 혹시나 하여 질문드리게 되었습니다. env를 만드는 것이 이 강의가 목적이 아닌만큼, 조심스럽게 여쭈어보고싶습니다. 제 env는 현재 간단하게 action discrete는 3개이며 state는 2개 입니다. 여러 reward으로 제가 추구하는 state를 찾는것이 목표입니다. reward에는 물리적 현상에 대한 피드백도 나름 넣어보고, 다양하게 시도 중입니다. 여기서 한 가지 문제가 발생했습니다. 강화학습 결과 action이 한가지로 고정되는 현상이 일어나고 있습니다. (예를들어 aciton이 0,1,2중 1로만 행동하는 중) 이 현상은 어떤 정책기반 강화학습을 사용했느냐에 따라 생기는 문제는 아닙니다! 간단히 생각하여, 추론가능하게도 1만 행동하는 것이 바람직한 알고리즘입니다. 이 현상을 방지하기 위해서 env 내에서 action "1"의 행동이 다음으로 제한되는 코드를 만들고 싶습니다. "같은 행동을 '연속으로' 100 번 실행하지 않는다" 위를 파이썬 코드로 작성하여 env내에 넣고자 합니다. 머리를 굴려봐도 잘 해결되지 않아서, 혹시 코드 작성에 도움을 주실수 있으실까요? 감사합니다
- 미해결프로그래머를 위한 강화학습(저자 직강)
episode중간에 weight나 모델을 저장하고싶습니다.
안녕하십니까 수강생입니다. 지난번 질문에 대해 답변해주셔서 정말 감사합니다. 또 매우 많은 도움이 되었습니다. 하루 하루 강의를 들으며 발전해나가고 있어 매우 뿌듯함을 느끼고 있습니다. 선생님께 감사의 말씀을 드립니다. 이번에 질문드리게 된 내용은, episode가 500번 정도인 경우에는 잠깐 기다리면 곧 끝나는 양입니다. 가끔씩 episode가 많은면 1000번 혹은 2000번까지 진행하고 있는데요, 500번 인경우에는 부족하고 한 번에 2000번의 episode를 진행하니, 1500번 정도에서 더 이상 reward가 높아지지 않고 정체되는 경우가 가끔 있었습니다. 이 경우에는 2000번을 다하고 model.save를 하기까지 기다리기가 매우 번거로웠습니다. 중간에 episode가 100번마다 model을 save하고자 합니다. if (episdoe % 100) ==0: 이런 식으로 Class Agent(object) 내 def train(self)에 코드를 짜 넣어보려고 했습니다. 아직까지 해결 방법이 잘 떠오르지가 않고있습니다ㅠ 혹시 중간 중간 모델을 세이브할 tf.keras.callback.Modelcheckpoint와 비슷한 코드를 알 수 있을까요? 보통의 일반적 딥러닝 모델은 epoch마다 업데이트하며 저장한다는 것은 알고있었습니다. 하지만 강화학습의 경우에는 다른 방법이 필요할것같다는 생각에 질문하게 되었습니다. 감사합니다.
- 미해결프로그래머를 위한 강화학습(저자 직강)
action을 매 episode마다 출력하기위해서는 어떻게 해야하나요?
안녕하십니까 수강생입니다. 강의로 아주 많은 도움을 받고 있습니다. 현재 제 자신만의 env를 만들어 실제로 적용하는 단계입니다. 제 env는 action discrete가 9이며 state는 3인 상황입니다. env길이는 총 100이고 episode는 500번으로 학습시켰습니다. cartpole처럼 떨어지면 True로 바뀌는 조건은 없습니다. 또한 렌더링이 필요없는 환경이며 단순히 행동으로 나오는 데이터가 출력일 뿐입니다. 바람직한 데이터의 크기에 도달할 때 까지 학습을 진행시켰습니다. 보통 학습이 진행될 때는 episode, moving_avg, rewards_avg 세 개뿐만이 출력으로 보여지고 있습니다. 모델 학습이 끝난 뒤, 실제로 학습이 된 모델로 env를 실행시켰을때, 학습한 모델을 토대로 행동하는 action을 보려고 합니다. 그리고 그 action으로 나온 state를 보고 싶습니다. 예를 들어 episode: 1, actions : [0,0,0,1,1,1,2,2,2,3,3,3,3,~,8,8,8,8], states : [ 100, 50, 25] action의 갯수는 총 100개 -> env 길이가 100이기 때문 (이유 : actions discrete가 9이면 action은 0~8까지의 행동을 취함, state는 3이기 때문에 3개의 값을 보여줌) 이렇게 관찰하고싶습니다. 어떻게 해야할지 전혀 모르겠어서 도와주실 수 있으실까요?
- 미해결프로그래머를 위한 강화학습(저자 직강)
MDP 행동가치함수에 대한 문의 입니다.
제일 아래 쪽 ? 부분이 정의에 의한 부분이 맞는 건지요? 설명하실때 왼쪽은 행동에 대한 합을 나타내고 오른쪽은 하나의 행동에 대해서라고 강의를 하셨는데 이 부분이 이해가 가질 않습니다.