저번 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