최근 포토로그


인프런 Dummy Q-learning(table) 머신러닝

머신러닝에서는 

supervised learning과 unsupervised learning이 있다. supervised learning은 데이터가 그 데이터에맞는 정답 이있어서 컴퓨터가 weights들을 조정해가면서 정답에맞는 알고리즘을 찾는것이다.

unsupervised learning은 딱히 정답이 없고, 그냥 가장 최선의 결과값을 도출해내는 방식이다. 
게임등에서 많이쓰인다. 

python에서 gym이라는 모듈을 이용해서 할수있는게임중 Frozen Lake라는 게임이있다. s라는 장소에서 출발해서 g라는 장소로 도착하게하는 일종의 미로게임 같은것이다.

agent는 실제 그게임을 플레이하는 녀석이고, action은 agent가 어떤행동을 하게될지를 정하는 명령어다. reward는 말그대로 각 action에 따라 reward가 주어지면 그 reward를 가장큰 방향으로 agent를 움직이게 하게끔 알고리즘을 설정하는것이다.

각 상태가 변할때마다 q라는것을 확인해보고 어디로 이동할지를 정한다. Q는  state,action이 주어졌을때의 reward를 나타낸다.
maxQ(s1,a) 일경우 s1의 상태에서 a라는 action을 취했을때의 가장큰 reward를 반환하고,

argmaxQ(s1,a) 일경우 reward의 상태가 가장큰 a를 반환하게 된다.

위의 함수명은 임의로 정한것이며, 실제 코딩할때는 이름이 약간달라질수도있다.
이런식으로 함수를 다 설정해놓고, 수학적으로 표현을 한다.


각상태에 따른 s와 a그리고 그 a(action)에 의해 얻게될 reward를 정리하면 위와같고, R(대문자)은 모든 reward의 합이라고 생각해보자. 
Rt는 t상태일때의 예상되는 R의 값이라고 볼수있고, R*(t) = r(t)+ maxR(t+1)의 값으로 볼수있다. R*(t)는 reward가 최대값일때의 식을 나타낸것이다.
Q(s,a) = r+ max(Q(s',a')) 는 s', a'일때 최대치의 reward를 따라간다는말이다. (s', a'는 전상태의 state,action을 의미한다)

자, 그럼 실제로 알고리즘으로 구현을 해볼텐데, 먼저 초기값의 reward는 다 0로 셋팅을 하고 시작한다.
그럼 결국 reward값은다 같아질테고, 처음에는 무작위로 움직이다가 우연찮게 goal에 도달하게되면 (정확히는 그 직전)reward가 1이되게된다. 그럼 그때부터 이제 variables들이 업데이트되고, unsupervised learning이 시작된다고보면 된다.

그래서 최적화된 경로는 위와같은 식으로 나올수있게된다.
초기, 각 상태의 reward값을 0로 셋팅하고, a를 선택한다. 그다음 reward를 받고, 최대값이 되게하는 reward를 업데이트한다.(계속반복) 그럼 Q가 학습이 된다.

덧글

댓글 입력 영역


통계 위젯 (화이트)

23
19
6004

구글애널리틱스