๊ฐํ ํ์ต์ ํต์ฌ ์๊ณ ๋ฆฌ์ฆ์ธ Q-๋ฌ๋์ ๋ํ ์๋ฒฝ ๊ฐ์ด๋. ์ด๋ก , ๊ตฌํ, ์ฝ๋ ์์ ๋ฅผ ํตํ ์ค์ ์ ์ฉ๊น์ง ๋ชจ๋ ๋ค๋ฃน๋๋ค.
๊ฐํ ํ์ต: ์ค์ฉ์ ์ธ Q-๋ฌ๋ ๊ตฌํ ๊ฐ์ด๋
๊ฐํ ํ์ต(RL)์ ์์ด์ ํธ๊ฐ ํ๊ฒฝ ๋ด์์ ๋ณด์์ ๊ทน๋ํํ๊ธฐ ์ํด ์์ฌ ๊ฒฐ์ ์ ํ์ตํ๋ ์ธ๊ณต ์ง๋ฅ์ ๊ฐ๋ ฅํ ํจ๋ฌ๋ค์์ ๋๋ค. ์ง๋ ํ์ต๊ณผ ๋ฌ๋ฆฌ, ๊ฐํ ํ์ต์ ๋ ์ด๋ธ์ด ์ง์ ๋ ๋ฐ์ดํฐ๊ฐ ํ์ ์์ผ๋ฉฐ, ๋์ ์์ด์ ํธ๊ฐ ์ํ์ฐฉ์ค๋ฅผ ํตํด ํ์ตํฉ๋๋ค. Q-๋ฌ๋์ ๊ฐํ ํ์ต ๋ถ์ผ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
Q-๋ฌ๋์ด๋ ๋ฌด์์ธ๊ฐ?
Q-๋ฌ๋์ ๋ชจ๋ธ-ํ๋ฆฌ(model-free), ์คํ-ํด๋ฆฌ์(off-policy) ๊ฐํ ํ์ต ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๊ฐ ์ฉ์ด์ ์๋ฏธ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
- ๋ชจ๋ธ-ํ๋ฆฌ(Model-Free): ํ๊ฒฝ์ ๋ํ ๋ชจ๋ธ์ด ํ์ํ์ง ์์ต๋๋ค. ์์ด์ ํธ๋ ์ฌ์ ์ ์ํ ์ ์ด ํ๋ฅ ์ด๋ ๋ณด์ ํจ์๋ฅผ ์ ํ์๊ฐ ์์ต๋๋ค.
- ์คํ-ํด๋ฆฌ์(Off-Policy): ์์ด์ ํธ๊ฐ ์ทจํ๋ ํ๋๊ณผ ๋ฌด๊ดํ๊ฒ ์ต์ ์ Q-ํจ์๋ฅผ ํ์ตํฉ๋๋ค. ์ฆ, ์์ด์ ํธ๋ ์ต์ ์ ์ฑ ์ ํ์ตํ๋ ๋์ ๋ค๋ฅธ ์ ์ฑ (์: ๋ฌด์์ ์ ์ฑ )์ ์ฌ์ฉํ์ฌ ํ๊ฒฝ์ ํ์ํ ์ ์์ต๋๋ค.
Q-๋ฌ๋์ ํต์ฌ์ Q(s, a)๋ก ํ๊ธฐ๋๋ Q-ํจ์๋ฅผ ํ์ตํ๋ ๊ฒ์ ๋๋ค. ์ด ํจ์๋ ์ํ 's'์์ ํ๋ 'a'๋ฅผ ์ทจํ๊ณ ๊ทธ ์ดํ ์ต์ ์ ์ ์ฑ ์ ๋ฐ๋์ ๋ ๊ธฐ๋๋๋ ๋์ ๋ณด์์ ๋ํ๋ ๋๋ค. "Q"๋ "Quality(ํ์ง)"๋ฅผ ์๋ฏธํ๋ฉฐ, ํน์ ์ํ์์ ํน์ ํ๋์ ์ทจํ๋ ๊ฒ์ ํ์ง์ ๋ํ๋ ๋๋ค.
Q-๋ฌ๋ ๋ฐฉ์ ์
Q-๋ฌ๋์ ํต์ฌ์ Q-ํจ์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ๊ฐ์ ํ๋ ์ ๋ฐ์ดํธ ๊ท์น์ ์์ต๋๋ค:
Q(s, a) โ Q(s, a) + ฮฑ [r + ฮณ maxa' Q(s', a') - Q(s, a)]
์ฌ๊ธฐ์ ๊ฐ ๋ณ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Q(s, a)๋ ์ํ 's'์ ํ๋ 'a'์ ๋ํ ํ์ฌ Q-๊ฐ์ ๋๋ค.
- ฮฑ (์ํ)๋ ํ์ต๋ฅ (learning rate, 0 < ฮฑ โค 1)๋ก, ์๋ก์ด ์ ๋ณด๊ฐ ๊ธฐ์กด ์ ๋ณด๋ฅผ ์ผ๋ง๋ ๋ฎ์ด์ธ์ง ๊ฒฐ์ ํฉ๋๋ค. ๊ฐ์ด 0์ด๋ฉด ์์ด์ ํธ๊ฐ ์๋ฌด๊ฒ๋ ๋ฐฐ์ฐ์ง ์์์ ์๋ฏธํ๊ณ , 1์ด๋ฉด ๊ฐ์ฅ ์ต์ ์ ๋ณด๋ง ๊ณ ๋ คํจ์ ์๋ฏธํฉ๋๋ค.
- r์ ์ํ 's'์์ ํ๋ 'a'๋ฅผ ์ทจํ ํ ๋ฐ๋ ์ฆ๊ฐ์ ์ธ ๋ณด์์ ๋๋ค.
- ฮณ (๊ฐ๋ง)๋ ํ ์ธ์จ(discount factor, 0 โค ฮณ โค 1)๋ก, ๋ฏธ๋ ๋ณด์์ ์ค์์ฑ์ ๊ฒฐ์ ํฉ๋๋ค. ๊ฐ์ด 0์ด๋ฉด ์์ด์ ํธ๊ฐ ์ฆ๊ฐ์ ์ธ ๋ณด์๋ง ๊ณ ๋ คํจ์ ์๋ฏธํ๊ณ , 1์ด๋ฉด ๋ชจ๋ ๋ฏธ๋ ๋ณด์์ ๋๋ฑํ๊ฒ ๊ณ ๋ คํจ์ ์๋ฏธํฉ๋๋ค.
- s'๋ ์ํ 's'์์ ํ๋ 'a'๋ฅผ ์ทจํ ํ ๋๋ฌํ๋ ๋ค์ ์ํ์ ๋๋ค.
- maxa' Q(s', a')๋ ๋ค์ ์ํ 's''์์ ๊ฐ๋ฅํ ๋ชจ๋ ํ๋ 'a''์ ๋ํ ์ต๋ Q-๊ฐ์ ๋๋ค. ์ด๋ ํด๋น ์ํ์์ ์ป์ ์ ์๋ ์ต์์ ๋ฏธ๋ ๋ณด์์ ๋ํ ์์ด์ ํธ์ ์ถ์ ์น๋ฅผ ๋ํ๋ ๋๋ค.
Q-๋ฌ๋์ ์ค์ ๊ตฌํ
๊ฐ๋จํ ์์ ์ธ ๊ทธ๋ฆฌ๋ ์๋(grid world) ํ๊ฒฝ์ ์ฌ์ฉํ์ฌ Q-๋ฌ๋์ ํ์ด์ฌ ๊ตฌํ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ : ๊ทธ๋ฆฌ๋ ์๋
์์ด์ ํธ๊ฐ ์, ํ, ์ข, ์ฐ๋ก ์์ง์ผ ์ ์๋ ๊ทธ๋ฆฌ๋ ์๋๋ฅผ ์์ํด ๋ณด์ธ์. ์์ด์ ํธ์ ๋ชฉํ๋ ์ฅ์ ๋ฌผ์ด๋ ๋ถ์ ์ ์ธ ๋ณด์์ ํผํ๋ฉด์ ์ง์ ๋ ๋ชฉํ ์ํ์ ๋๋ฌํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ ํ์ ์ธ ๊ฐํ ํ์ต ๋ฌธ์ ์ ๋๋ค.
๋จผ์ , ํ๊ฒฝ์ ์ ์ํด ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๋๋ฅผ ๋์ ๋๋ฆฌ๋ก ํํํ ๊ฒ์ด๋ฉฐ, ์ฌ๊ธฐ์ ํค๋ ์ํ((ํ, ์ด) ํํ๋ก ํํ)์ด๊ณ ๊ฐ์ ๊ฐ๋ฅํ ํ๋๊ณผ ๊ทธ์ ์์ํ๋ ๋ณด์์ ๋๋ค.
```python import numpy as np import random # Define the environment environment = { (0, 0): {'right': 0, 'down': 0}, (0, 1): {'left': 0, 'right': 0, 'down': 0}, (0, 2): {'left': 0, 'down': 0, 'right': 10}, # Goal state (1, 0): {'up': 0, 'down': 0, 'right': 0}, (1, 1): {'up': 0, 'down': 0, 'left': 0, 'right': 0}, (1, 2): {'up': 0, 'left': 0, 'down': -5}, # Penalty state (2, 0): {'up': 0, 'right': 0}, (2, 1): {'up': 0, 'left': 0, 'right': 0}, (2, 2): {'up': -5, 'left': 0} } # Possible actions actions = ['up', 'down', 'left', 'right'] # Function to get possible actions in a given state def get_possible_actions(state): return list(environment[state].keys()) # Function to get reward for a given state and action def get_reward(state, action): if action in environment[state]: return environment[state][action] else: return -10 # Large negative reward for invalid actions # Function to determine next state given current state and action def get_next_state(state, action): row, col = state if action == 'up': next_state = (row - 1, col) elif action == 'down': next_state = (row + 1, col) elif action == 'left': next_state = (row, col - 1) elif action == 'right': next_state = (row, col + 1) else: return state # Handle invalid actions if next_state in environment: return next_state else: return state # Stay in same state for out-of-bounds movement # Initialize Q-table q_table = {} for state in environment: q_table[state] = {action: 0 for action in actions} # Q-Learning parameters alpha = 0.1 # Learning rate gamma = 0.9 # Discount factor epsilon = 0.1 # Exploration rate num_episodes = 1000 # Q-Learning algorithm for episode in range(num_episodes): # Start at a random state state = random.choice(list(environment.keys())) done = False while not done: # Epsilon-greedy action selection if random.uniform(0, 1) < epsilon: # Explore: choose a random action action = random.choice(get_possible_actions(state)) else: # Exploit: choose the action with the highest Q-value action = max(q_table[state], key=q_table[state].get) # Take action and observe reward and next state next_state = get_next_state(state, action) reward = get_reward(state, action) # Update Q-value best_next_q = max(q_table[next_state].values()) q_table[state][action] += alpha * (reward + gamma * best_next_q - q_table[state][action]) # Update state state = next_state # Check if the goal is reached if state == (0, 2): # Goal State done = True # Print the Q-table (optional) # for state, action_values in q_table.items(): # print(f"State: {state}, Q-values: {action_values}") # Test the learned policy start_state = (0, 0) current_state = start_state path = [start_state] print("Testing Learned Policy from (0,0):") while current_state != (0, 2): action = max(q_table[current_state], key=q_table[current_state].get) current_state = get_next_state(current_state, action) path.append(current_state) print("Path taken:", path) ```์ค๋ช :
- ํ๊ฒฝ ์ ์: `environment` ๋์ ๋๋ฆฌ๋ ๊ทธ๋ฆฌ๋ ์๋๋ฅผ ์ ์ํ๋ฉฐ, ๊ฐ ์ํ์ ๋ํด ๊ฐ๋ฅํ ํ๋๊ณผ ๋ณด์์ ๋ช ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, `environment[(0, 0)] = {'right': 0, 'down': 0}`๋ ์ํ (0, 0)์์ ์์ด์ ํธ๊ฐ ์ค๋ฅธ์ชฝ ๋๋ ์๋๋ก ์ด๋ํ ์ ์์ผ๋ฉฐ, ๋ ํ๋ ๋ชจ๋ 0์ ๋ณด์์ ์ป๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ํ๋: `actions` ๋ฆฌ์คํธ๋ ์์ด์ ํธ๊ฐ ์ทจํ ์ ์๋ ๊ฐ๋ฅํ ํ๋๋ค์ ์ ์ํฉ๋๋ค.
- Q-ํ ์ด๋ธ ์ด๊ธฐํ: `q_table` ๋์ ๋๋ฆฌ๋ ๊ฐ ์ํ-ํ๋ ์์ ๋ํ Q-๊ฐ์ ์ ์ฅํฉ๋๋ค. ๋ชจ๋ Q-๊ฐ์ 0์ผ๋ก ์ด๊ธฐํ๋ฉ๋๋ค.
- Q-๋ฌ๋ ํ๋ผ๋ฏธํฐ: `alpha`, `gamma`, `epsilon`์ ํ์ต ๊ณผ์ ์ ์ ์ดํฉ๋๋ค.
- Q-๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ: ๋ฉ์ธ ๋ฃจํ๋ ์ํผ์๋๋ฅผ ๋ฐ๋ณตํฉ๋๋ค. ๊ฐ ์ํผ์๋์์ ์์ด์ ํธ๋ ๋ฌด์์ ์ํ์์ ์์ํ์ฌ ๋ชฉํ ์ํ์ ๋๋ฌํ ๋๊น์ง ๊ณ์ํฉ๋๋ค.
- ์ ์ค๋ก -ํ์์ ํ๋ ์ ํ: ์ด ์ ๋ต์ ํํ(exploration)๊ณผ ํ์ฉ(exploitation) ์ฌ์ด์ ๊ท ํ์ ๋ง์ถฅ๋๋ค. ํ๋ฅ `epsilon`์ผ๋ก ์์ด์ ํธ๋ ๋ฌด์์ ํ๋์ ์ ํํ์ฌ ํํํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ ๊ฐ์ฅ ๋์ Q-๊ฐ์ ๊ฐ์ง ํ๋์ ์ ํํ์ฌ ํ์ฉํฉ๋๋ค.
- Q-๊ฐ ์ ๋ฐ์ดํธ: ์๊ณ ๋ฆฌ์ฆ์ ํต์ฌ์ผ๋ก, Q-๋ฌ๋ ๋ฐฉ์ ์์ ๋ฐ๋ผ Q-๊ฐ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์ ์ฑ ํ ์คํธ: ํ๋ จ ํ, ์ฝ๋๋ ์ง์ ๋ ์ํ์์ ์์ํ์ฌ ๋ชฉํ์ ๋๋ฌํ ๋๊น์ง ๊ฐ์ฅ ๋์ Q-๊ฐ์ ๊ฐ์ง ํ๋์ ๋ฐ๋ฆ์ผ๋ก์จ ํ์ต๋ ์ ์ฑ ์ ํ ์คํธํฉ๋๋ค.
๊ตฌํ ์ ์ฃผ์ ๊ณ ๋ ค์ฌํญ
- ํํ๊ณผ ํ์ฉ์ ๊ท ํ: `epsilon` ํ๋ผ๋ฏธํฐ๋ ํํ(์๋ก์ด ํ๋ ์๋)๊ณผ ํ์ฉ(ํ์ต๋ ์ง์ ์ฌ์ฉ) ์ฌ์ด์ ๊ท ํ์ ์กฐ์ ํฉ๋๋ค. `epsilon` ๊ฐ์ด ๋์์๋ก ๋ ๋ง์ ํํ์ ์ฅ๋ คํ์ฌ ์์ด์ ํธ๊ฐ ๋ ๋์ ์ ์ฑ ์ ๋ฐ๊ฒฌํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ง๋ง, ํ์ต ์๋๋ฅผ ๋ฆ์ถ ์๋ ์์ต๋๋ค.
- ํ์ต๋ฅ (ฮฑ): ํ์ต๋ฅ ์ ์๋ก์ด ์ ๋ณด๊ฐ ๊ธฐ์กด ์ ๋ณด๋ฅผ ์ผ๋ง๋ ๋์ฒดํ ์ง ๊ฒฐ์ ํฉ๋๋ค. ํ์ต๋ฅ ์ด ๋์ผ๋ฉด ํ์ต์ด ๋นจ๋ผ์ง ์ ์์ง๋ง, Q-๊ฐ์ด ์ง๋ํ๊ฑฐ๋ ๋ฐ์ฐํ ์๋ ์์ต๋๋ค.
- ํ ์ธ์จ(ฮณ): ํ ์ธ์จ์ ๋ฏธ๋ ๋ณด์์ ์ค์์ฑ์ ๊ฒฐ์ ํฉ๋๋ค. ํ ์ธ์จ์ด ๋์์๋ก ์์ด์ ํธ๋ ๋ ๋ฏธ๋ ์งํฅ์ ์ด ๋๋ฉฐ, ๋ ํฐ ๋ฏธ๋ ๋ณด์์ ์ํด ์ฆ๊ฐ์ ์ธ ๋ณด์์ ๊ธฐ๊บผ์ด ํฌ์ํฉ๋๋ค.
- ๋ณด์ ์ค๊ณ(Reward Shaping): ํจ๊ณผ์ ์ธ ํ์ต์ ์ํด์๋ ๋ณด์ ํจ์๋ฅผ ์ ์คํ๊ฒ ์ค๊ณํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ฐ๋์งํ ํ๋์ ๊ธ์ ์ ์ธ ๋ณด์์, ๋ฐ๋์งํ์ง ์์ ํ๋์ ๋ถ์ ์ ์ธ ๋ณด์์ ์ ๊ณตํจ์ผ๋ก์จ ์์ด์ ํธ๋ฅผ ์ต์ ์ ์ ์ฑ ์ผ๋ก ์ ๋ํ ์ ์์ต๋๋ค.
- ์ํ ํํ: ์ํ ๊ณต๊ฐ์ ํํํ๋ ๋ฐฉ์์ Q-๋ฌ๋์ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ํ๊ฒฝ์ ๋ํ ๊ด๋ จ ์ ๋ณด๋ฅผ ํฌ์ฐฉํ๋ ํํ ๋ฐฉ์์ ์ ํํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.
๊ณ ๊ธ Q-๋ฌ๋ ๊ธฐ๋ฒ
๊ธฐ๋ณธ์ ์ธ Q-๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ๋ ๊ฐ๋ ฅํ์ง๋ง, ๋ช ๊ฐ์ง ๊ณ ๊ธ ๊ธฐ๋ฒ์ ํตํด ์ฑ๋ฅ์ ๊ฐ์ ํ๊ณ ๋ ๋ณต์กํ ๋ฌธ์ ์ ์ ์ฉํ ์ ์์ต๋๋ค.
1. ์ฌ์ธต Q-๋คํธ์ํฌ(DQN)
์ํ ๊ณต๊ฐ์ด ํฌ๊ฑฐ๋ ์ฐ์์ ์ธ ํ๊ฒฝ์์๋ Q-ํ ์ด๋ธ๋ก ํํํ๋ ๊ฒ์ด ๋นํ์ค์ ์ ๋๋ค. ์ฌ์ธต Q-๋คํธ์ํฌ(DQN)๋ ์ฌ์ธต ์ ๊ฒฝ๋ง์ ์ฌ์ฉํ์ฌ Q-ํจ์๋ฅผ ๊ทผ์ฌํจ์ผ๋ก์จ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๋คํธ์ํฌ๋ ์ํ๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ๊ฐ ํ๋์ ๋ํ Q-๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.
์ฅ์ :
- ๊ณ ์ฐจ์ ์ํ ๊ณต๊ฐ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ณด์ง ๋ชปํ ์ํ์ ๋ํด์๋ ์ผ๋ฐํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋จ์ :
- ํ๋ จ์ ์๋นํ ๊ณ์ฐ ์์์ด ํ์ํฉ๋๋ค.
- ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋์ ๋ฏผ๊ฐํ ์ ์์ต๋๋ค.
DQN์ ์ํ๋ฆฌ ๊ฒ์ ํ๋ ์ด, ๋ก๋ณดํฑ์ค, ์์จ ์ฃผํ ๋ฑ ๋ค์ํ ์์ญ์ ์ฑ๊ณต์ ์ผ๋ก ์ ์ฉ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ตฌ๊ธ ๋ฅ๋ง์ธ๋์ DQN์ ์ฌ๋ฌ ์ํ๋ฆฌ ๊ฒ์์์ ์ธ๊ฐ ์ ๋ฌธ๊ฐ๋ฅผ ๋ฅ๊ฐํ๋ ์ฑ๋ฅ์ ๋ณด์ฌ์ค ๊ฒ์ผ๋ก ์ ๋ช ํฉ๋๋ค.
2. ๋๋ธ Q-๋ฌ๋
ํ์ค Q-๋ฌ๋์ Q-๊ฐ์ ๊ณผ๋ํ๊ฐํ์ฌ ์ฐจ์ ์ ์ ์ฑ ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ๋๋ธ Q-๋ฌ๋์ ๋ ๊ฐ์ ๋ ๋ฆฝ์ ์ธ Q-ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ ์ ํ๊ณผ ํ๊ฐ๋ฅผ ๋ถ๋ฆฌํจ์ผ๋ก์จ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ํ๋์ Q-ํจ์๋ ์ต์ ์ ํ๋์ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋๊ณ , ๋ค๋ฅธ ํ๋๋ ํด๋น ํ๋์ Q-๊ฐ์ ์ถ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ฅ์ :
- ๊ณผ๋ํ๊ฐ ํธํฅ์ ์ค์ ๋๋ค.
- ๋ ์์ ์ ์ด๊ณ ์ ๋ขฐํ ์ ์๋ ํ์ต์ผ๋ก ์ด์ด์ง๋๋ค.
๋จ์ :
- ๋ ๊ฐ์ Q-ํจ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
- ์ ๋ฐ์ดํธ ๊ท์น์ด ๋ ๋ณต์กํด์ง๋๋ค.
3. ์ฐ์ ์์ ๊ฒฝํ ๋ฆฌํ๋ ์ด
๊ฒฝํ ๋ฆฌํ๋ ์ด๋ ๊ณผ๊ฑฐ ๊ฒฝํ(์ํ, ํ๋, ๋ณด์, ๋ค์ ์ํ)์ ๋ฆฌํ๋ ์ด ๋ฒํผ์ ์ ์ฅํ๊ณ ํ๋ จ ์ค์ ๋ฌด์์๋ก ์ํ๋งํ์ฌ ์ํ ํจ์จ์ฑ์ ๋์ด๋ DQN์์ ์ฌ์ฉ๋๋ ๊ธฐ๋ฒ์ ๋๋ค. ์ฐ์ ์์ ๊ฒฝํ ๋ฆฌํ๋ ์ด๋ TD-์ค์ฐจ(์๊ฐ์ฐจ ์ค์ฐจ)๊ฐ ๋ ๋์ ๊ฒฝํ์ ๋ ์์ฃผ ์ํ๋งํ์ฌ ๊ฐ์ฅ ์ ์ตํ ๊ฒฝํ์ ํ์ต์ ์ง์คํจ์ผ๋ก์จ ์ด๋ฅผ ํฅ์์ํต๋๋ค.
์ฅ์ :
- ์ํ ํจ์จ์ฑ์ ํฅ์์ํต๋๋ค.
- ํ์ต์ ๊ฐ์ํํฉ๋๋ค.
๋จ์ :
- ์ฐ์ ์์๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
- ์ฃผ์ ๊น๊ฒ ๊ตฌํํ์ง ์์ผ๋ฉด ๊ณผ์ ํฉ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
4. ํํ ์ ๋ต
์ ์ค๋ก -ํ์ ์ ๋ต์ ๊ฐ๋จํ์ง๋ง ํจ๊ณผ์ ์ธ ํํ ์ ๋ต์ ๋๋ค. ํ์ง๋ง ๋ ์ ๊ตํ ํํ ์ ๋ต์ ์ฌ์ฉํ๋ฉด ํ์ต์ ๋์ฑ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ณผ์ธ ๋ง ํํ(์ํํธ๋งฅ์ค ํ๋ ์ ํ): Q-๊ฐ์์ ํ์๋ ํ๋ฅ ๋ถํฌ์ ๋ฐ๋ผ ํ๋์ ์ ํํฉ๋๋ค.
- ์์ ์ ๋ขฐ ๊ฒฝ๊ณ(UCB): ํ๋์ ์ถ์ ๊ฐ์น์ ํด๋น ์ถ์ ๊ณผ ๊ด๋ จ๋ ๋ถํ์ค์ฑ์ ๋ชจ๋ ๊ณ ๋ คํ์ฌ ํํ๊ณผ ํ์ฉ์ ๊ท ํ์ ๋ง์ถฅ๋๋ค.
- ํฐ์จ ์ํ๋ง: Q-๊ฐ์ ๋ํ ํ๋ฅ ๋ถํฌ๋ฅผ ์ ์งํ๊ณ ์ด ๋ถํฌ์ ๋ฐ๋ผ ํ๋์ ์ํ๋งํฉ๋๋ค.
Q-๋ฌ๋์ ์ค์ ์ ์ฉ ์ฌ๋ก
Q-๋ฌ๋์ ๋ค์์ ํฌํจํ ๊ด๋ฒ์ํ ๋ถ์ผ์์ ์์ฉ๋๊ณ ์์ต๋๋ค:
- ๊ฒ์ ํ๋ ์ด: ์ฒด์ค, ๋ฐ๋, ๋น๋์ค ๊ฒ์๊ณผ ๊ฐ์ ๊ฒ์์ ํ๋ ์ดํ๋๋ก AI ์์ด์ ํธ๋ฅผ ํ๋ จํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ํ์ ๋ก๋ ์ธ๊ฐ์ ์ง์ ์์ด ๊ฐํ ํ์ต์ ์ฌ์ฉํ์ฌ ์ฒด์ค, ๋ฐ๋, ์ผ๊ธฐ๋ฅผ ๋ง์คํฐํ์ฌ ์ธ๊ณ ์ฑํผ์ธ์ ๋ฅ๊ฐํ์ต๋๋ค.
- ๋ก๋ณดํฑ์ค: ๋ด๋น๊ฒ์ด์ , ์กฐ์, ์กฐ๋ฆฝ๊ณผ ๊ฐ์ ์์ ์ ์ํํ๋๋ก ๋ก๋ด์ ์ ์ดํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ก๋ด์ Q-๋ฌ๋์ ์ฌ์ฉํ์ฌ ์ ์กฐ ํ๊ฒฝ์์ ๋ฌผ์ฒด๋ฅผ ์ง์ด ์ฎ๊ธฐ๋ ๋ฐฉ๋ฒ์ ํ์ตํ ์ ์์ต๋๋ค.
- ์์ ๊ด๋ฆฌ: ์๋์ง ๊ด๋ฆฌ, ํต์ , ๊ตํต ์ ์ด์ ๊ฐ์ ๋ถ์ผ์์ ์์ ํ ๋น์ ์ต์ ํํฉ๋๋ค. Q-๋ฌ๋์ ์ค์๊ฐ ์์์ ๋ฐ๋ผ ์ค๋งํธ ๊ทธ๋ฆฌ๋์ ์๋์ง ์๋น๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
- ๊ธ์ต: ๊ฑฐ๋ ์ ๋ต ๋ฐ ํฌํธํด๋ฆฌ์ค ๊ด๋ฆฌ ๊ธฐ๋ฒ์ ๊ฐ๋ฐํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ ํธ๋ ์ด๋ฉ ์์คํ ์ Q-๋ฌ๋์ ํ์ฉํ์ฌ ์์ฅ ์ํฉ์ ๋ฐ๋ผ ์ต์ ์ ๊ฑฐ๋ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์์ต๋๋ค.
- ํฌ์ค์ผ์ด: ์น๋ฃ ๊ณํ ๋ฐ ์ฝ๋ฌผ ๋ณต์ฉ๋์ ์ต์ ํํฉ๋๋ค. Q-๋ฌ๋์ ํ์์ ๊ฐ์ธ์ ํน์ฑ๊ณผ ์น๋ฃ ๋ฐ์์ ๋ฐ๋ผ ๊ฐ์ธ ๋ง์ถคํ ์น๋ฃ ๊ณํ์ ์ธ์ฐ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ์ฌ๋ก
- ์์จ ์ฃผํ ์๋์ฐจ(๊ธ๋ก๋ฒ): ์จ์ด๋ชจ(๋ฏธ๊ตญ), ํ ์ฌ๋ผ(๋ฏธ๊ตญ), ๋ฐ์ด๋(์ค๊ตญ)๋ฅผ ํฌํจํ ์ ์ธ๊ณ ๊ธฐ์ ๋ค์ด Q-๋ฌ๋ ๋ณํ์ ํฌํจํ ๊ฐํ ํ์ต์ ์ฌ์ฉํ์ฌ ์์จ ์ฃผํ ์์คํ ์ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. ์ด ์์คํ ๋ค์ ๋ณต์กํ ๋๋ก ์ํฉ์ ํ์ํ๊ณ , ์ฅ์ ๋ฌผ์ ํผํ๋ฉฐ, ์์ ํ ์ด์ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๋ฒ์ ํ์ตํฉ๋๋ค.
- ์ค๋งํธ ๊ทธ๋ฆฌ๋(์ ๋ฝ ๋ฐ ๋ฏธ๊ตญ): ์ ๋ฝ๊ณผ ๋ฏธ๊ตญ์ ์๋์ง ํ์ฌ๋ค์ ์๋์ง ๋ถ๋ฐฐ๋ฅผ ์ต์ ํํ๊ณ ์๋์ง ๋ญ๋น๋ฅผ ์ค์ด๊ธฐ ์ํด Q-๋ฌ๋ ๊ธฐ๋ฐ ์์คํ ์ ๋ฐฐํฌํ๊ณ ์์ต๋๋ค. ์ด ์์คํ ๋ค์ ์๋์ง ์์๋ฅผ ์์ธกํ๊ณ ๊ทธ์ ๋ฐ๋ผ ๊ณต๊ธ์ ์กฐ์ ํ๋ ๋ฒ์ ํ์ตํฉ๋๋ค.
- ์ ์กฐ์ ๋ก๋ณดํฑ์ค(์์์): ์์์, ํนํ ์ผ๋ณธ๊ณผ ํ๊ตญ์ ์ ์กฐ ํ์ฌ๋ค์ ์์ฐ ๋ผ์ธ์์ ๋ก๋ด ์์ ์ ์๋ํํ๊ธฐ ์ํด Q-๋ฌ๋์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด ๋ก๋ด๋ค์ ๋ณต์กํ ์กฐ๋ฆฝ ์์ ์ ๋์ ์ ๋ฐ๋์ ํจ์จ์ฑ์ผ๋ก ์ํํ๋ ๋ฒ์ ํ์ตํฉ๋๋ค.
- ๊ฐ์ธ ๋ง์ถคํ ์๋ฃ(๊ธ๋ก๋ฒ): ์ ์ธ๊ณ ์ฐ๊ตฌ ๊ธฐ๊ด๋ค์ ๋ค์ํ ์ง๋ณ์ ๋ํ ์น๋ฃ ๊ณํ์ ๊ฐ์ธํํ๊ธฐ ์ํด Q-๋ฌ๋์ ์ฌ์ฉ์ ํ๊ตฌํ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ฝ๋ฌผ ๋ณต์ฉ๋ ์ต์ ํ, ์น๋ฃ ์ผ์ ๊ณํ, ํ์ ๊ฒฐ๊ณผ ์์ธก ๋ฑ์ด ํฌํจ๋ฉ๋๋ค.
Q-๋ฌ๋์ ํ๊ณ
Q-๋ฌ๋์ ๊ฐ์ ์๋ ๋ถ๊ตฌํ๊ณ ๋ช ๊ฐ์ง ํ๊ณ๊ฐ ์์ต๋๋ค:
- ์ฐจ์์ ์ ์ฃผ: Q-๋ฌ๋์ ์ํ์ ํ๋์ ์์ ๋ฐ๋ผ Q-ํ ์ด๋ธ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ปค์ง๊ธฐ ๋๋ฌธ์ ํฐ ์ํ ๊ณต๊ฐ์์ ์ด๋ ค์์ ๊ฒช์ต๋๋ค.
- ์๋ ด์ฑ: Q-๋ฌ๋์ ๊ฒฐ์ ๋ก ์ ํ๊ฒฝ๊ณผ ์ถฉ๋ถํ ํํ๊ณผ ๊ฐ์ ํน์ ์กฐ๊ฑด ํ์์๋ง ์ต์ ์ Q-ํจ์๋ก ์๋ ดํ๋ ๊ฒ์ด ๋ณด์ฅ๋ฉ๋๋ค.
- ํํ-ํ์ฉ ํธ๋ ์ด๋์คํ: ํํ๊ณผ ํ์ฉ์ ๊ท ํ์ ๋ง์ถ๋ ๊ฒ์ ์ด๋ ค์ด ๋ฌธ์ ์ ๋๋ค. ๋ถ์ถฉ๋ถํ ํํ์ ์ฐจ์ ์ ์ ์ฑ ์ผ๋ก ์ด์ด์ง ์ ์๊ณ , ๊ณผ๋ํ ํํ์ ํ์ต์ ๋ฆ์ถ ์ ์์ต๋๋ค.
- ๊ณผ๋ํ๊ฐ ํธํฅ: ํ์ค Q-๋ฌ๋์ Q-๊ฐ์ ๊ณผ๋ํ๊ฐํ์ฌ ์ฐจ์ ์ ์ ์ฑ ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- ํ์ดํผํ๋ผ๋ฏธํฐ์ ๋ํ ๋ฏผ๊ฐ์ฑ: Q-๋ฌ๋์ ์ฑ๋ฅ์ ํ์ต๋ฅ , ํ ์ธ์จ, ํํ๋ฅ ๊ณผ ๊ฐ์ ํ์ดํผํ๋ผ๋ฏธํฐ์ ์ ํ์ ๋ฏผ๊ฐํฉ๋๋ค.
๊ฒฐ๋ก
Q-๋ฌ๋์ ๋ค์ํ ๋ถ์ผ์ ๊ฑธ์ณ ์์ฉ๋๋ ๊ธฐ๋ณธ์ ์ด๊ณ ๋ค์ฌ๋ค๋ฅํ ๊ฐํ ํ์ต ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๊ทธ ์๋ฆฌ, ๊ตฌํ ๋ฐ ํ๊ณ๋ฅผ ์ดํดํจ์ผ๋ก์จ ๋ณต์กํ ์์ฌ ๊ฒฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ทธ ํ์ ํ์ฉํ ์ ์์ต๋๋ค. DQN๊ณผ ๊ฐ์ ๋ ๋ฐ์ ๋ ๊ธฐ์ ์ด Q-๋ฌ๋์ ์ผ๋ถ ํ๊ณ๋ฅผ ํด๊ฒฐํ์ง๋ง, ํต์ฌ ๊ฐ๋ ์ ๊ฐํ ํ์ต์ ๊ด์ฌ ์๋ ๋ชจ๋ ์ฌ๋์๊ฒ ์ฌ์ ํ ํ์์ ์ ๋๋ค. AI๊ฐ ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ ๊ฐํ ํ์ต, ํนํ Q-๋ฌ๋์ ์๋ํ ๋ฐ ์ง๋ฅํ ์์คํ ์ ๋ฏธ๋๋ฅผ ํ์ฑํ๋ ๋ฐ ์ ์ ๋ ์ค์ํ ์ญํ ์ ํ ๊ฒ์ ๋๋ค.
์ด ๊ฐ์ด๋๋ Q-๋ฌ๋ ์ฌ์ ์ ์ถ๋ฐ์ ์ ์ ๊ณตํฉ๋๋ค. ๋ ๊น์ด ํ๊ตฌํ๊ณ , ๋ค์ํ ํ๊ฒฝ์์ ์คํํ๋ฉฐ, ๊ณ ๊ธ ๊ธฐ์ ์ ํ๊ณ ๋ค์ด ์ด ๊ฐ๋ ฅํ ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ ์ ์ฌ๋ ฅ์ ๋ฐํํด ๋ณด์ธ์.