๋ณธ ์คํ์ OpenAI Gym์ CartPole-v1 ํ๊ฒฝ์์ DQN(Deep Q-Network)์ ์ ์ฉํ์ฌ ๊ฐํ ํ์ต์ ์งํํ ์คํ์ด๋ค.
์ด์ ์คํ์์๋ Q-learning์ ๊ธฐ๋ฐ์ผ๋ก ํ ํ์ต ๋ฐฉ๋ฒ์ ์ ์ฉํ์์ผ๋ฉฐ, ํ๋ ์ ํ ๋ฐฉ์(Exploration Strategy)์ผ๋ก Epsilon-Greedy์ Softmax๋ฅผ ๋น๊ตํ์๋ค. ๊ทธ ๊ฒฐ๊ณผ, Epsilon-Greedy ๋ฐฉ์์ด ๋ ํจ๊ณผ์ ์ธ ํ์ต ์ฑ๋ฅ์ ๋ณด์๋ค. ๋ฐ๋ผ์ ์ด๋ฒ ์คํ์์๋ ์ถ๊ฐ์ ์ธ ํ๋ ์ ํ ๋ฐฉ์ ์คํ ์์ด Epsilon-Greedy ํ์๋ฒ์ ์ ์ฉํ์ฌ DQN ํ์ต์ ์งํํ์๋ค.
๋ณธ ๊ธ์์๋ ์คํ ๊ณผ์ ๊ณผ ๊ฒฐ๊ณผ ๋ถ์์ ์ง์คํ๋ฉฐ, ๊ตฌ์ฒด์ ์ธ ์ฝ๋ ๊ตฌํ๋ณด๋ค๋ ์คํ์ ํต์ฌ ๊ฐ๋ ๋ฐ ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ๋ ๋ฐ ์ด์ ์ ๋ง์ถ๋ค.
CartPole ํ๊ฒฝ์ ๊ฐํ ํ์ต ์คํ์์ ๊ณ ์ ์ ์ด(Classic Control) ๋ฌธ์ ๋ก ๋๋ฆฌ ์ฌ์ฉ๋๋ฉฐ, DQN(Deep Q-Network)์ ํ์ฉํ ํ์ต ์คํ์ ์ ํฉํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด ํ๊ฒฝ์์๋ ์๋ (Cart) ์์ ๋ง๋(Pole)๋ฅผ ์ธ์ด ์ํ์์ ๊ท ํ์ ์ ์งํ๋ ๊ฒ์ด ๋ชฉํ์ด๋ค.

