대학교를 졸업하고 다시 집으로 돌아왔다.


이제 내방을 다시 꾸며야하는데...


첫번쨰 프로젝트로 모니터를 구매하였다!


이번에 한성에서 나온 시네마 모니터(21:9 비율) 를 구매하였다. 

이제 막 나온 따끈따끈한 신제품이다.



딱 보자마자 엄청난 스케일...


바로 다운받아둔 영화를 실행했는데... 압도적이다!!!







이 모니터를 구매한 또다른 이유중 하나는 바로 이 커브드 모니터이다.


게임을 좋아하는 나로써는 커브드 모니터도 하나의 엄청난 매력!




모니터의 받침대인데, 맥북처럼 알루미늄으로 되어있어서 상당히 고급스럽다.


괜히 플라스틱으로 되어있는것보단 훨씬 좋은듯하다!




한달 넘게 잠 줄여가며 전기세 3배가 나오며 구현한 

DQN으로 Breakout 학습시키는 코드다.

다른 코드들처럼 여러 파일이 있는게 아니고 달랑 이거 하나만 있으면 된다.

코드에 대한 설명은 주석이랑 docstring을 통해 해놨으니 궁금한점을 댓글로.



  1. MCLearning2 2017.08.03 16:01 신고

    정말 감사합니다 제가 찾던거에요!!

 


저번 1편에서는 기본적인 내용만 익히고 아직 Q-table이 업데이트 되지 않았다. 

아마 위와 같은 환경에서 끝이 나버렸을 것이다. 계속 이어나가보자.

agent가 랜덤하게(Q값이 모두 0이기 때문에) 돌아다니다가 state (14)인 점에 도착했다고 생각을 해보자. 그리고 여기서 다른 action이 아닌 오른쪽으로 가는 action을 취했다고 생각해보자. 그러면 Q(14, 오른쪽) = 1 + Max Q(15,a) = 1 + 0 이 될 것이다. 목표지점에 도착했기때문에 reward r = 1 으로 리턴을 해준다. 그럼 아래와 같이 Q-table이 업데이트 될 것이다. 



이런식으로 무한이 반복되다보면 Q-table이 업데이트 될 것이다. 계속해서 업데이트를 해보자.

이번에는 agent가 랜덤하게 돌아다니다가 state(13)에 있다가 오른쪽으로 움직일 것이다. 그럼 Q(13,오른쪽)=0 + 1 이 될것이다. 왜냐하면 Reward는 역시 0일 것이다. 그리고 Max Q(14,a)를 구해야 하는데 이때 state(14)를 보면 Q(14,왼쪽) = 0, Q(14,오른쪽) = 1, Q(14,위쪽) = 0, Q(14,아래쪽) = 0 이므로 가장 큰값은 1이다. 그러므로 Max Q(14,a) = 1 이 되고 Q(13,오른쪽) = 1이 될것이다. 그러면 아래 그림과 같이 또 업데이트가 될 것이다.




계속 업데이트 하면서 이런 방향으로 업데이트 된다고 가정을 해보자



그럼 결국 아래와 같이 Q-table이 작성 될 것이다. 



그러면 이 작성된 Q-table을 통해 움직여 보자

1편에서 말했던것 처럼 agent는 가장 높은 reward를 받을 수 있는 길로 가면 그것이 Optimal한 방법이 될 것이라고 했다. 그러면 agent는 (0) state에서 당연히 오른쪽으로 가게 될 것이다. 왜냐하면 가장 Q값이 높기 때문이고, Q값이 높다는 것은 그 행동을 하였을 때 받을 수 있는 reward의 기댓값이 높다는 말이다. 그러면 이 agent는 항상 update가 된 길로만 다니게 될 것이다. 더 최단의 길이 있는데도 불구 하고 말이다. 이것은 미래에 대해서 고려를 하지 않아서 생기는 문제와 exploration의 문제이다. 


3편에서는 최단거리로 갈 수 있게 미래에 대해 각각 다른 가중치를 줄 수 있는 discount factor와 이미 학습한 Q말고 이외로 도전적으로도 움직이게 할 수 있는 exploration 문제에 대해 다뤄볼 것이다.


위와 같은 알고리즘으로 코딩을 하면 아래와 같다. 













+ Recent posts