cartpole_dqn 중 def train_mini_batch(self,Q):에서 Q[0,0,action]의 0,0의 의미는?
201
投稿した質問数 2
Q함수 4개의 states가 0행 0열에 있다는 의미입니까?
回答 1
0
안녕하세요 이석헌님.
강의를 수강해 주셔서 감사합니다.
저도 처음에 공부할 때 이해가 쉽지 않았던 지점입니다.
먼저 위 그림을 살펴보시는게 좋을 것 같습니다.
인공신경망 모델을 생성할 때 입력을 (1,4) 배열로 생성합니다. self.state_size가 4이기 때문입니다. 하지만 에피소드 동안 데이터를 쌓아 배치(여러 개의 데이터를 한 번에 입력)로 학습하기 때문에 모델에 입력되는 데이터는 실질적으로 (n, 1, 4)가 됩니다. 하나의 차원이 더 생기는 것이죠.
텐서플로우 버전에 따라 입력을 (1,self.state)가 아닌 self.state로만 선언해도 되기도 합니다. 하지만 이 강의에서 사용한 텐서플로우 버전에서는 (1,self.state)와 같이 사용해야 합니다.
이제 인공신경망의 출력을 살펴보겠습니다.
여기에서 출력의 크기를 4로 지정합니다. self.action_size가 4이기 때문입니다. 인공신경망은 내부에 Q를 저장하고 있습니다. 상태(state)를 입력하면 Q(행동별 가치)를 출력합니다. 행동을 선택할 때 Q가 가장 큰 행동을 선택하는것이 Q러닝입니다.
입력은 명시적으로 (1,4)로 지정했지만, 출력은 단순히 4로만 지정했습니다. 내부적으로 (1,4)로 변경되어 사용됩니다. 이것은 텐서플로우의 동작 특성이라 생각하시면 됩니다. 배치학습을 하기 때문에 출력 또한 입력과 마찬가지로 (n,1,4)가 됩니다.
train_mini_batch 함수 내부에서 사용하는 Q는 모델의 출력을 저장하고 있습니다. take_action_and_append_memory 함수 내부에서 Q = self.model.predict(state_t)와 같이 Q값을 계산합니다. 따라서 하나의 Q값만을 반환하는 시점에서는 Q의 shape(모양)은 (1,1,4)가 됩니다.
따라서 Q값을 지정하기 위해서는 Q[0,0,n]과 같이 사용해사 값이 있는 위치를 지정할 수 있습니다.
다음 코드를 실행해 보면 좀 더 이해가 쉬울 것 같습니다.
감사합니다.
-------------------------------
import numpy as np
a = np.array([[[0.2, 0.3, 0.4, 0.1]]])
print(a.shape) #(1)배열의 모양
a[0,0,1] = 0.9 #2번째 항목에 0.9를 입력
print(a) #(2)
-------------------------------
(1, 1, 4) --> (1) [[[0.2 0.9 0.4 0.1]]] -->(2)
-------------------------------
딥러닝 코드에 Batch Normalization 적용해보기 질문입니다
0
580
1
딥러닝으로 Regression 문제 적용해보기 (House Price Kaggle 문제) 질문입니다
0
478
1
Binary Classfication 딥러닝 적용해보기 질문입니다
0
366
1
파이토치 device (gpu / cpu) 관련 질문드립니다.
0
711
1
혹시 응용편은 어디서 볼 수 있을까요?
0
471
1
karting asset
0
434
2
using Unity.MLAgents; 오류
0
641
1
Augmentation 질문
1
390
1
cartpole_reinforce.ipynb 에러
0
530
2
DQN 알고리즘 실행 결과
0
357
1
DQN 코드 에러
0
494
1
DQN 질문
0
546
1
개발환경 구축관련 문의 드립니다.
0
230
1
MDP질문
0
207
1
MDP 질문
0
266
1
보상값과 보상함수
0
876
1
MDP 상태가치 함수에서 기대값 관련 질문 드립니다.
0
412
1
Reward 에 대한 질문 드립니다.
1
237
1
ppo에서 exploration을 어떻게 하는지 궁금합니다.
0
881
2
강의 외 질문입니다. Env 내부 action에 대한 질문입니다.
0
301
1
episode중간에 weight나 모델을 저장하고싶습니다.
0
941
2
action을 매 episode마다 출력하기위해서는 어떻게 해야하나요?
0
227
1
MDP 행동가치함수에 대한 문의 입니다.
0
404
1
TypeError: in user code: TypeError: Can not convert a NoneType into a Tensor or Operation.
0
1046
5