์ฌ์ฉํ ํ๊ฒฝ : Anaconda, PyCharm
๊ฐํ ํ์ต ํ๊ฒฝ : OpenAI Gym
ํ์ด์ฌ ๋ฒ์ : 3.8
CartPole์ ์ด์ฐ์ ์ธ ํ๋ ๊ณต๊ฐ(Discrete Action Space)์ ๊ฐ์ง๋ค.
DQN์ ์ฐ์์ ์ธ ์ํ ๊ณต๊ฐ(Continuous State Space)์ ์ฒ๋ฆฌํ ์ ์๋ ์ ๊ฒฝ๋ง ๋ชจ๋ธ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ๊ธฐ์กด Q-learning์ฒ๋ผ ์ํ๋ฅผ ์ด์ฐํ(Discretization)ํ ํ์ ์์ด ๊ทธ๋๋ก ๋คํธ์ํฌ์ ์ ๋ ฅ์ผ๋ก ํ์ฉํ ์ ์๋ค.
CartPole ํ๊ฒฝ์ ๊ด์ธก ๊ณต๊ฐ(Observation Space)์ ์ฐ์์ ์ธ ์ํ ๋ณ์๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์ ๊ฒฝ๋ง์ ํตํด ์ง์ ํ์ตํ ์ ์๋ค.
DQN์์๋ ์ฐ์์ ์ธ ์ํ๋ฅผ ์ง์ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ์ ๊ฒฝ๋ง์ ํตํด Q๊ฐ์ ์์ธกํ๋ค. ๋ฐ๋ผ์ Q-learning์์ ํ์ํ๋ ์ด์ฐํ(Discretization) ๊ณผ์ ์ด ๋ถํ์ํ๋ฉฐ, ๋ณด๋ค ์ ๋ฐํ ํ์ต์ด ๊ฐ๋ฅํ๋ค.
์ด์ ์คํ(Q-learning)๊ณผ์ ์ฐจ์ด์
DQN์ ํ์ฉํ ์ฅ์
๋ณธ ์คํ์์๋ DQN(Deep Q-Network) ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ์ฌ CartPole ํ๊ฒฝ์์ ํ์ต์ ์งํํ์๋ค. ๊ธฐ์กด์ Q-learning๊ณผ ๋ฌ๋ฆฌ, DQN์ ์ ๊ฒฝ๋ง(Neural Network)์ ํ์ฉํ์ฌ Q๊ฐ์ ๊ทผ์ฌํ๋ฉฐ, ์ด๋ฅผ ํตํด ์ฐ์์ ์ธ ์ํ ๊ณต๊ฐ์ ์ง์ ์ฒ๋ฆฌํ ์ ์๋ค.
| ๋น๊ต ํญ๋ชฉ | Q-learning | DQN |
|---|---|---|
| ์ํ ๊ณต๊ฐ | ์ด์ฐํ(Discretization) ํ์ | ์ฐ์์ ์ธ ์ํ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉ |
| Q-๊ฐ ์ ์ฅ ๋ฐฉ์ | Q-table ์ฌ์ฉ (๋ฉ๋ชจ๋ฆฌ ์ ํ ์กด์ฌ) | ์ ๊ฒฝ๋ง์ ํตํด Q๊ฐ ๊ทผ์ฌ |
| ์ผ๋ฐํ ๋ฅ๋ ฅ | ๋ฎ์ (๋ณธ ์ ์๋ ์ํ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ค์) | ๋์ (๋น์ทํ ์ํ์์๋ ์ ์ฌํ ํ๋์ ์์ธก ๊ฐ๋ฅ) |
| ๊ฒฝํ ์ฌํ (Replay Buffer) | X (๋จ์ผ ๊ฒฝํ ๊ธฐ๋ฐ ํ์ต) | O (๊ณผ๊ฑฐ ๊ฒฝํ์ ํ์ฉํ์ฌ ํ์ต ์์ ํ) |
| ํ๊ฒ ๋คํธ์ํฌ (Target Network) | X | O (Q๊ฐ์ ๊ธ๊ฒฉํ ๋ณํ ๋ฐฉ์ง, ํ์ต ์์ ์ฑ ์ฆ๊ฐ) |
๋ณธ ๋ฒจ๋ก๊ทธ์์๋ ์์ค์ฝ๋๋ฅผ ์ ๊ณตํ์ง๋ ์์ง๋ง ์คํ์ ์งํํ ์ฝ๋ ๊ตฌ์ฑ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
1๏ธโฃ ํ๊ฒฝ ์ด๊ธฐํ (env.reset())
CartPole ํ๊ฒฝ์ ์ด๊ธฐํํ๊ณ , ์ด๊ธฐ ์ํ๋ฅผ ๊ฐ์ ธ์จ๋ค.
ํ๊ฒฝ์์ ๋ฐํ๋ ์ฐ์์ ์ธ ์ํ ๋ฒกํฐ(์์น, ์๋, ๊ฐ๋, ๊ฐ์๋)๋ฅผ ํ์ต์ ํ์ฉํ๋ค.
2๏ธโฃ ์ ๊ฒฝ๋ง์ ํตํ Q๊ฐ ์์ธก
ํ์ฌ ์ํ๋ฅผ ์ ๊ฒฝ๋ง(Policy Network)์ ์
๋ ฅํ์ฌ ๊ฐ ํ๋(0 ๋๋ 1)์ ๋ํ Q๊ฐ์ ์์ธกํ๋ค.
3๏ธโฃ ํ์(Exploration)๊ณผ ํ์ฉ(Exploitation) ์ ํ
4๏ธโฃ ํ๊ฒฝ ์ํธ์์ฉ (env.step(action))
์ ํํ ํ๋์ ํ๊ฒฝ์ ์ ์ฉํ๊ณ , ๋ค์ ์ํ, ๋ณด์, ์ข
๋ฃ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ค.
reward = min(-(200 - cnt), -100)5๏ธโฃ ๊ฒฝํ ์ ์ฅ (Replay Buffer ํ์ฉ)
6๏ธโฃ Q๊ฐ ์
๋ฐ์ดํธ (DQN ์์ค ํจ์ ์ ์ฉ)
์์ค ํจ์๋ก Huber Loss (Smooth L1 Loss)๋ฅผ ์ ์ฉํ์ฌ Q๊ฐ์ ์์ ์ ์ผ๋ก ์
๋ฐ์ดํธํ๋ค. Playing Atari with Deep Reinforcement Learning, 2015์๋ Huber Loss๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฉํด๋ณด์๋ค.
DQN์ ์ ๋ฐ์ดํธ ๊ณต์ :
ํ๊ฒ ๋คํธ์ํฌ(Target Network)๋ฅผ ํ์ฉํ์ฌ Q๊ฐ์ ๊ธ๊ฒฉํ ๋ณํ๋ฅผ ๋ฐฉ์งํ๊ณ ํ์ต ์์ ์ฑ์ ํ๋ณดํ๋ค.
7๏ธโฃ ํ๊ฒ ๋คํธ์ํฌ ์ ๋ฐ์ดํธ
8๏ธโฃ ์ข
๋ฃ ์กฐ๊ฑด ์ถฉ์กฑ ์ ์ํผ์๋ ์ข
๋ฃ
๋ง๋๊ฐ ๊ธฐ์ธ์ด์ง๊ฑฐ๋ ์๋ ๊ฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ์ํผ์๋ ์ข
๋ฃ
๊ฒฐ๊ณผ์ ์ผ๋ก DQN์ ํ์ฉํ ํ์ต์ด ์ํํ๊ฒ ์งํ๋์๋ค. ํ์ง๋ง ์๊ฐ๋ณด๋ค ์ด๋ฐ์ ์ฑ๋ฅ์ด ์ข์ง ์๊ฒ ๋์์ง๋ง ํ์ต ์๊ฐ์ ๋๋ ค CartPole ํ๊ฒฝ์ ๋ชฉํ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋ฌ์ฑํ ์ ์์๋ค.
๊ทธ์ค์์๋ Epsilon-Greedy ๋ฐฉ์์ด ํ์ต ์๋์ ์ต์ข ์ฑ๋ฅ ์ธก๋ฉด์์ ์ฐ์ํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์๋ค.
๋ฐ๋ฉด, ฮต-ํ์์ ์ฌ์ฉํ์ง ์๊ณ ์ ๊ฒฝ๋ง ๊ธฐ๋ฐ์ผ๋ก ํ๋์ ์ ํํ๋ ๋ฐฉ๋ฒ(Dueling DQN, Double DQN ๋ฑ)์ ์ถ๊ฐ ์คํํ ํ์๊ฐ ์๋ค. ํ์ฌ์ ๋ฐฉ์์ ํ์ต์ด ์งํ๋๋ฉด์๋ ์ผ์ ํ๋ฅ ๋ก ํ์์ ์ ์งํ์ง๋ง, ๋ณด๋ค ์ ๊ตํ ๋ฐฉ์์ด ์ถ๊ฐ๋๋ค๋ฉด ํ์ต ํจ์จ์ด ๋ ํฅ์๋ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ค.
๋ํ, ํ๊ฒ ๋คํธ์ํฌ๋ฅผ ํ์ฉํ ์ ๋ฐ์ดํธ๊ฐ ํ์ต ์์ ์ฑ์ ์ฆ๊ฐ์ํค๋ ๋ฐ ํจ๊ณผ์ ์ด์์ผ๋ฉฐ, Huber Loss๋ฅผ ์ ์ฉํจ์ผ๋ก์จ Q๊ฐ์ ๊ธ๊ฒฉํ ๋ณํ๊ฐ ์ค์ด๋ค๊ณ ํ์ต ๊ณผ์ ์ด ๋์ฑ ๋ถ๋๋ฌ์์ง๋๋ก ํ์๋ค.
๋ฐ๋๋ก, Replay Buffer์ ๋ฉ๋ชจ๋ฆฌ๊ฐ์ด ๋ฎ์ ๊ฒฝ์ฐ ํ์ต์ด ๋ถ์์ ํด์ง๋ ๊ฒฝํฅ์ ๋ณด์๋ค. Replay Buffer๋ฅผ ํ์ฉํ์ฌ ๊ณผ๊ฑฐ ๊ฒฝํ์ ์ฌ์ฌ์ฉํจ์ผ๋ก์จ Q๊ฐ์ ๋ ๋ง์ด ํ์ตํ ์ ์์์ผ๋ฉฐ, ์ด๋ ํ์ต ์ฑ๋ฅ ํฅ์์ ๊ธฐ์ฌํ ์์ ์ค ํ๋์๋ค.
์ด๋ฌํ ํน์ฑ ๋๋ถ์ DQN์ ๊ธฐ๋ฐ์ผ๋ก ํ Epsilon-Greedy ๋ฐฉ์์ด ๋ณด๋ค ์ ์ฐํ ํ์ต์ ๊ฐ๋ฅํ๊ฒ ํ์์ผ๋ฉฐ, ์ต์ ์ ์ ์ฑ
์ ์ฐพ๋ ๋ฐ ์์ด ํจ๊ณผ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์๋ค.
ํ์ง๋ง ๋๋ฌด ๊ณผ๋ํ ํ์ต(episode 50000)์ผ๋ก ์ธํด ์ค๋ฒํผํ
๊ฒฝํฅ์ด ๋ํ๋ฌ๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ชฉํ๋ ๋ฌ์ฑํ์ผ๋ ๋ง์กฑ...
๋ฐ์ ์์์ ๋ ์ด ์๋๊ณ ์ง์ง ์ ๋ ๊ฒ ํ์ต๋จ...

