SKKUCS / graduationProject

2018-2
2 stars 0 forks source link

최종보고서 작성 #24

Open WinteringAsch opened 5 years ago

WinteringAsch commented 5 years ago

각 댓글에 사항 하나씩 정리하기. 어떤 사항에 추가사항이 있을 경우 댓글 수정.

WinteringAsch commented 5 years ago

다른 구현예시들 정리

WinteringAsch commented 5 years ago

전반적인 구조

image

원본 픽셀(240x256x3)(확인필요!) -> 전처리(자르기, 회색화, 다운샘플) -> 회색 화면(88x128x1) -> 4장 쌓기(88x128x4) 잘린 사진 필요한 경우 ForTest 코드 이용해서 이미지 생성 가능. 따로 얘기하삼. 초당 프레임 : 60 (확인필요 : nes_py는 60fps지만, 아마 gym_super_mario_bros가 아닌가봄. 현재 20step이 인게임 1카운트) 찾아보니 : 인게임 400카운트가 160초, 1카운트에 20스텝이므로 -> 1초에 50스텝. 프레임 스킵(같은 행동 반복) : 6 (50이 6으로 안나누어 떨어져서, 5로 바꾸는건 어떨까 싶음.)(어자피 안나누어 떨어지는거, 8로 올리는것도... 왜냐면 아예 안나누어 떨어지는 것보단 그래도 소수로라도 나누어지는게 나을지도.) 오리지널 dqn이 프레임스킵 4, 이보다 프레임스킵을 높인 이유는 1)학습량을 줄이기 위해 2)슈퍼마리오는 기존 예제보다 Long-term으로 봐도 될꺼라 판단했기에. 메모리 구조 : (History, Action, Reward, Next_History, Done) History란 (1x88x128x4), 즉 회색화면 4장.

신경망 구조 Conv2D, 32, 8, 4, Relu Conv2D, 64, 4, 2, Relu, Conv2D, 128, 3, 1, Relu Flatten Dense, 512, Relu Dense, 12(ActionSize) Conv2D의 경우 순서대로 (_, 필터갯수, 필터크기, Stride, 활성화함수). 오리지널 DQN은 세번째 층이 (Conv2D, 64, 3, 1, Relu)임. 이거에 비해선 필터 개수를 늘림. 여러 구현예시들을 살펴봤을 때 대체적으로 이정도였다…?

보상 구조 이 경우 Grananqvist 논문 참조함. 단 LSTM이 아니기 때문에 일정시간 진행불가 페널티는 삭제. 이동 : 각 방향 이동거리 0.03(오른쪽 +, 왼쪽 -) 점수 : 점수 0.01, 최대 0.5 죽음 : -1 시간 : 시간당 - 0.01 (단, 현재는 게임 시간 1초당 0.01로 되어있는데, 원본에서 이게 step인지 인게임인지 확인하지 못함.)(추가, 스텝당으로 바꿀 예정)(추가, 바꿈, 환경폴더 풀하거나 밑 파일을 환경 폴더에 덧씌우기.) smb_env.zip

전반적인 구현 이유(왜 보상을 이렇게 했는지, 신경망 구조는 왜 바꿨는지 등)는 ehrenbrav 글에서 본 이유와 거의 비슷함.

'가중치가 어떻게 부여되고 있는지'는... 우리가 써야 하는 부분은 아닌 것으로 보임. 우리는 오류함수가 어떻게 작용하는지 등만 논하면 되지 않을까.

그리고, gym.make(env) 부분만 수정하면 만들어진 환경에는 바로 적용할 수 있음. 대표적으로 atari 예제들은 바로 적용 가능할 것으로 보임.

WinteringAsch commented 5 years ago

수학 관련

장원석씨 ppt 이것도 참고하면 좋을듯.

수학 함수들 설명하는건 MDP -> 큐러닝 -> 더블 큐러닝 순서로 설명하는게 나을 듯, Sean Klein 논문과 멍멍이책 참고. 논문은 2페이지. Q함수 : 멍멍이책 144페이지부터 참고. Q(상태t, 행동t) <- Q(상태t, 행동t) + 학습률 (‘상태t에서 행동t를 했을 때 보상’ + 감마 ’다음 상태에서 최대 기댓값’ - Q(상태t, 행동t) ) Double Q Learning이나 Q Learning이나 위 식은 똑같고, ‘다음 상태에서의 최대 기댓값’을 어떤 네트워크로 예측하냐의 차이. 요는 현재 행동을 판단하는 신경망과 다음 기대보상을 예측하는 신경망을 분리해서, 미래 신경망은 다른 주기로 업데이트. 이를 사용하면 어떤 overconfidence를 해소할 수 있다고 한다. (H. Van Hasselt, A. Guez, and D. Silver, “Deep reinforcement learning with double q-learning,” CoRR, abs/1509.06461, 2015)

Loss function : Huber Loss(https://en.wikipedia.org/wiki/Huber_loss) -1~1까지는 2차함수, 그 외에는 1차함수의 모양을 가짐. 이를 이용해서 보다 안정적인 학습이 가능.

WinteringAsch commented 5 years ago

Screenshot from 2019-05-05.zip

WinteringAsch commented 5 years ago

temp.docx

WinteringAsch commented 5 years ago

image

WinteringAsch commented 5 years ago

image 큐러닝 -> DQN -> Double DQN으로 전개. 각 식 하나씩 큐러닝 -> DQN : 목표가 되는 정답이 계속 바뀌기 때문에, target 신경망을 따로 만들어 미래에 대한 예측은 target 신경망으로 하고, 일정 시간마다 online->target으로 복사. image DQN-> Double DQN :

WinteringAsch commented 5 years ago

Screenshot from 2019-05-07 08-34-34

WinteringAsch commented 5 years ago

conclusion.txt

WinteringAsch commented 5 years ago

Screenshot_2 Screenshot_3 Screenshot_1

JesungKoo commented 5 years ago

머여 이미 있쟝.. Screenshot from 2019-05-27 23-15-09

sotsukyo.zip