본문 바로가기
AI/Reinforcement Learning

[Reinforcement Learning-2] Q-Learning에 대한 간단한 이해

by 노마드공학자 2021. 8. 26.
Q Learning?

 

Q-Learning은 앞으로 강화학습 공부를 진행해야한다면, 반드시 확실하게 알고 넘어가야하는 부분입니다!

 

출처 : https://www.analyticsvidhya.com/blog/2019/04/introduction-deep-q-learning-python/

 

Q-Learning을 한줄로 표현하라면 상기의 수학식입니다! (벨만 방정식)

 

Q(s,a) = r + lr * max(Q(s',a'))

이게 무슨의미일까요??

 

강화학습은 State → Action에 따른 Reward가 주어지는 방식으로 진행됩니다.

 

① Q(s,a)는 현재상태(s)에서 a라는 행동을 할때의 값

② Q(s',a')는 한스텝후의상태(s+1)에서 a'라는 행동을 할때의 값 

③ max(Q(s',a'))는 한스텝후의 상태(s+1)에서 얻을 수 있는 가장 큰 Q값으로, 가장 의미있는 action을 할때의 값

 

즉, 한글로 풀어쓰면 이렇게 됩니다.

 

현재 상태의 Q = 보상 + 학습률 * 다음 상태에서의 최대 Q값

 

여기서 변수는 현재상태의 Q라는것이 중요합니다.

다음상태에서의 Q값은 알고있다는 전제가 필요하다는 것이죠

 

즉, 이런 미로찾기가 있다면 사람이 생각하듯 출발지부터 어디로 갈지 선택해나가는것이 아니라, 최종 목표지점부터 거꾸로 계산해오며 최적의 길을 찾아낸다는 것이죠

 

출처 : https://pythonmachinelearning.pro/an-overview-of-reinforcement-learning-teaching-machines-to-play-games/

 

여기서 초록색 지점이 바로 Q(s',a')의 시작점입니다!

초록색이 종착점이고 빨간색은 가면 안되는 곳, 회색은 지나갈 수 없는곳이라고 해보시죠

 

STEP1 : Q-learning 초기값은 모두 0

STEP2 : 목표지점(1)과 실패지점(-1)의 보상값 지정

STEP3 : 목표지점을 Q(s',a')으로 두고 Q(s,a) 연산

STEP4 : 연산한 1행 3열의 Q(s,a)를 Q(s'a')로 두고, 인접한 칸들의 Q(s,a)를 연산 → 시작점에 도달할때까지 반복

이렇게 반복하게되면, 위의 그림과 같이 최종적으로 Q-Value 들을 모두 얻어낼 수 있습니다.

얻어낸 Q-value가 가장 큰 방향으로 진행하게 되면 결국 최적화된 루트를 찾아낼 수 있다는 원리 입니다.

 

현재 상태의 Q = 보상 + 학습률 * 다음 상태에서의 최대 Q값

 

이제 위에서 정리했던 식을 다시한번 보시면 더 와닿으실것입니다.

목표를 향한 Reward(1, -1)이 정해져있을 때, 이것을 기반으로 Q값들을 계산하는 것입니다!

 

즉, 최종 목적지의 보상값밖에 알지 못하기에, 목적지부터 시작점까지 거꾸로 한칸씩 Q값들을 계산하며 내려오는 원리입니다.

 

학습률을 작게주면, 상대적으로 '보상'에 Bias가 강하게 걸려 Q값이 빨리 최적화가 될것입니다.

하지만, Q값이 너무 작아진다면 보상에만 의존할 가능성이 높아 적정한 값을 찾아주는게 중요합니다.

Q-learning에서의 하이퍼 파라미터 입니다.

 

 

여기서는 미로찾기로 설명했지만,

이것을 사이즈만 키워서 바둑판으로 만들면 어떨까요?

 

출처 : unist news

 

 요약

 

Q-Learning은 보상값을 알고있을때, 목표까지 도달하는 Q를 계산하여 최적의 루트를 판단

Q라는 '지도'를 만드는 과정!

 

 

 

*참고자료

홍콩과기대 김성훈 교수님 강의 https://www.youtube.com/watch?v=Vd-gmo-qO5E 

https://pythonmachinelearning.pro/an-overview-of-reinforcement-learning-teaching-machines-to-play-games/

 

 

 

댓글