์ด์ Q-learning๊ณผ DQN์ ์ ์ฉํ์ฌ CartPole ํ๊ฒฝ์์ ํ์ต ์ฑ๋ฅ์ ๋น๊ตํ์๋ค.
์คํ ๊ฒฐ๊ณผ, ์ด๊ธฐ ํ์ต ๊ตฌ๊ฐ์์๋ Q-learning์ด DQN๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ๋ณด์์ ์ฆ๊ฐ์ํค๋ ๊ฒฝํฅ์ ๋ณด์๋ค.
์ผ์ ์ํผ์๋ ์ดํ, DQN์ด ๊ธ๊ฒฉํ๊ฒ ๋์ ๋ณด์์ ์ป์ผ๋ฉฐ Q-learning์ ์๋ํ๋ ์ฑ๋ฅ์ ๊ธฐ๋กํ์๋ค.
ํนํ DQN์ ํน์ ์์ ์์ 30๋ง ์ด์์ ๋ณด์์ ๊ธฐ๋กํ์์ผ๋ฉฐ, ์ดํ ํ๊ท ์ ์ผ๋ก 1๋ง ์ด์์ ๋ณด์์ ์ง์์ ์ผ๋ก ์ ์งํ์๋ค.
๊ทธ๋ํ์์๋ DQN์ ๊ธ๊ฒฉํ ๋ณด์ ์์น์ผ๋ก ์ธํด ์ผ๋ถ ๊ฐ์ด ์ ๋ณด์ด์ง ์์ ์ ๋๋ก ํ์ต ์ฑ๋ฅ์ด ๊ธ์ฆํ๋ ๋ชจ์ต์ ํ์ธํ ์ ์์๋ค.
์ด๋ฒ ์คํ์ ํตํด DQN์ด ์ฅ๊ธฐ์ ์ผ๋ก Q-learning๋ณด๋ค ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ณด์ด๋ฉฐ, ์ผ์ ๊ธฐ์ ์ดํ ํญ๋ฐ์ ์ธ ํ์ต ์ฑ๋ฅ์ ๊ธฐ๋กํ๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค. ๊ทธ๋ฌ๋ ๋ช ๊ฐ์ง ํ๊ณ์ ์ด ์กด์ฌํ๋ฏ๋ก, ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํ ์ถ๊ฐ ์ฐ๊ตฌ๊ฐ ํ์ํ๋ค.
โ Q๊ฐ ๊ณผ์ถ์ (Overestimation) ๋ฌธ์ ํด๊ฒฐ
โ Q-learning๋ณด๋ค ์์ ์ ์ธ ํ์ต ๊ฐ๋ฅ