Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

동산로의 블로그

Q -learning 본문

카테고리 없음

Q -learning

동산로 2025. 4. 29. 16:28

Q-learning

Q -learning은 강화학습의 일종입니다. 행동에 대해서 보상을 받을 때에, 보상을 가장 높게 만드는 방법을 찾는 알고리즘입니다.

 

상황 설명

주어진 상태에서 에이전트는 행동을 할 수 있습니다. 행동에 따라서 상태가 변화되며, 각 행동에 따라서 보상\(\mathcal{R}\)을 얻을수 있습니다.  가장 직관적인 예시는 게임을 할 때에 컨트롤은 행동이고, 게임 상태는 상태, 점수가 보상인 것입니다.

 

알고리즘의 목표는 가장 높은 \(Q\)값을 주는 행동을 했을 때에 보상을 최대로 받도록 \(Q\)를 찾는 것 입니다.

이론상 완벽한 \(Q\)가 있다면 모든 상황에서 가장 높은 \(Q\)를 만들어 주는 행동만 취하면 됩니다.

\(Q\)는 주어진 상태 \(S\)에서 행동\(A\)를 했을 때에 그 행동의 결과를 숫자로 표시해주는 함수입니다. 

$$ Q : \mathcal{S} \times \mathcal{A} \rightarrow \mathbb{R} $$

여기서 \( \mathcal{S}\)는 상태의 집합, \(\mathcal{A}\)은 행동의 집합, \(\mathbb{R}\)은 실수입니다.

 

상황과 행동이 유한집합의 원소라면 (Q)는 2차원 표로 나타낼 수 있습니다. 이를 Q-table이라고 부릅니다.

 

 

 

그렇다면 \(Q\)를 어떻게 찾아야 하는가?

Q의 업데이트 과정

$$Q^{new} ( S_t, A_t) \leftarrow ( 1- \alpha ) \cdot Q(S_t,A_t) + \alpha \cdot \left( R_{t+1} + \gamma \cdot \max_a Q (S_{t+1}, a \right)$$

시간 : \(t\)

\(t\)에서의 상태 : \(S_t\), 행동\(A_t\)

학습 계수(Learning rate) : \( \alpha \)

할인률(discount factor) : \( \gamma \)

 

\(Q\)의 테이블이 미리 주어져 있다고 합시다. 주어진 상황 \(S_t\)와 행동 \(A_t\)에 대해서 위 수식을 적용하여

새로운 Q-table의 \( (S_t, A_t ) \)위치에 계산한 새로운 값을 넣어 줍니다.

 

이걸 계속 반복하면 \(Q\) - table이 높은 보상을 찾는 테이블이 됩니다.


하지만 모든 가능한 \(S\)에 대해서  Q-table을 작성하는 것은 불가능합니다. 

 

 

실질적으로는 유한한 수의 수행만 가능합니다.

\(t=0\)에서 시작 후 끝날 때까지 행동을 하는 것을 에피소드(episode)라고 부릅니다.  

 

한 에피소드 내에서 어떻게 진행하여 \(Q\) 값을 갱신할 것인가에 대해서 문제가 남아있습니다.

 

이 문제는 일반적으로 확률론적으로 해결합니다. \(Q\)값을 최대로 하는 경로만 고정해서 택하는 것이 아니라 확률에 따라서 행동을 결정하는 방법론이 있습니다.