Q-Learning(큐러닝)

Seungsoo Lee·2022년 7월 7일
0

RL

목록 보기
10/15

date: 2021-10-18 18:00:00



이전 포스트에 이어서 이번에는 q-learning을 해보겠다.


SALSA vs Q-learning

q-learning은 SALSA 와 다르게 SALS만 하는것이다,

왜 그러면 마지막 A를 뻈을까??

왼쪽은 SALSA 오른쪽은 Q-learning이다.

SALSA경우 여기서 큰 문제점이 생기는데,

이 식을 보다시피 t+1(두번째)에서의 행동이 epsilon greedy policy에 의해서 결정이 되기 때문에 epsilon의 확률로 trap으로 잘못 가게 되면 위 그림과 같이 q값이 직진도 하기전에 마이너스 값으로 설정이되어 agent가 저 길을 포기해 버리게 된다.

이런 큰 문제점을 해결하기 위해서 Q-learning 이라는게 생겼다.




Q-learning

우리는 방금 salsa의 문제점에 대해서 이야기 해봤다.

그럼 t+1에서의 행동을 효율적으로 선택하여 학습시키는 방법이 어디있을까?

그것이 바로 q-learning이고 우리가 이미 그런 방법을 알고 있다.

바로 벨만 최적 방정식이였다.

두번쨰 행동을 할때 최적 큐를 찾는 식을 이용할 것이다.

t+1(두번째)의 선택 상황에서 policy 대로 행동을 안하고 최적 큐를 찾는 max를 이용해서 action을 선택하게 되면

오른쪽과 같이 epsilon의 확률로 trap으로 갈 이유가 전혀 없어지고 학습도 훨씬 정확하게 될 것이다.

그럼 q-learning 또한 grid-world를 이용해서 풀어볼까?




Q-learning in grid-world

α = 0.1

현재 grid world의 q 값이다.

000
0s100s2-0.020s30
0-0.01-2
000
0s4-0.010s5-10s6 Trap(R = -1)0
001
000
0s700s80.10s9 Goal(R = 1)0
000

agent가 지나간 state이다.(에피소드)



000
0s100s2-0.020s30
0-0.01-2
000
0s4-0.010s5-0.920s6 Trap(R = -1)0
001
000
0s70.0080s80.10s9 Goal(R = 1)0
000

(Q(s1, down) = 0, maxQ(s4, down) = 0, Rt+1 = 0)

update : Q(s1, down) = 0 + 0.1(0 + 0.8*0 - 0) = 0


(Q(s4, down) = 0, maxQ(s7, right) = 0, Rt+1 = 0)

update : Q(s4, down) = 0 + 0.1(0 + 0.8*0 - 0) = 0


(Q(s7, right) = 0, maxQ(s8, right) = 0.1, Rt+1 = 0)

update : Q(s7, right) = 0 + 0.1(0 + 0.8*0.1 - 0) = 0.008


(Q(s8, up) = 0, maxQ(s5, not right) = 0, Rt+1 = 0)

update : Q(s8, up) = 0 + 0.1(0 + 0.8*(0) - 0) = 0


(Q(s5, right) = -1, maxQ(s6, down) =1, Rt+1 = -1)

update : Q(s5, right) = -1 + 0.1(-1 + 0.8*(1) - (-1)) = -0.92


(Q(s6, down) = 1, maxQ(s9, At+1) =0, Rt+1 = 1)

update : Q(s6, down) = 1 + 0.1(1 + 0.8*(0) - (1)) = 1




제가 올린 글에서 잘못된 부분이 있으면 제 메일로 연락주세요!

Reference : 파이썬과 케라스로 배우는 강화학습


이승수의 저작물인 이 저작물은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

0개의 댓글