[시즌RL].Lecture 4 - Q-Learning exploit&exploration and discounted reward

* 이 글은 홍콩과기대 김성훈 교수님의 무료 동영상 강좌 "모두를 위한 머신러닝과 딥러닝 강의"를 보고 요점을 정리한 글 입니다.

 

Q-Learning Algorithm

Reinforcement Learning(강화 학습)에서 Agent가 Action을 결정하는 것을 도와주는 함수를 Q-Function이라고 하고 Q-Function의 출력값을 사용해서 Action을 결정하는 것을 Q-Learning이라고 합니다. Q-Learning의 알고리즘을 수식으로 표현하면 Equation (1)과 같습니다.

 

$$ Q(s, a) = r + \max Q(s', a') $$ (1)

 

하지만 위의 수식을 그대로 사용해서 학습을 하게될 경우, 한번 목표에 도달하게된 경로로만 움직이고 새로운 길을 학습하지 않는다는 문제점이 발생하게 됩니다. 이러한 문제점을 해결하기 위해서는 몇 가지 방법을 사용할 수 있습니다. 그중 대표적인 방법들로는 E-Greedy 방법과 Random Noise를 더해주는 방법이 있습니다.

 

E-Greedy

E-Greedy 방법이란 e값을 설정해준 뒤 random하게 나온 수가 e보다 작으면 새로운 길으로 움직이고 e보다 크면 Max Q가 나온 길로 움직이게 해주는 방법입니다. 이 방법을 통해서 항상 같은 길로 움직이는 게 아닌 새로운 길을 학습할 수 있게 됩니다.

 

하지만 여러번의 학습 후 제일 좋다고 생각하는 길을 알아내었을 때도 일정 확률로 새로운 길을 학습하게 된다면 굉장히 비 효율적으로 변하게 됩니다. 이러한 방법을 해결하기 위해서는 위에서 설명한 E-Greedy 방법에 추가적으로 학습한 수가 많으면 많을수록 e값을 작게 만들어 뒤로 갈수록 새로운 길로 움직이는 확률을 줄이는 방법을 사용하고 이러한 방법을 Decaying E-Greedy라고 합니다.

 

Add Random Noise

Random Noise를 더해주는 방법은 말 그대로 Q값에 random한 값을 더해주는 방법을 의미합니다. 이 방법을 사용하게 되면 E-Greedy 방법 처럼 새로운 길을 학습할 수 있게 됩니다. 하지만 E-Greedy와 다른 점은 이 방법을 사용하게 되면 완전한 random한 길로 새롭게 움직이는 것이 아니라 Q값이 2번째 혹은 3번째로 큰 길로 움직일 확률이 높다는 점 입니다. 

 

Random Noise를 더해주는 방법 또한 E-Greedy 방법과 같이 학습한 수가 많으면 많을수록 Q값에 더해주는 random한 값을 작게 만들어주어서 뒤로 갈수록 새로운 길로 움직이는 확률을 줄여주는 방법을 사용합니다.

 

Q-Learning Algorithm with Discount Reward

위에서 설명한 E-Greedy방법 혹은 Random Noise를 더해주는 방법을 통해서 새로운 길을 학습할 수 있게 되었습니다. 하지만 이대로 사용한다면 시작점부터 목표로 움직일수 있는 모든 길의 Q값이 1이 되는 문제점이 발생하게 됩니다. 이 문제점을 해결하기 위해서는 Discount Reward라는 방법을 사용해 주어야 합니다.

 

Environment는 확률적입니다. 따라서 현재의 Reward보다 미래의 Reward를 낮게 볼 수 있습니다. 이러한 개념을 적용시킨다면 기존의 전체 Reward를 Equation (2)이 아니라 Equation (3)로 표현이 가능할 것입니다.

 

$$ r_1 + r_2 + r_3 + \cdots + r_n $$ (2)
$$ r_1 + \gamma r_2 + \gamma^2 r_3 + \cdots + \gamma^{n-1} r_n $$ (3)

 

이 공식을 임의의 지점 t에서 부터의 Reward에 적용시켜 본다면 Equation (4)로 표현이 가능하고 이 공식을 바꾸어보면 Equation (5)로 표현이 가능합니다.

 

$$ R(t) = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \cdots + \gamma^{n-t} r_n $$ (4)
$$ R(t) = r_t + \gamma R(t+1) $$ (5)

 

Reward의 최대값을 구하기 위해서는 Q-Function의 최대값을 반환하는 Action을 입력해야 하므로 결국 Equation (5)은 Equation (6)하는 것을 알 수 있습니다.

 

$$ Q(s, a) = r + \gamma \max_{a'} Q(s', a') $$ (6)