강화학습(Reinforcement Learning) 완전 정복: Q-러닝으로 최적의 행동 전략 배우기 🚀
지난 시간에는 시퀀스 데이터 속 숨겨진 상태와 그 변화를 모델링하는 Hidden Markov Model(HMM)에 대해 깊이 있게 탐구해 보았다. HMM이 상태(state)와 관측(observation), 그리고 이들 간의 전이(transition)를 다루며 시계열 데이터의 이해를 도왔다면, 오늘 우리가 배울 강화학습(Reinforcement Learning, RL)은 한 걸음 더 나아가, 에이전트(agent)가 특정 환경(environment) 내에서 어떻게 행동(action)해야 보상(reward)을 최대로 얻을 수 있는지, 즉 최적의 정책(policy)을 학습하는 패러다임이다. 강화학습은 로봇 제어, 자원 관리, 금융 투자, 맞춤형 콘텐츠 추천 등 우리 생활과 산업 곳곳에서 혁신을 이끌고 있는 핵심 기술이다.
강화학습이란 무엇인가?: 보상을 향한 여정 🗺️
강화학습의 핵심 아이디어는 마치 우리가 어릴 적 시행착오를 통해 세상을 배우는 과정과 유사하다. 주인공인 에이전트는 주어진 환경 속에서 특정 행동을 취한다. 그 행동의 결과로 환경은 에이전트에게 새로운 상태와 함께 보상(긍정적이거나 부정적일 수 있다)을 제공한다. 에이전트의 유일한 목표는 이러한 상호작용을 수없이 반복하면서, 장기적으로 받게 될 총 보상(누적 보상)을 최대화하는 최적의 정책을 스스로 학습하는 것이다. 여기서 정책이란, 각 상태에서 어떤 행동을 선택하는 것이 가장 좋은지를 알려주는 일종의 전략 지도와 같다.
Overview of Reinforcement Learning |
이 과정은 다음과 같은 순환 루프로 요약할 수 있다:
- 에이전트는 현재 상태 s를 관찰한다.
- 정책에 따라 행동 a를 선택하고 수행한다.
- 환경은 새로운 상태 s′로 변하고, 에이전트에게 즉각적인 보상 r을 준다.
- 에이전트는 이 경험(s,a,r,s′)을 바탕으로 정책을 업데이트한다.
- 1~4 과정을 반복하며 누적 보상을 최대화하는 정책을 학습한다.
Q-러닝: 행동의 '가치'를 학습하여 최적 정책 찾기 💡
강화학습 문제를 푸는 다양한 알고리즘 중, Q-러닝(Q-learning)은 특히 강력하고 널리 사용되는 핵심 알고리즘이다. Q-러닝은 모델 프리(Model-Free) 학습 방식에 속하는데, 이는 환경이 어떻게 작동하는지에 대한 명시적인 모델(예: 상태 전이 확률 P(s′∣s,a)이나 보상 함수 R(s,a))을 알지 못하더라도, 에이전트가 직접 환경과 상호작용하며 얻는 경험만으로 최적의 정책을 학습할 수 있다는 의미이다.
Q-러닝의 심장에는 Q-함수(Q-function) 또는 상태-행동 가치 함수(state-action value function)라고 불리는 Q(s,a)가 있다.
Q(s,a)는 현재 상태 s에서 특정 행동 a를 했을 때, 그 이후부터 받을 것으로 기대되는 미래의 총 누적 보상의 기댓값을 의미한다. 여기서 중요한 점은 단순히 즉각적인 보상만을 의미하는 것이 아니라, 해당 행동 이후에 이어질 모든 미래 경로에서 얻게 될 보상들의 합을 나타낸다는 것이다. 즉, 그 행동이 장기적으로 얼마나 '좋은지(quality)'를 나타내는 값이다.
Frozen Lake World (OpenAI GYM) |
예를 들어, "얼음 호수(Frozen Lake)" 게임 환경에서 특정 상태 s1에 있을 때, 가능한 행동들의 Q 값이 다음과 같다고 하자:
이 경우, 현재까지 학습된 바에 따르면 상태 s1에서는 오른쪽(RIGHT)으로 이동하는 것이 가장 높은 장기적 가치를 지닌다고 판단할 수 있다. Q-러닝은 이렇게 각 상태-행동 쌍에 대한 Q 값을 학습하고, 일반적으로 각 상태에서 Q(s,a) 값이 가장 높은 행동 a를 선택하는 정책 \(\pi^*(s)=argmax_aQ(s,a)\) 이 최적 정책이 된다.
Q-테이블: Q 값의 저장과 업데이트 메커니즘 ⚙️
가장 기본적인 Q-러닝 구현은 Q-테이블(Q-table)을 사용하는 것이다. 이는 모든 가능한 상태(state)와 행동(action) 쌍에 대한 Q 값을 저장하는 일종의 표이다. 예를 들어, Frozen Lake 환경이 4x4 격자로 총 16개의 상태를 가지고 각 상태에서 상, 하, 좌, 우 4가지 행동이 가능하다면, Q-테이블은 16행 4열의 크기를 가지게 된다.
1. 초기화: 학습 시작 시점에는 모든 Q 값을 0으로 (또는 작은 임의의 값으로) 초기화한다. 아직 아무것도 모르는 백지상태에서 시작하는 것이다.
Learning Q(s, a): Table |
2. 학습 과정 (Q 값 업데이트): 에이전트는 환경과 상호작용하며 경험(s,a,r,s′)을 쌓고, 이 경험을 바탕으로 Q-테이블의 값을 점진적으로 업데이트한다.
특정 상태 s에서 행동 a를 수행하여 즉각적인 보상 r을 받고 새로운 상태 s′에 도달했다고 가정해보자. 이때 Q(s,a)는 다음과 같은 아이디어로 업데이트된다:
Q(s,a)←새로운 정보 (현재 보상 + 미래 상태에서 얻을 수 있는 최대 가치)
Learning Q(s, a) |
예시를 통해 살펴보자 (결정론적 환경 가정):
- Frozen Lake의 목표 지점(G)에 도달하기 직전의 상태를 s14라고 하자. s14에서 오른쪽(aright)으로 이동하여 목표에 도달하고 보상 +1을 받았다면, Q(s14,aright)는 현재 받은 보상 과 목표 지점 이후의 미래 가치(여기서는 종료 상태이므로 0)를 더해 약 1로 업데이트될 수 있다. ()
- 만약 그 이전 상태 s13에서 오른쪽(aright)으로 이동하여 s14에 도달했고, 이때 즉각적인 보상은 0이었다고 하자. Q(s13,aright)는 즉각 보상 과, 다음 상태 s14에서 취할 수 있는 모든 행동들 중 가장 큰 Q 값 (즉, maxQ(s14,a′))을 더하여 업데이트된다. 만약 s14에서 가능한 행동들의 Q 값이 이라면, 이 된다. 따라서 로 업데이트될 수 있다.
이러한 업데이트 과정을 수많은 시행착오(many trials)를 통해 반복하면 Q-테이블의 값들은 점차 실제 최적의 Q 값에 수렴하게 된다. 충분한 학습 후에는 이 Q-테이블을 보고 각 상태에서 어떤 행동을 해야 가장 큰 누적 보상을 얻을 수 있는지, 즉 최적 정책을 알 수 있게 된다.
Success! |
탐험(Exploration)과 이용(Exploitation) 사이의 균형 잡기 🧭
Q-러닝 학습 과정에서 에이전트는 중요한 딜레마에 직면한다. 바로 탐험(Exploration)과 이용(Exploitation) 사이의 균형이다.
- 이용(Exploitation): 현재까지 학습된 Q 값을 바탕으로 가장 좋아 보이는 행동 (Q 값이 가장 높은 행동)을 선택하는 것이다. 이는 단기적으로 보상을 극대화하려는 전략이다.
- 탐험(Exploration): 현재 Q 값이 가장 높지 않더라도, 다른 가능한 행동들을 시도해보는 것이다. 이는 아직 발견하지 못한 더 좋은 경로를 찾거나, 현재 Q 값의 정확도를 높이는 데 도움이 된다.
마치 평소에 가장 빠르다고 알려진 익숙한 길로만 다니는 것(이용)과, 주말에 혹시 더 좋은 길이 있을까 싶어 새로운 길을 탐색해보는 것(탐험)에 비유할 수 있다. 학습 초기에는 다양한 경험을 통해 환경에 대한 이해를 넓히는 탐험이 중요하며, 학습이 진행될수록 학습된 지식을 활용하는 이용의 비중을 높이는 것이 효과적이다.
이 균형을 맞추기 위한 대표적인 전략이 입실론-그리디(Epsilon-greedy, ε-greedy) 방법이다.
- 작은 확률 값 입실론(ϵ, 예: 0.1)을 설정한다.
- ϵ의 확률로, 현재 상태에서 가능한 행동 중 하나를 무작위로 선택한다 (탐험).
- 의 확률로, 현재 Q 값이 가장 높은 행동 \(argmax_aQ(s,a)\)을 선택한다 (이용).
학습이 진행됨에 따라 ϵ 값을 점차 줄여나가는 감쇠 입실론-그리디(decaying Epsilon-greedy) 방법을 사용하면, 초기에는 탐험을 적극적으로 하다가 점차 이용의 비중을 늘려나갈 수 있다. (예: )
또 다른 전략은 Q 값에 무작위 노이즈를 더하여 행동을 선택하는 것이다: \(a=argmax_a(Q(s,a)+random\:noise)\). 이 역시 시간에 따라 노이즈 크기를 줄여나갈 수 있다.
미래 가치의 현재화: 할인된 미래 보상 (Discounted Future Reward) 🕰️
강화학습에서 에이전트는 장기적인 누적 보상을 최대화하려 한다. 하지만 일반적으로 시간적으로 더 가까운 미래의 보상이 먼 미래의 보상보다 더 가치 있거나 확실하다고 간주된다. 이를 반영하기 위해 할인율(discount factor, , 감마) 개념이 도입된다.
Learning Q(s, a) with discounted future reward |
γ는 0과 1 사이의 값을 가지며 (예: ), 미래의 보상을 현재 시점에서 얼마나 할인하여 평가할지를 결정한다. 이면 에이전트는 오직 즉각적인 보상만 고려하고, γ가 1에 가까울수록 먼 미래의 보상까지 중요하게 생각한다. Q-러닝은 이 할인율을 사용하여 미래 보상의 현재 가치를 계산하고 Q 값을 업데이트한다.
Discounted Future Reward |
불확실한 세상에서의 학습: 확률적 환경과 학습률 (Learning Rate) 🎲
지금까지 설명한 Q-러닝의 기본 아이디어는 특정 상태에서 특정 행동을 했을 때 항상 동일한 다음 상태와 보상을 얻는 결정론적(Deterministic) 환경에서 잘 작동하며 수렴성이 증명되어 있다(Tom Mitchell, Machine Learning).
하지만 실제 대부분의 환경은 확률론적(Stochastic)이거나 비결정론적(non-deterministic)이다. 즉, 동일한 상태에서 동일한 행동을 하더라도 내부적인 무작위성 때문에 다른 다음 상태로 가거나 다른 보상을 받을 수 있다. 예를 들어, Frozen Lake에서 바람이 불어 의도와 다른 방향으로 미끄러질 수 있다면 이는 확률론적 환경이다.
Deterministic VS Stochastic |
결정론적 환경을 가정한 단순한 Q-업데이트 방식(\(\hat{Q}(s,a)\leftarrow r+\gamma max_{a'}\hat{Q}(s',a')\))은 이런 확률론적 환경에서는 직접적으로 잘 작동하지 않을 수 있다. 행동의 결과가 불확실하기 때문에, 한 번의 경험으로 얻은 값만으로 \(\hat{Q}(s,a)\)를 완전히 대체해버리면 학습이 불안정해질 수 있다.
Problem of basic Q-updating method |
이러한 확률론적 환경에 대처하기 위해 학습률(Learning Rate, α, 알파)이 도입된다.
학습률 α는 0과 1 사이의 값을 가지며, 새로운 경험으로부터 얻은 정보를 기존의 Q 값에 얼마나 반영할지를 조절하는 역할을 한다. 즉, 새로운 정보로 Q 값을 업데이트할 때, 그 정보를 100% 반영하는 것이 아니라 α만큼만 반영하고, 나머지 (1−α)만큼은 기존의 Q 값을 유지하는 것이다. 이는 마치 "한 명의 멘토(새로운 경험) 말만 전적으로 따르는 대신, 여러 멘토(과거 경험과 새로운 경험)의 조언을 조금씩 참고하여(Listen to Q(s') just a little bit) 자신의 지식(Q(s))을 점진적으로 업데이트(Update Q(s) little bit)하는" 것과 같다.
학습률과 할인율을 모두 포함한 Q-러닝의 업데이트 규칙은 다음과 같다:
Learning with learning rate |
여기서 부분을 시간차 오차(Temporal Difference error, TD error)라고 부른다. 이는 새롭게 추정된 목표 Q 값 (\[r+\gamma\cdot max_a'Q(s',a')\])과 현재 Q 값(\(Q(s,a)\)) 사이의 차이를 의미하며, 학습률 α는 이 오차를 현재 Q 값에 얼마나 반영할지를 결정한다. 이 방식을 통해 Q-러닝은 확률론적 환경에서도 안정적으로 학습하고 최적 Q 값으로 수렴할 수 있게 된다.
맺음말: Q-러닝, 스스로 학습하는 지혜의 시작 🌟
Q-러닝은 상태-행동 가치 함수인 Q-함수를 학습하여 최적의 정책을 찾아내는 강력한 강화학습 기법이다. 에이전트는 환경과의 끊임없는 상호작용을 통해 보상을 받고, Q-테이블이라는 기억 장소에 각 행동의 가치를 저장하고 업데이트한다. 이 과정에서 탐험과 이용의 균형을 맞추는 지혜, 미래 보상을 현명하게 평가하는 할인율, 그리고 불확실성 속에서 점진적으로 배워나가는 학습률은 Q-러닝을 더욱 정교하고 효과적으로 만드는 핵심 요소들이다.
HMM이 시퀀스 데이터의 '이해'에 중점을 두었다면, Q-러닝을 포함한 강화학습은 그 이해를 바탕으로 '최적의 행동'을 학습하는 능동적인 학습 방법론이라고 할 수 있다. 오늘 배운 Q-러닝의 작동 원리에 대한 깊이 있는 이해는 앞으로 마주할 더 복잡하고 다양한 강화학습 문제들을 해결하는 데 든든한 초석이 될 것이다. 스스로 학습하고 발전하는 인공지능을 향한 여정에 Q-러닝은 중요한 이정표임이 틀림없다. 이것으로 기계학습개론 강의도 모두 마무리되었다!
추천글:
[기계학습개론] Active Learning: 제한된 리소스에서 최대의 성능을 이끌어내는 법
[기계학습개론] Sequential Learning - Hidden Markov Model(Viterbi, Forward-Backward, Baum-Welch algorithm)