(์ค๋ช ์ถ๊ฐ) Q-Learning: ๊ฐํํ์ต์ ํต์ฌ ๊ฐ๋ ๊ณผ ์ดํด
์๋ณธ ๊ฒ์๊ธ: https://velog.io/@euisuk-chung/์ค๋ช ์ถ๊ฐ-Q-Learning-๊ฐํํ์ต์-ํต์ฌ-๊ฐ๋ ๊ณผ-์ดํด
ํํํ์๋์ใEasy! ๋ฅ๋ฌ๋ใ์ฑ ์ ๋ณด๋ค๋ณด๋ฉด ์์ฒญ ์ค์ํ ๋ด์ฉ๋ค์ด ์ฝ๊ฒ ํ์ด๋์ด ์์ต๋๋ค. ์ฒ์ ๋ฐฐ์ฐ์๋ ๋ถ๋ค๋ ์ฝ๊ฒ ๋ฐ๋ผ์ค์ค ์ ์์ต๋๋ค.
- ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฌ์ด ์์ ์ ์ฉ์ด ์ค๋ช ์ด ๋์ด ์์ต๋๋ค.
์ฌ์ง ์ถ์ฒ : ์ฑ ๋ด์ฉ ์ผ๋ถ ์ฌ์ง ์ง์ ์ดฌ์
๊ฐํํ์ต์ ๋ฌธ์ธํ์ด์๋ ์ ๋ ๊ฐ๋ ์ ๋ํด์ ์ฝ๊ฒ ๋งฅ๋ฝ์ ์ก์ ์ ์์ด์ ๊ฐ์ธ์ ์ผ๋ก ๋๋ฌด ์ ์ตํ ์๊ฐ์ด์์ต๋๋ค. (pg 29 - 37)
ํ์ง๋ง! ์ ๋ ์ฌ๊ธฐ์ ๊ทธ์น๋ฉด ์์ฝ๊ธฐ ๋๋ฌธ์ ์ข ๋ ๊น๊ฒ ์ฝ์ง(?) ์ข ๋ ํด๋ณด๊ฒ ์ต๋๋ค ใ ใ
์ด๋ฏธ์ง ์ถ์ฒ: ์ด๋ง๋ ์๋ฆฌ์ฆ (์ง์ ํธ์ง)
์ด๋ฒ ํฌ์คํ ์์๋ ๊ฐํํ์ต ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด๊ณ , Q-learning์ ๋ํด์ ๋ณด๋ค ๋ ์์ธํ๊ฒ ๊ณต๋ถํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
-
๊ฐํํ์ต๊ณผ Q-Learning์ ๊ธฐ๋ณธ ๊ฐ๋
๊ฐํํ์ต(Reinforcement Learning, RL)์ ์ธ๊ณต์ง๋ฅ(AI) ์์ด์ ํธ๊ฐ ํ๊ฒฝ๊ณผ ์ํธ์์ฉํ๋ฉด์ ์ต์ ์ ํ๋์ ํ์ตํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
์ด๋ฏธ์ง ์ถ์ฒ: https://minsuksung-ai.tistory.com/13
๊ทธ์ค์์๋ Q-Learning์ ํ๊ฒฝ์ ๋์ ๋ฐฉ์(์ ์ด ํ๋ฅ ์ด๋ ๋ณด์ ํจ์ ๋ฑ)์ ๋ฏธ๋ฆฌ ์์ง ์์๋ ํ์ตํ ์ ์๋ ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
- ์ฆ, ํ๊ฒฝ์ ์ง์ ํ์ํ๋ฉฐ ์ต์ ์ ํ๋์ ํ์ตํ๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค.
- ํน์ ์ํ์์ ํน์ ํ๋์ ํ์ ๋ ์ป์ ์ ์๋ ๋ณด์์ ๊ฒฝํ์ ํตํด ์์ธกํ๊ณ , ์ด๋ฅผ ํ์ฉํ์ฌ ์ ์ง์ ์ผ๋ก ๋ ๋์ ์ ์ฑ ์ ๋ง๋ค์ด ๋๊ฐ๋๋ค.
๊ฐํํ์ต์ด๋?
๊ฐํํ์ต์ ๋ณด์์ ์ต๋ํํ๋ ํ๋์ ํ์ตํ๋ ๊ณผ์ ์ ๋๋ค.
- ์์ด์ ํธ(agent)๋ ํ๊ฒฝ(environment)๊ณผ ์ํธ์์ฉํ๋ฉด์ ์ํ(state)๋ฅผ ๊ด์ฐฐํ๊ณ , ๊ฐ๋ฅํ ํ๋(action) ์ค ํ๋๋ฅผ ์ ํํ์ฌ ๋ณด์์ ๋ฐ์ต๋๋ค.
์์ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด์ ์ต์ ์ ์ ์ฑ (policy)์ ํ์ตํ๊ฒ ๋ฉ๋๋ค.
(๋ณด๋ค ์ฌ์ด ์ดํด๋ฅผ ์ํด์๋ ์ฑ ์ ์ฐธ๊ณ ํด์ฃผ์ธ์ )
์ด๋ฏธ์ง ์ถ์ฒ : R๋ก ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ๊ฐํํ์ต
๊ฐํํ์ต์ ํต์ฌ ๊ฐ๋ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- State (์ํ, SSS): ํ๊ฒฝ์์ ์์ด์ ํธ๊ฐ ํ์ฌ ์์นํ ์ํ์ ๋๋ค.
- Action (ํ๋, AAA): ํน์ ์ํ์์ ์ํํ ์ ์๋ ์ ํ์ง์ ๋๋ค.
- Reward (๋ณด์, RRR): ํน์ ํ๋์ ์ํํ์ ๋ ํ๊ฒฝ์ผ๋ก๋ถํฐ ๋ฐ๋ ๋ณด์์ ๋๋ค.
- Episode (์ํผ์๋): ์์ ์ํ์์ ๋ชฉํ ์ํ๊น์ง ๋๋ฌํ๋ ์ผ๋ จ์ ๋จ๊ณ์ ๋๋ค.
- Policy (์ ์ฑ , ฯ\piฯ): ์ํ์์ ํ๋์ ์ ํํ๋ ์ ๋ต์ ์๋ฏธํฉ๋๋ค.
- State-Action Value Function (ํ๋ ๊ฐ์น ํจ์, Q(S,A)Q(S,A)Q(S,A)): ํน์ ์ํ์์ ํน์ ํ๋์ ์ํํ์ ๋ ๊ธฐ๋๋๋ ์ฅ๊ธฐ์ ์ธ ๋ณด์์ ๋ํ๋ ๋๋ค.
Q-Learning์ ์ฑ ์์ ์๊ฐํ๋ ํต์ฌ ๊ฐํํ์ต ๊ธฐ๋ฒ ์ค ํ๋๋ก, Q-Table์ด๋ผ๋ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์ํ์์์ ํ๋ ๊ฐ์น๋ฅผ ํ์ตํฉ๋๋ค.
(For more. Q-Table์ โ6. Q-Table์ด๋?โ์ ์ฐธ๊ณ ํด์ฃผ์ธ์)
-
ํ๋ ๊ฐ์น ํจ์(Q-Value Function)๋?
Q-Learning
์ ํต์ฌ์ ํ๋ ๊ฐ์น ํจ์(Q-Value Function)๋ฅผ ํ์ตํ๋ ๊ฒ์
๋๋ค.
- ํ๋ ๊ฐ์น ํจ์ Q(S,A)Q(S, A)Q(S,A)๋ ํน์ ์ํ SSS (StateStateState)์์ ํน์ ํ๋ AAA (ActionActionAction)๋ฅผ ์ ํํ์ ๋ ๊ธฐ๋๋๋ ๋์ ๋ณด์์ ๋ํ๋ ๋๋ค.
Q-Learning
์์๋ Q-Table์ด๋ผ๋ ํํ๋ก ๊ฐ ์ํ์ ํ๋์ ๋ํ ๊ฐ์น๋ฅผ, Q-๊ฐ์ผ๋ก ์ ์ฅํ๋ฉฐ, ํ์ต์ ํตํด ์ด ๊ฐ์ ์ง์์ ์ผ๋ก ์
๋ฐ์ดํธํฉ๋๋ค.
- Q-๊ฐ์ ๋ฐ๋ณต์ ์ผ๋ก ์ ๋ฐ์ดํธํจ์ผ๋ก์จ ์์ด์ ํธ๋ ๋ ๋์ ๋ณด์์ ๊ธฐ๋ํ ์ ์๋ ํ๋์ ์ ํํ๋ ๊ฒฝํฅ์ ๊ฐ์ง๊ฒ ๋๋ฉฐ, ์ต์ ์ ์ ์ฑ ์ ํ์ฑํ๊ฒ ๋ฉ๋๋ค.
-
Q-Learning์ ํ์ต ๊ณผ์
Q-Learning์ ํ์ต์ Q-Table์ ๋ฐ๋ณต์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ๊ณผ์ ์ผ๋ก ์งํ๋ฉ๋๋ค.
ํ์ต ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
โ๏ธ Step 1: Q-Table ์ด๊ธฐํ
- ๋ชจ๋ Q-๊ฐ์ 0์ผ๋ก ์ค์ ํฉ๋๋ค.
Q(S,A)=0โS,AQ(S, A) = 0 \quad \forall S, AQ(S,A)=0โS,A
โ๏ธ Step 2: ํ๋ ์ ํ (Exploration vs. Exploitation)
- ์์ด์ ํธ๋ ํ์(Exploration)๊ณผ ํ์ฉ(Exploitation)์ ์กฐํฉํ์ฌ ํ๋์ ์ ํํฉ๋๋ค.
- ฯต\epsilonฯต-ํ์(ฯต\epsilonฯต-greedy) ์ ์ฑ ์ ์ฌ์ฉํฉ๋๋ค.
{ํ๋ฅ ย (1โฯต)โ์ต์ ย ํ๋ย ์ ํย (Exploitation)ํ๋ฅ ย ฯตโ๋๋คย ํ๋ย ์ ํย (Exploration)\begin{cases} \text{ํ๋ฅ } (1 - \epsilon) \Rightarrow \text{์ต์ ํ๋ ์ ํ (Exploitation)} \ \text{ํ๋ฅ } \epsilon \Rightarrow \text{๋๋ค ํ๋ ์ ํ (Exploration)} \end{cases}{ํ๋ฅ ย (1โฯต)โ์ต์ ย ํ๋ย ์ ํย (Exploitation)ํ๋ฅ ย ฯตโ๋๋คย ํ๋ย ์ ํย (Exploration)โ
โ๏ธ Step 3: ๋ณด์ ๊ด์ฐฐ ๋ฐ Q-๊ฐ ์ ๋ฐ์ดํธ
-
Q-๊ฐ์ ์๋ ๋ฒจ๋ง ๋ฐฉ์ ์(Bellman Equation)์ ์ด์ฉํด ๊ฐฑ์ ๋ฉ๋๋ค.
Q(S,A)โQ(S,A)+ฮฑ[R+ฮณmaxโกaโฒQ(Sโฒ,aโฒ)โQ(S,A)]Q(S, A) \leftarrow Q(S, A) + \alpha \Big[ R + \gamma \max_{aโ} Q(Sโ, aโ) - Q(S, A) \Big]Q(S,A)โQ(S,A)+ฮฑ[R+ฮณaโฒmaxโQ(Sโฒ,aโฒ)โQ(S,A)]
- Q(S,A)Q(S, A)Q(S,A) : ํ์ฌ ์ํ SSS์์ ํ๋ AAA๋ฅผ ํ์ ๋์ Q-๊ฐ
- ฮฑ\alphaฮฑ: ํ์ต๋ฅ (Learning Rate, 0~1) โ ์ ๋ฐ์ดํธ ๋น์จ์ ์กฐ์
- ฮณ\gammaฮณ: ํ ์ธ์จ (Discount Factor, 0~1)
- RRR: ํ์ฌ ํ๋์ ์ํํ ํ ๋ฐ์ ๋ณด์ (Reward)
- maxโกaโฒQ(Sโฒ,aโฒ)\max_{aโ} Q(Sโ, aโ)maxaโฒโQ(Sโฒ,aโฒ): ๋ค์ ์ํ์์ ์ต์ ํ๋์ Q-๊ฐ
์ด ๊ณผ์ ์ ์ถฉ๋ถํ ๋ฐ๋ณตํ๋ฉด Q-๊ฐ์ด ์๋ ดํ๊ณ , ์ต์ ์ ์ฑ ์ ์ฐพ์ ์ ์์ต๋๋ค.
โ (์ฐธ๊ณ ) ๋ฒจ๋ง ๋ฐฉ์ ์ (Bellman Equation) ์ค๋ช
๋ฒจ๋ง ๋ฐฉ์ ์(Bellman Equation)
์ ์ต์ ์ ์ฑ (Optimal Policy)์ ์ฐพ๊ธฐ ์ํด์ํ(State)
์ํ๋(Action)
๊ฐ์ ๊ด๊ณ๋ฅผ ์์ํํ ์์ ๋๋ค.
- ์ด๋ Q-Learning๊ณผ ๊ฐ์ ๊ฐํํ์ต์์ Q-๊ฐ์ ์ ๋ฐ์ดํธํ๋ ํต์ฌ ์๋ฆฌ๋ก ์์ฉํฉ๋๋ค.
- ๋ฒจ๋ง ๋ฐฉ์ ์์ ํ์ฌ ์ํ์์์ ์ต์ Q-๊ฐ์ ๋ฏธ๋์ ๊ธฐ๋ ๋ณด์(Discounted Future Reward)์ผ๋ก ํํํ ์ฌ๊ท ๋ฐฉ์ ์์ ๋๋ค.
-
ฮต-greedy ๊ธฐ๋ฒ๊ณผ Exploration & Exploitation ์ ๋ต
Q-Learning์์๋ ํ์(Exploration)๊ณผ ํ์ฉ(Exploitation)์ ๊ท ํ์ด ์ค์ํฉ๋๋ค.
- ํ์์ด ๋ถ์กฑํ๋ฉด ์ต์ ํ๋์ ์ฐพ์ง ๋ชปํ ๊ฐ๋ฅ์ฑ์ด ์๊ณ , ๋ฐ๋๋ก ํ์์ด ๊ณผํ๋ฉด ์ต์ ์ ์ฑ ์๋ ด์ด ๋๋ ค์ง ์ ์์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ฯต\epsilonฯต-greedy ์ ๋ต์ด ์ฌ์ฉ๋ฉ๋๋ค.
-
ํ์(Exploration):
- ์๋ก์ด ํ๋์ ์๋ํ์ฌ ๋ ๋์ ๋ณด์์ ์ฐพ์.
- ๋ฏธ์ง์ ์์ญ์ ํํํ๋ฉฐ, ์๋ก์ด ์ ๋ต์ ๋ฐ๊ฒฌํ ๊ฐ๋ฅ์ฑ์ ๋์.
-
ํ์ฉ(Exploitation):
- ํ์ฌ๊น์ง ํ์ตํ Q-๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์ต์ ์ ํ๋์ ์ ํํจ.
- ์ง๊ธ๊น์ง์ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ๊ฐ์ฅ ๋์ ๋ณด์์ ์ฃผ๋ ์ ํ์ง๋ฅผ ์ทจํจ.
Image Source: https://rogermartin.medium.com/balancing-exploration-and-exploitation
ฯต-greedy ๊ธฐ๋ฒ
ฯต\epsilonฯต-greedy ๊ธฐ๋ฒ์ ํน์ ํ๋ฅ (ฯต\epsilonฯต)๋ก ํ์์ ์ํํ๊ณ , ๋๋จธ์ง ํ๋ฅ (1โฯต1-\epsilon1โฯต)์์๋ ํ์ฌ ์ต์ ์ ํ๋์ ์ ํํ๋๋ก ์ค๊ณ๋ ๊ธฐ๋ฒ์ ๋๋ค.
- ์ด๋ฐ์๋ ํ์์ ๋ ๋ง์ด ์ํํ๋๋ก ์ค์ ํ๊ณ , ํ์ต์ด ์งํ๋ ์๋ก ํ์ฉ ๋น์จ์ ์ ์ง์ ์ผ๋ก ์ฆ๊ฐ์ํค๋ ๋ฐฉ์์ด ์ผ๋ฐ์ ์ ๋๋ค.
(์ฐธ๊ณ ) ฯต-greedy ๊ธฐ๋ฒ์ on-policy์ธ๊ฐ?
=> ๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด, NO!! ฯต-greedy ๊ธฐ๋ฒ์ off-policy๊ธฐ๋ฒ์ ๋๋ค.
- RL(๊ฐํํ์ต)์์ ๋งํ๋ Policy(์ ์ฑ , ฯ\piฯ)๋ ์์ด์ ํธ๊ฐ ํน์ ์ํ(SSS)์์ ํน์ ํ๋(AAA)์ ์ ํํ๋ ๊ท์น์ ๋๋ค.
- ์ฆ, โํ์ฌ ์ํ์์ ์ด๋ค ํ๋์ ํด์ผ ํ๋๊ฐ?โ๋ฅผ ๊ฒฐ์ ํ๋ ํจ์์ ๋๋ค.
- ฯต\epsilonฯต-greedy๋ ํน์ ํ ๋ฐฉ์์ผ๋ก ํ๋์ ์ ํํ๋ ๋ฐฉ๋ฒ๋ก ์ด์ง, ์ ์ฑ ์์ฒด๋ฅผ ํ์ตํ๋ ๋ฐฉ์์ด ์๋๋๋ค.
- ์ฆ, โํ์์ ์ผ๋ง๋ ํ ๊ฒ์ธ๊ฐ?โ๋ฅผ ์กฐ์ ํ๋ ์ญํ ์ ํ๋ ๊ฒ์ด์ง, ์ด๋ค ํ๋์ด ์ต์ ์ธ์ง๋ฅผ ํ์ตํ๋ ๊ฒ์ ์๋๋๋ค.
๋น๊ต ํญ๋ชฉ | On-Policy Learning | Off-Policy Learning |
---|---|---|
ํ์ตํ๋ ์ ์ฑ ๊ณผ ์คํํ๋ ์ ์ฑ | ๋์ผํจ (๊ฐ์ ์ ์ฑ ์ ํ์ต) | ๋ค๋ฆ (์ต์ ์ ์ฑ ์ ํ์ต) |
ํ์๊ณผ ํ์ฉ์ ๊ด๊ณ | ํ์๊ณผ ํ์ฉ์ด ํจ๊ป ์ด๋ฃจ์ด์ง | ํ์์ ํตํ ๊ฒฝํ์ ํ์ฉํ์ฌ ์ต์ ํ๋ ํ์ต |
๊ฒฝํ ์ฌ์ฌ์ฉ(Experience Replay) | ์ฌ์ฉ ์ด๋ ค์ | ์ฌ์ฉ ๊ฐ๋ฅ (๋ฐ์ดํฐ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ) |
์์ ์๊ณ ๋ฆฌ์ฆ | SARSA, PPO | Q-Learning, DQN |
-
ํ ์ธ์จ(Discount Factor)์ ์ญํ
Q-Learning์์๋ ๋ฏธ๋ ๋ณด์์ ๊ฐ์น๋ฅผ ํ์ฌ ๋ณด์๊ณผ ๋น๊ตํ ๋ ํ ์ธ์จ(Discount Factor, ฮณ\gammaฮณ)์ ์ ์ฉํฉ๋๋ค.
-
ํ ์ธ์จ์ด ๋์์๋ก ๋จผ ๋ฏธ๋์ ๋ณด์๊น์ง ๊ณ ๋ คํ๋ ๋ฐ๋ฉด, ๋ฎ์์๋ก ๊ฐ๊น์ด ๋ณด์์ ๋ ์ค์ํ๊ฒ ์ฌ๊น๋๋ค.
- ฮณ\gammaฮณ ๊ฐ์ด 1์ ๊ฐ๊น์ธ์๋ก โ ์ฅ๊ธฐ์ ์ธ ๋ณด์์ ์ค์ (์: ๋ง๋ผํค ๊ฒฝ๊ธฐ ์ ๋ต ์๋ฆฝ)
- ฮณ\gammaฮณ ๊ฐ์ด 0์ ๊ฐ๊น์ธ์๋ก โ ์ฆ๊ฐ์ ์ธ ๋ณด์์ ์ค์ (์: ๋น์ฅ ์ด๋์ ์ป๋ ๋๋ฐ ์ ๋ต)
์ผ๋ฐ์ ์ผ๋ก ฮณ\gammaฮณ๋ 0.9~0.99
์ฌ์ด๋ก ์ค์ ๋ฉ๋๋ค.
- ๋์ ํ ์ธ์จ์ ์ฅ๊ธฐ์ ์ธ ๋ชฉํ๋ฅผ ๊ณ ๋ คํ๋ฉฐ, ๋ฎ์ ํ ์ธ์จ์ ์ฆ๊ฐ์ ์ธ ๊ฒฐ๊ณผ์ ์ง์คํ๊ฒ ํฉ๋๋ค.
์ด ์ค์ ์ ๋ฌธ์ ์ ํน์ฑ๊ณผ ๋ชฉํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
-
Q-Table์ด๋?
Q-Table์ ๊ฐ ์ํ(state)์์ ๊ฐ๋ฅํ ํ๋(action)์ ๋ํ ์์ ๋ณด์ ๊ฐ(Q-Value)์ ์ ์ฅํ๋ ํ ์ด๋ธ์ ๋๋ค.
- Q-Learning ์๊ณ ๋ฆฌ์ฆ์์๋ ์ด ํ ์ด๋ธ์ ์ ์ง์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ฉด์ ์ต์ ์ ํ๋์ ํ์ตํฉ๋๋ค.
Q-Table์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ํ(State) | ํ๋ 1 | ํ๋ 2 | ํ๋ 3 | ํ๋ 4 |
---|---|---|---|---|
S1 | 0.5 | 0.2 | -0.1 | 0.0 |
S2 | 0.0 | 0.8 | 0.3 | -0.5 |
S3 | -0.3 | 0.7 | 0.5 | 0.2 |
์ฌ๊ธฐ์ ๊ฐ ์ ์ ๊ฐ(Q-Value)์ ํด๋น ์ํ์์ ํน์ ํ๋์ ์ํํ์ ๋ ๊ธฐ๋ํ ์ ์๋ ๋ณด์์ ์๋ฏธํฉ๋๋ค.
- ํ์ต์ด ์งํ๋จ์ ๋ฐ๋ผ Q-Table์ ๊ฐ์ด ์ ์ ๋ ์ ํํ ๋ณด์ ์์ธก๊ฐ์ผ๋ก ์๋ ดํฉ๋๋ค.
-
Q-Learning์ ๊ตฌํ ์์
(์ฐธ๊ณ ์ฉ) ์๋๋ ๊ฐ๋จํ Q-Learning ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ Python ์ฝ๋์ ๋๋ค.
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
32
33
34
35
36
37
38
39
40
41
42
import numpy as np
# ํ๊ฒฝ ์ค์
n_states = 16 # ์ํ ์
n_actions = 4 # ํ๋ ์ (์, ํ, ์ข, ์ฐ)
goal_state = 15 # ๋ชฉํ ์ํ
# Q-Table ์ด๊ธฐํ
Q_table = np.zeros((n_states, n_actions))
# ํ์ดํผํ๋ผ๋ฏธํฐ ์ค์
learning_rate = 0.8
discount_factor = 0.95
exploration_prob = 0.2
epochs = 1000
# Q-Learning ์๊ณ ๋ฆฌ์ฆ
for epoch in range(epochs):
current_state = np.random.randint(0, n_states) # ๋ฌด์์ ์ํ์์ ์์
while current_state != goal_state:
# ํ๋ ์ ํ (epsilon-greedy ์ ๋ต)
if np.random.rand() < exploration_prob:
action = np.random.randint(0, n_actions) # ํ์
else:
action = np.argmax(Q_table[current_state]) # ํ์ฉ
# ํ๊ฒฝ์์ ๋ค์ ์ํ๋ก ์ด๋ (๋จ์ํ๋ ์ด๋)
next_state = (current_state + 1) % n_states
# ๋ณด์ ์ ์ (๋ชฉํ ์ํ ๋๋ฌ ์ ๋ณด์ ๋ถ์ฌ)
reward = 1 if next_state == goal_state else 0
# Q-๊ฐ ์
๋ฐ์ดํธ (๋ฒจ๋ง ๋ฐฉ์ ์ ์ ์ฉ)
Q_table[current_state, action] += learning_rate * \
(reward + discount_factor * np.max(Q_table[next_state]) - Q_table[current_state, action])
current_state = next_state # ๋ค์ ์ํ๋ก ์ด๋
# ํ์ต๋ Q-Table ์ถ๋ ฅ
print("ํ์ต๋ Q-Table:")
print(Q_table)
์ ์ฝ๋๋ฅผ ์คํํ๋ฉด Q-Table์ด ํ์ต๋๋ฉด์ ์ต์ ์ ํ๋์ ์ฐพ์๊ฐ๋ ๊ณผ์ ์ ํ์ธํ ์ ์์ต๋๋ค.
-
Model-Based RL๊ณผ Q-Learning์ ์ฐจ์ด
Q-Learning์ Model-Free RL(๋ชจ๋ธ์ด ์๋ ๊ฐํํ์ต) ๊ธฐ๋ฒ์ ๋๋ค.
- ์ด๋ ํ๊ฒฝ์ ์ ์ด ํ๋ฅ (Transition Probability)์ด๋ ๋ณด์ ํจ์(Reward Function)๋ฅผ ๋ฏธ๋ฆฌ ์ ํ์ ์์ด, ์ง์ ๊ฒฝํ์ ํตํด ์ต์ ์ ํ๋์ ํ์ตํ๋ค๋ ์๋ฏธ์ ๋๋ค.
- ๋ฐ๋ฉด, Model-Based RL(๋ชจ๋ธ ๊ธฐ๋ฐ ๊ฐํํ์ต)์ ํ๊ฒฝ์ ๋์ ๋ชจ๋ธ์ ๋ฏธ๋ฆฌ ํ์ตํ๊ฑฐ๋ ์ ๊ณต๋ฐ์ ์ด๋ฅผ ํ์ฉํ์ฌ ์ต์ ์ ์ฑ ์ ๋์ถํ๋ ๋ฐฉ์์ ๋๋ค.
๋น๊ต ํญ๋ชฉ | Model-Free RL (Q-Learning) | Model-Based RL |
---|---|---|
ํ๊ฒฝ ๋ชจ๋ธ ์ ์ฅ ์ฌ๋ถ | โ (์ ์ฅ ์ ํจ) | โ (ํ๊ฒฝ ๋ชจ๋ธ ์ ์ฅ) |
ํ์ต ๋ฐฉ์ | ์ง์ ๊ฒฝํ์ ํตํด ํ์ต | ํ๊ฒฝ ๋ชจ๋ธ์ ํ์ฉํ ์์ธก |
์์ธก ๊ฐ๋ฅ ์ฌ๋ถ | โ (๋ฏธ๋ ์ํ ์์ธก ๋ถ๊ฐ) | โ (ํ๊ฒฝ ๋ชจ๋ธ์ ํตํด ์์ธก ๊ฐ๋ฅ) |
ํ์ต ๋น์ฉ | ์๋์ ์ผ๋ก ์ ์ | ๋ชจ๋ธ ํ์ต๊ณผ ์์ธก ๋น์ฉ์ด ํผ |
์์ ์๊ณ ๋ฆฌ์ฆ | Q-Learning, SARSA | ๋ค์ด๋ด๋ฏน ํ๋ก๊ทธ๋๋ฐ(DP), ๋ชฌํ ์นด๋ฅผ๋ก ํธ๋ฆฌ ํ์(MCTS) |
Q-Learning์ด Model-Free์ธ ์ด์
-
Q-Learning์ ํ๊ฒฝ์ ๋์ ๋ชจ๋ธ(์ ์ด ํ๋ฅ ๋ฐ ๋ณด์ ํจ์)์ ์ง์ ํ์ตํ์ง ์๊ณ , ํ๊ฒฝ๊ณผ์ ์ํธ์์ฉ์ ํตํด ์ต์ ์ ํ๋์ ์ฐพ์ต๋๋ค.
- (1) ๊ฒฝํ์ ํตํด Q-๊ฐ์ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ์์ ์ฌ์ฉ.
- (2) ํ๊ฒฝ ๋ชจ๋ธ์ ๋ฐ๋ก ๊ตฌ์ถํ์ง ์์ผ๋ฏ๋ก ํ์ต์ด ๋ ์ ์ฐํ๊ณ ๋จ์.
-
๋ฐ๋ฉด, Model-Based RL์์๋ ํ๊ฒฝ์ ์ ์ด ํ๋ฅ ๊ณผ ๋ณด์์ ๋ชจ๋ธ๋งํ์ฌ ๋ฏธ๋ฆฌ ์์ธกํ ์ ์์ผ๋ฏ๋ก, ์ค์ ํ๊ฒฝ๊ณผ์ ์ํธ์์ฉ ์์ด๋ ํ์ต์ ์งํํ ์ ์์ต๋๋ค.
(์ฐธ๊ณ ) Q-Learning์ ํ๊ฒฝ ๋ชจ๋ธ ์์ด๋ ํ์ตํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฒ์ AI, ๋ก๋ด ์ ์ด, ๋คํธ์ํฌ ์ต์ ํ ๋ฑ ๋ค์ํ ์ค์ ๋ฌธ์ ์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
-
Q-Learning์ ํ๊ณ์ (?)
๋ฌด์์ ๋ชจ๋ ์ํ(state)์ ๋ํด Q-Table์ ์์ฑํ๋ ๊ฒ์ ๋ญ๋น์ผ ์ ์์ต๋๋ค.
- ํนํ ์ํ ๊ณต๊ฐ(state space)์ด ๋งค์ฐ ํฌ๊ฑฐ๋ ์ฐ์์ ์ธ ๊ฒฝ์ฐ, ํ ์ด๋ธ ๊ธฐ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ๋ฉ๋ชจ๋ฆฌ์ ๊ณ์ฐ ๋น์ฉ์ด ๊ณผ๋ํ๊ฒ ์ฆ๊ฐํ๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ด๋ฌํ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด ๋ค์ํ ์ฐ๊ตฌ๋ค์ด ์งํ๋์์ผ๋ฉฐ, ํ๊ฐ์ง๋ก ํจ์ ๊ทผ์ฌ(Function Approximation) ์ฌ์ฉํ๋ ๊ฒ์ ์๋ก ๋ค ์ ์์ต๋๋ค.
๐ก ํจ์ ๊ทผ์ฌ(Function Approximation)๋?
- ์ ๊ฒฝ๋ง(Neural Network) ๋๋ ์ ํ ํ๊ท(Linear Regression) ๋ฑ์ ํ์ฉํ์ฌ Q-Table์ ์ง์ ์ ์ฅํ๋ ๋์ ํจ์๋ก ๊ทผ์ฌํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ
: Deep Q-Network (DQN)
- ์ฅ์ : ์ํ ๊ณต๊ฐ์ด ํฌ๋๋ผ๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ด๊ณ ์ผ๋ฐํ ๊ฐ๋ฅ
- ๋จ์ : ์ ๊ฒฝ๋ง ํ์ต์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ , ํ์ต ์์ ์ฑ์ด ๋จ์ด์ง ์ ์์
์ด๋ฏธ์ง ์ถ์ฒ : ์ด๊ฒ์ ๊ฒ ํ ํฌ ๋ธ๋ก๊ทธ - DQN
(์ฐธ๊ณ ) Q-Learning์ ๊ณ ์ ๊ฐํํ์ต(classic reinforcement learning) ๊ธฐ๋ฒ ์ค ํ๋๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
- (WHY?) ์๋ํ๋ฉด Q-learning์ ๊ฐํํ์ต์ด ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฐ๊ตฌ๋๊ธฐ ์์ํ 1980~1990๋ ๋์ ๋ฑ์ฅํ ์๊ณ ๋ฆฌ์ฆ์ด๋ฉฐ, ๋น๊ต์ ๋จ์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ํ-ํ๋(State-Action) ๊ฐ(Q-Value)์ ํ์ตํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๐ก Q-Learning๊ณผ Deep Q-Network์ ์ฐจ์ด
๋น๊ต ํญ๋ชฉ | Q-Learning | Deep Q-Network (DQN) |
---|---|---|
ํํ ๋ฐฉ์ | Q-Table(ํ ์ด๋ธ ์ ์ฅ) | ์ ๊ฒฝ๋ง(Deep Neural Network) |
์ํ ๊ณต๊ฐ | ์๊ฑฐ๋ ์ด์ฐ์ (Discrete) | ์ฐ์์ ์ธ ๊ณต๊ฐ๋ ํ์ต ๊ฐ๋ฅ |
ํ์ต ๋ฐฉ๋ฒ | ๊ฒฝํ์ ํตํ Q-๊ฐ ์ ๋ฐ์ดํธ | ์ ๊ฒฝ๋ง์ ํตํด Q-๊ฐ ๊ทผ์ฌ |
ํ์ต ํจ์จ์ฑ | ์์ ํ๊ฒฝ์์๋ ํจ์จ์ | ๋ณต์กํ ํ๊ฒฝ์์๋ ํ์ฉ ๊ฐ๋ฅ |
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ | ์ํ๊ฐ ๋ง์์ง์๋ก ์ฆ๊ฐ | ์ํ ๊ณต๊ฐ์ด ์ปค๋ ํ์ต ๊ฐ๋ฅ |
โ ์ ๋ฆฌ
- Q-Learning์ ๊ณ ์ ์ ์ธ ๊ฐํํ์ต ์๊ณ ๋ฆฌ์ฆ์ด๋ฉฐ, ๋น๊ต์ ๋จ์ํ ํ ์ด๋ธ ๊ธฐ๋ฐ ์ ๊ทผ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
- Deep Q-Network(DQN) ๊ฐ์ ์ ๊ฒฝ๋ง ๊ธฐ๋ฐ ๊ฐํํ์ต ์๊ณ ๋ฆฌ์ฆ์ด ๋ฑ์ฅํ๋ฉด์ ๋ ํ์ฅ๋ ํํ๋ก ๋ฐ์ ํ์ต๋๋ค.
-
๊ฒฐ๋ก
์ด๋ฒ ํฌ์คํธ์์๋ ํํํ์๋์ใEasy! ๋ฅ๋ฌ๋ใ์ฑ ์ ๋ณด๋ฉด์ ๋ ์ดํด๋ณด๊ณ ์ถ์๋ ๊ฐํํ์ต์ ์ฌํ๋ด์ฉ๊ณผ, Q-Learning์ ๋ํด์ ์ดํด๋ณด์์ต๋๋ค.
Q-Learning์ ๊ฐํํ์ต์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด๊ณ ๊ฐ๋ ฅํ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋๋ก, ๋ณด์์ ์ต๋ํํ๋ ์ต์ ์ ํ๋์ ํ์ตํ ์ ์์ต๋๋ค.
Q-Learning ํน์ง ์์ฝ
- Q-Table์ ์ฌ์ฉํ์ฌ ํ์ต
- ๋ฒจ๋ง ๋ฐฉ์ ์ ๊ธฐ๋ฐ์ผ๋ก Q-๊ฐ ์ ๋ฐ์ดํธ
- ฯต\epsilonฯต-ํ์ ์ ์ฑ ์ ํ์ฉํ์ฌ ํ์๊ณผ ํ์ฉ์ ๊ท ํ ์ ์ง
Q-Learning์ QQQ๋ผ๋ ์ฉ์ด๋ โAction-Valueโ๋ฅผ ๋ํ๋ด๋ ๊ธฐํธ๋ก, ๋ฒจ๋ง ๋ฐฉ์ ์์์ ์ ๋ํ ๊ฒ์ผ๋ก ๋ณด๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค.
Q-Learning์ ์ถฉ๋ถํ ์ดํดํ๊ณ ๋๋ฉด, ์ต๊ทผ ๊ฐํํ์ต์ ๊ฝ์ธ ์ฌ์ธต ๊ฐํํ์ต(Deep Q-Network, DQN)์ผ๋ก ํ์ฅํ์ฌ ๋ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์๋ ์์ต๋๋ค. (๋ฌผ๋ก ์ ์ฌ๊ธฐ๊น์ง)
์ด๋ฅผ ๋ฐํ์ผ๋ก ๋์ฑ ๊น์ด ์๋ ํ์ต์ ์งํํด ๋ณด์๊ธธ ๋ฐ๋๋๋ค!
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค ๐