강화학습의 기초: Q-Learning 이해하기
환경과 상호작용하면서 스스로 똑똑해지는 알고리즘
그 시작점이 바로 Q-learning이다.
1. 강화학습은 무엇인가?
머신러닝은 보통 다음과 같이 구분된다.
| 유형 | 특징 |
|---|---|
| 지도학습 | 정답(label)이 있음 |
| 비지도학습 | 정답이 없음 |
| 강화학습(RL) | 행동의 결과(보상)로 학습 |
강화학습의 기본 구조는 다음과 같다.
- 에이전트(agent): 행동을 선택하는 주체
- 환경(environment): 에이전트가 상호작용하는 세계
- 보상(reward): 행동의 결과에 대한 점수
즉, 에이전트는
어떤 행동을 했을 때, 결과가 좋으면 그 행동을 더 선호하게 된다
라는 방식으로 학습한다.
2. Q-Learning에서 Q란 무엇인가?
Q-learning의 핵심은 다음 함수이다.
$Q(s, a)$
이는 다음을 의미한다.
“상태 $s$ 에서 행동 $a$ 를 했을 때의 가치(기대 보상)”
즉,
- $s$ (state) : 현재 상태
- $a$ (action) : 선택한 행동
- $Q(s, a)$ : 그 행동의 가치
행동 선택은 보통 다음 기준을 따른다.
\[a^* = \arg\max_a Q(s, a)\]즉,
현재 상태에서 Q값이 가장 큰 행동을 선택한다.
예시:
| 상태 | Left | Right |
|---|---|---|
| A | -1 | 5 |
| B | 3 | 0 |
→ A에서는 오른쪽 → B에서는 왼쪽
3. Q-learning의 핵심 아이디어 (업데이트 식)
Q-learning의 수식은 다음과 같다.
\[Q(s, a) \leftarrow Q(s, a) + \alpha \Big( r + \gamma \max_{a'} Q(s', a') - Q(s, a) \Big)\]각 기호는 다음을 의미한다.
| 기호 | 의미 |
|---|---|
| \(\alpha\) | 학습률 (learning rate) |
| \(\gamma\) | 할인율 (discount factor) |
| \(r\) | 현재 받은 보상 |
| \(s'\) | 다음 상태 |
| \(\max_{a'}Q(s',a')\) | 다음 상태에서 가능한 최대 가치 |
이 식의 의미는 다음과 같다.
지금 얻은 보상과 다음 상태에서 얻을 수 있는 최대 미래 가치 이 둘을 반영해서 Q값을 조금씩 수정한다
즉,
\[\text{새로운 Q} = \text{기존 Q} + (조금씩 수정)\]이라는 개념이다.
4. 탐험 vs 이용 (Exploration vs Exploitation)
항상 최고의 행동만 고르면 새로운 가능성을 놓칠 수 있다. 그래서 $\varepsilon$-greedy 전략을 사용한다.
- $\varepsilon$ 확률 → 랜덤 행동 (탐험)
- $1 - \varepsilon$ 확률 → 최적 행동 (이용)
표현하면 다음과 같다.
\[a = \begin{cases} \text{random action} & \text{if } rand < \varepsilon \\ \arg\max_a Q(s,a) & \text{otherwise} \end{cases}\]초반 → 탐험 위주 후반 → 이용 위주
5. GridWorld 예시
다음과 같은 환경을 생각해보자.
S - - -
- - - -
- - - G
- S : 시작 상태
- G : 목표 상태 (보상 \(+10\))
- 일반 칸 : 보상 \(-1\)
에이전트는 상/하/좌/우로 움직인다.
처음에는 랜덤하지만, 반복 학습 후에는 다음을 학습하게 된다.
\[S \rightarrow \cdots \rightarrow G\]→ 보상을 최대화하는 경로를 스스로 찾아낸다.
6. Python 코드의 핵심 구조
가장 중요한 부분은 아래 수식과 동일하다.
new_value = old_value + alpha * (reward + gamma * next_max - old_value)
이것을 수식으로 표현하면 다음과 같다.
\[Q_{new} = Q_{old} + \alpha (r + \gamma Q_{max}^{next} - Q_{old})\]이 한 줄이 바로 Q-learning의 본질이다.
7. Q-Learning의 장점과 한계
✅ 장점
- 구조가 단순하다
- 모델 없이 학습 가능 (Model-Free)
- 구현 난이도가 낮다
❌ 한계
- 상태 공간이 커지면 Q-table 크기가 기하급수적으로 증가한다
- 연속적인 상태 공간에서는 사용하기 어렵다
그래서 등장한 것이:
\[\text{DQN} = Q\text{-learning} + \text{Neural Network}\]→ Q값을 표 대신 신경망으로 근사한다.
```
댓글남기기