OpenAI GYM - CartPole with Deep Q-Network

MinSeok_CSEยท2025๋…„ 2์›” 18์ผ

OpenAi Gym

๋ชฉ๋ก ๋ณด๊ธฐ
2/2

๐ŸŽ“ CartPole ์‹คํ—˜ ๊ฐœ์š”

๋ณธ ์‹คํ—˜์€ OpenAI Gym์˜ CartPole-v1 ํ™˜๊ฒฝ์—์„œ DQN(Deep Q-Network)์„ ์ ์šฉํ•˜์—ฌ ๊ฐ•ํ™” ํ•™์Šต์„ ์ง„ํ–‰ํ•œ ์‹คํ—˜์ด๋‹ค.

์ด์ „ ์‹คํ—˜์—์„œ๋Š” Q-learning์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํ•™์Šต ๋ฐฉ๋ฒ•์„ ์ ์šฉํ•˜์˜€์œผ๋ฉฐ, ํ–‰๋™ ์„ ํƒ ๋ฐฉ์‹(Exploration Strategy)์œผ๋กœ Epsilon-Greedy์™€ Softmax๋ฅผ ๋น„๊ตํ•˜์˜€๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, Epsilon-Greedy ๋ฐฉ์‹์ด ๋” ํšจ๊ณผ์ ์ธ ํ•™์Šต ์„ฑ๋Šฅ์„ ๋ณด์˜€๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฒˆ ์‹คํ—˜์—์„œ๋Š” ์ถ”๊ฐ€์ ์ธ ํ–‰๋™ ์„ ํƒ ๋ฐฉ์‹ ์‹คํ—˜ ์—†์ด Epsilon-Greedy ํƒ์ƒ‰๋ฒ•์„ ์ ์šฉํ•˜์—ฌ DQN ํ•™์Šต์„ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

๋ณธ ๊ธ€์—์„œ๋Š” ์‹คํ—˜ ๊ณผ์ •๊ณผ ๊ฒฐ๊ณผ ๋ถ„์„์— ์ง‘์ค‘ํ•˜๋ฉฐ, ๊ตฌ์ฒด์ ์ธ ์ฝ”๋“œ ๊ตฌํ˜„๋ณด๋‹ค๋Š” ์‹คํ—˜์˜ ํ•ต์‹ฌ ๊ฐœ๋… ๋ฐ ๊ตฌ์กฐ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ฐ ์ดˆ์ ์„ ๋งž์ถ˜๋‹ค.

๐ŸŽ“ CartPole ํ™˜๊ฒฝ ์ •๋ณด ๋ฐ ์„ค๋ช… (DQN ์ ์šฉ)

CartPole ํ™˜๊ฒฝ์€ ๊ฐ•ํ™” ํ•™์Šต ์‹คํ—˜์—์„œ ๊ณ ์ „ ์ œ์–ด(Classic Control) ๋ฌธ์ œ๋กœ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋ฉฐ, DQN(Deep Q-Network)์„ ํ™œ์šฉํ•œ ํ•™์Šต ์‹คํ—˜์— ์ ํ•ฉํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด ํ™˜๊ฒฝ์—์„œ๋Š” ์ˆ˜๋ ˆ(Cart) ์œ„์— ๋ง‰๋Œ€(Pole)๋ฅผ ์„ธ์šด ์ƒํƒœ์—์„œ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋‹ค.

๐Ÿ›  ์‹ค์Šต ํ™˜๊ฒฝ

์‚ฌ์šฉํ•œ ํ™˜๊ฒฝ : Anaconda, PyCharm
๊ฐ•ํ™” ํ•™์Šต ํ™˜๊ฒฝ : OpenAI Gym
ํŒŒ์ด์ฌ ๋ฒ„์ „ : 3.8

Action Space (์ด์‚ฐ์  ํ–‰๋™ ๊ณต๊ฐ„)

CartPole์€ ์ด์‚ฐ์ ์ธ ํ–‰๋™ ๊ณต๊ฐ„(Discrete Action Space)์„ ๊ฐ€์ง„๋‹ค.

  • Discrete(2): ๋‘ ๊ฐœ์˜ ํ–‰๋™(0 ๋˜๋Š” 1)๋งŒ ์„ ํƒ ๊ฐ€๋Šฅ
    ๊ฐ€๋Šฅํ•œ ํ–‰๋™:
    • 0: ์ˆ˜๋ ˆ(Cart)๋ฅผ ์™ผ์ชฝ์œผ๋กœ ์ด๋™
    • 1: ์ˆ˜๋ ˆ(Cart)๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™

DQN์€ ์—ฐ์†์ ์ธ ์ƒํƒœ ๊ณต๊ฐ„(Continuous State Space)์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์‹ ๊ฒฝ๋ง ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ์กด Q-learning์ฒ˜๋Ÿผ ์ƒํƒœ๋ฅผ ์ด์‚ฐํ™”(Discretization)ํ•  ํ•„์š” ์—†์ด ๊ทธ๋Œ€๋กœ ๋„คํŠธ์›Œํฌ์˜ ์ž…๋ ฅ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Observation Space (์—ฐ์†์ ์ธ ์ƒํƒœ ๊ณต๊ฐ„)

CartPole ํ™˜๊ฒฝ์˜ ๊ด€์ธก ๊ณต๊ฐ„(Observation Space)์€ ์—ฐ์†์ ์ธ ์ƒํƒœ ๋ณ€์ˆ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ์‹ ๊ฒฝ๋ง์„ ํ†ตํ•ด ์ง์ ‘ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ƒํƒœ ๋ฒกํ„ฐ๋Š” 4์ฐจ์› ์—ฐ์†๊ฐ’ ๋ฒกํ„ฐ ํ˜•ํƒœ๋กœ ์ œ๊ณต๋จ
  • ๊ฐ ์ƒํƒœ(State)๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”์†Œ๋ฅผ ํฌํ•จ
    1. Cart Position (์ˆ˜๋ ˆ์˜ ์œ„์น˜)
    2. Cart Velocity (์ˆ˜๋ ˆ์˜ ์†๋„)
    3. Pole Angle (๋ง‰๋Œ€์˜ ๊ฐ๋„)
    4. Pole Angular Velocity (๋ง‰๋Œ€์˜ ๊ฐ์†๋„)
  • ์ƒํƒœ ๋ณ€์ˆ˜ ๊ฐ’์˜ ๋ฒ”์œ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
    • ์ตœ๋Œ“๊ฐ’(Observation High): [4.8, โˆž, 0.42, โˆž]
    • ์ตœ์†Ÿ๊ฐ’(Observation Low): [-4.8, -โˆž, -0.42, -โˆž]

DQN์—์„œ๋Š” ์—ฐ์†์ ์ธ ์ƒํƒœ๋ฅผ ์ง์ ‘ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ์‹ ๊ฒฝ๋ง์„ ํ†ตํ•ด Q๊ฐ’์„ ์˜ˆ์ธกํ•œ๋‹ค. ๋”ฐ๋ผ์„œ Q-learning์—์„œ ํ•„์š”ํ–ˆ๋˜ ์ด์‚ฐํ™”(Discretization) ๊ณผ์ •์ด ๋ถˆํ•„์š”ํ•˜๋ฉฐ, ๋ณด๋‹ค ์ •๋ฐ€ํ•œ ํ•™์Šต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

DQN๊ณผ CartPole์˜ ํŠน์ง•

  • ์ด์ „ ์‹คํ—˜(Q-learning)๊ณผ์˜ ์ฐจ์ด์ 

    • Q-learning์—์„œ๋Š” ์ด์‚ฐํ™”๋œ Q-table์„ ์‚ฌ์šฉ โ†’ DQN์€ ์‹ ๊ฒฝ๋ง์„ ์ด์šฉํ•˜์—ฌ Q๊ฐ’์„ ๊ทผ์‚ฌ
    • ์—ฐ์†์ ์ธ ์ƒํƒœ ๊ณต๊ฐ„์„ ๊ทธ๋Œ€๋กœ ํ•™์Šต ๊ฐ€๋Šฅ โ†’ Q-table์ด ํ•„์š” ์—†์Œ
  • DQN์„ ํ™œ์šฉํ•œ ์žฅ์ 

    • ์—ฐ์†์ ์ธ ์ƒํƒœ ๋ณ€์ˆ˜๋ฅผ ๊ทธ๋Œ€๋กœ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์–ด ๋” ์„ธ๋ฐ€ํ•œ ํ•™์Šต ๊ฐ€๋Šฅ
    • ๊ฒฝํ—˜ ์žฌํ˜„(Replay Buffer)๊ณผ ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ(Target Network)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋” ์•ˆ์ •์ ์ธ ํ•™์Šต ๊ฐ€๋Šฅ
    • 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๊ฐ’์˜ ๊ธ‰๊ฒฉํ•œ ๋ณ€ํ™” ๋ฐฉ์ง€, ํ•™์Šต ์•ˆ์ •์„ฑ ์ฆ๊ฐ€)

DQN ํ•™์Šต ๊ณผ์ •

๋ณธ ๋ฒจ๋กœ๊ทธ์—์„œ๋Š” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์‹คํ—˜์— ์ง„ํ–‰ํ•œ ์ฝ”๋“œ ๊ตฌ์„ฑ๋„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1๏ธโƒฃ ํ™˜๊ฒฝ ์ดˆ๊ธฐํ™” (env.reset())
CartPole ํ™˜๊ฒฝ์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
ํ™˜๊ฒฝ์—์„œ ๋ฐ˜ํ™˜๋œ ์—ฐ์†์ ์ธ ์ƒํƒœ ๋ฒกํ„ฐ(์œ„์น˜, ์†๋„, ๊ฐ๋„, ๊ฐ์†๋„)๋ฅผ ํ•™์Šต์— ํ™œ์šฉํ•œ๋‹ค.
2๏ธโƒฃ ์‹ ๊ฒฝ๋ง์„ ํ†ตํ•œ Q๊ฐ’ ์˜ˆ์ธก
ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์‹ ๊ฒฝ๋ง(Policy Network)์— ์ž…๋ ฅํ•˜์—ฌ ๊ฐ ํ–‰๋™(0 ๋˜๋Š” 1)์— ๋Œ€ํ•œ Q๊ฐ’์„ ์˜ˆ์ธกํ•œ๋‹ค.

  • ์‹ ๊ฒฝ๋ง์˜ ์ž…๋ ฅ(Input):
    • ์—ฐ์†์ ์ธ ์ƒํƒœ ๋ฒกํ„ฐ (Cart ์œ„์น˜, ์†๋„, ๋ง‰๋Œ€ ๊ฐ๋„, ๊ฐ์†๋„)
  • ์‹ ๊ฒฝ๋ง์˜ ์ถœ๋ ฅ(Output):
    • ๊ฐ ํ–‰๋™์— ๋Œ€ํ•œ Q๊ฐ’ [Q(s, 0), Q(s, 1)]

3๏ธโƒฃ ํƒ์ƒ‰(Exploration)๊ณผ ํ™œ์šฉ(Exploitation) ์„ ํƒ

  • Epsilon-Greedy ํƒ์ƒ‰๋ฒ•์„ ์ ์šฉํ•˜์—ฌ ๋ฌด์ž‘์œ„ ํ–‰๋™(ํƒ์ƒ‰)๊ณผ ์ตœ์  ํ–‰๋™(ํ™œ์šฉ) ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•œ๋‹ค.
  • ํƒ์ƒ‰๋ฅ (ฮต, Exploration Rate)์€ ์ ์ง„์ ์œผ๋กœ ๊ฐ์†Œํ•˜์—ฌ ํ•™์Šต ์ดˆ๋ฐ˜์—๋Š” ํƒ์ƒ‰์„ ๋งŽ์ด ์ˆ˜ํ–‰ํ•˜๊ณ , ํ›„๋ฐ˜์—๋Š” ์ตœ์  ์ •์ฑ…(10%)์„ ์„ค์ •ํ•˜์—ฌ ์ตœ์†Œ 10% ํ™•๋ฅ ๋กœ ํƒ์ƒ‰์„ ํ•˜๋„๋ก ํ•˜์˜€๋‹ค.

4๏ธโƒฃ ํ™˜๊ฒฝ ์ƒํ˜ธ์ž‘์šฉ (env.step(action))
์„ ํƒํ•œ ํ–‰๋™์„ ํ™˜๊ฒฝ์— ์ ์šฉํ•˜๊ณ , ๋‹ค์Œ ์ƒํƒœ, ๋ณด์ƒ, ์ข…๋ฃŒ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค.

  • ๋ณด์ƒ ์‹œ์Šคํ…œ:
    • ๋งค ํƒ€์ž„์Šคํ…๋งˆ๋‹ค +1 ๋ณด์ƒ ๋ถ€์—ฌ
    • ๋ง‰๋Œ€๊ฐ€ ์“ฐ๋Ÿฌ์ง€์ง€ ์•Š๋Š” ๋™์•ˆ ๋ณด์ƒ์ด ์ง€์†์ ์œผ๋กœ ์ฆ๊ฐ€
    • ๋ง‰๋Œ€๊ฐ€ ๋นจ๋ฆฌ ์“ฐ๋Ÿฌ์งˆ ๊ฒฝ์šฐ ํŒจ๋„ํ‹ฐ๋ฅผ ๋ถ€์—ฌ reward = min(-(200 - cnt), -100)

5๏ธโƒฃ ๊ฒฝํ—˜ ์ €์žฅ (Replay Buffer ํ™œ์šฉ)

  • (ํ˜„์žฌ ์ƒํƒœ, ํ–‰๋™, ๋ณด์ƒ, ๋‹ค์Œ ์ƒํƒœ, ์ข…๋ฃŒ ์—ฌ๋ถ€) ์ •๋ณด๋ฅผ Replay Buffer[50000]์— ์ €์žฅํ•œ๋‹ค.
  • ์ผ์ • ํฌ๊ธฐ ์ด์ƒ ์ €์žฅ๋˜๋ฉด, ๋ฏธ๋‹ˆ๋ฐฐ์น˜๋ฅผ ์ƒ˜ํ”Œ๋งํ•˜์—ฌ ํ•™์Šต์„ ์ง„ํ–‰ํ•œ๋‹ค.

6๏ธโƒฃ Q๊ฐ’ ์—…๋ฐ์ดํŠธ (DQN ์†์‹ค ํ•จ์ˆ˜ ์ ์šฉ)
์†์‹ค ํ•จ์ˆ˜๋กœ Huber Loss (Smooth L1 Loss)๋ฅผ ์ ์šฉํ•˜์—ฌ Q๊ฐ’์„ ์•ˆ์ •์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. Playing Atari with Deep Reinforcement Learning, 2015์—๋„ Huber Loss๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ์šฉํ•ด๋ณด์•˜๋‹ค.

  • DQN์˜ ์—…๋ฐ์ดํŠธ ๊ณต์‹ : Q(s,a)=r+ฮณmaxโกQโ€ฒ(sโ€ฒ,aโ€ฒ)Q(s,a) = r + \gamma \max Q'(s', a')

  • ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ(Target Network)๋ฅผ ํ™œ์šฉํ•˜์—ฌ Q๊ฐ’์˜ ๊ธ‰๊ฒฉํ•œ ๋ณ€ํ™”๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ํ•™์Šต ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•œ๋‹ค.

7๏ธโƒฃ ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ ์—…๋ฐ์ดํŠธ

  • ์ผ์ • ์—ํ”ผ์†Œ๋“œ๋งˆ๋‹ค ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ํ•™์Šต ์•ˆ์ •์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

8๏ธโƒฃ ์ข…๋ฃŒ ์กฐ๊ฑด ์ถฉ์กฑ ์‹œ ์—ํ”ผ์†Œ๋“œ ์ข…๋ฃŒ
๋ง‰๋Œ€๊ฐ€ ๊ธฐ์šธ์–ด์ง€๊ฑฐ๋‚˜ ์ˆ˜๋ ˆ๊ฐ€ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด ์—ํ”ผ์†Œ๋“œ ์ข…๋ฃŒ

  • ๋ชฉํ‘œ: ์—์ด์ „ํŠธ๊ฐ€ 600 ์Šคํ… ์ด์ƒ ์œ ์ง€ํ•˜๋„๋ก ํ•™์Šต

๐ŸŽ“ DQN ํ•™์Šต ๊ฒฐ๋ก 

๊ฒฐ๊ณผ์ ์œผ๋กœ DQN์„ ํ™œ์šฉํ•œ ํ•™์Šต์ด ์›ํ™œํ•˜๊ฒŒ ์ง„ํ–‰๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒ๊ฐ๋ณด๋‹ค ์ดˆ๋ฐ˜์— ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š๊ฒŒ ๋‚˜์™”์ง€๋งŒ ํ•™์Šต ์‹œ๊ฐ„์„ ๋Š˜๋ ค CartPole ํ™˜๊ฒฝ์˜ ๋ชฉํ‘œ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๊ทธ์ค‘์—์„œ๋„ Epsilon-Greedy ๋ฐฉ์‹์ด ํ•™์Šต ์†๋„์™€ ์ตœ์ข… ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ ์šฐ์ˆ˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์˜€๋‹ค.

๋ฐ˜๋ฉด, ฮต-ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์‹ ๊ฒฝ๋ง ๊ธฐ๋ฐ˜์œผ๋กœ ํ–‰๋™์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•(Dueling DQN, Double DQN ๋“ฑ)์„ ์ถ”๊ฐ€ ์‹คํ—˜ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ํ˜„์žฌ์˜ ๋ฐฉ์‹์€ ํ•™์Šต์ด ์ง„ํ–‰๋˜๋ฉด์„œ๋„ ์ผ์ • ํ™•๋ฅ ๋กœ ํƒ์ƒ‰์„ ์œ ์ง€ํ•˜์ง€๋งŒ, ๋ณด๋‹ค ์ •๊ตํ•œ ๋ฐฉ์‹์ด ์ถ”๊ฐ€๋œ๋‹ค๋ฉด ํ•™์Šต ํšจ์œจ์ด ๋” ํ–ฅ์ƒ๋  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค.

๋˜ํ•œ, ํƒ€๊ฒŸ ๋„คํŠธ์›Œํฌ๋ฅผ ํ™œ์šฉํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•™์Šต ์•ˆ์ •์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐ ํšจ๊ณผ์ ์ด์—ˆ์œผ๋ฉฐ, Huber Loss๋ฅผ ์ ์šฉํ•จ์œผ๋กœ์จ Q๊ฐ’์˜ ๊ธ‰๊ฒฉํ•œ ๋ณ€ํ™”๊ฐ€ ์ค„์–ด๋“ค๊ณ  ํ•™์Šต ๊ณผ์ •์ด ๋”์šฑ ๋ถ€๋“œ๋Ÿฌ์›Œ์ง€๋„๋ก ํ•˜์˜€๋‹ค.

๋ฐ˜๋Œ€๋กœ, Replay Buffer์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ’์ด ๋‚ฎ์„ ๊ฒฝ์šฐ ํ•™์Šต์ด ๋ถˆ์•ˆ์ •ํ•ด์ง€๋Š” ๊ฒฝํ–ฅ์„ ๋ณด์˜€๋‹ค. Replay Buffer๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ณผ๊ฑฐ ๊ฒฝํ—˜์„ ์žฌ์‚ฌ์šฉํ•จ์œผ๋กœ์จ Q๊ฐ’์„ ๋” ๋งŽ์ด ํ•™์Šตํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉฐ, ์ด๋Š” ํ•™์Šต ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๊ธฐ์—ฌํ•œ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์˜€๋‹ค.

์ด๋Ÿฌํ•œ ํŠน์„ฑ ๋•๋ถ„์— DQN์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ Epsilon-Greedy ๋ฐฉ์‹์ด ๋ณด๋‹ค ์œ ์—ฐํ•œ ํ•™์Šต์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์˜€์œผ๋ฉฐ, ์ตœ์ ์˜ ์ •์ฑ…์„ ์ฐพ๋Š” ๋ฐ ์žˆ์–ด ํšจ๊ณผ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์˜€๋‹ค.
ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ๊ณผ๋„ํ•œ ํ•™์Šต(episode 50000)์œผ๋กœ ์ธํ•ด ์˜ค๋ฒ„ํ”ผํŒ… ๊ฒฝํ–ฅ์ด ๋‚˜ํƒ€๋‚ฌ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ชฉํ‘œ๋Š” ๋‹ฌ์„ฑํ–ˆ์œผ๋‹ˆ ๋งŒ์กฑ...
๋ฐ‘์— ์˜์ƒ์€ ๋ ‰์ด ์•„๋‹ˆ๊ณ  ์ง„์งœ ์ €๋ ‡๊ฒŒ ํ•™์Šต๋จ...

์ดˆ๋ฐ˜ ํ•™์Šต(episode 10000): Q-learning์ด ๋” ๋น ๋ฅด๊ฒŒ ํ•™์Šต ์ง„ํ–‰

์ด์ „ Q-learning๊ณผ DQN์„ ์ ์šฉํ•˜์—ฌ CartPole ํ™˜๊ฒฝ์—์„œ ํ•™์Šต ์„ฑ๋Šฅ์„ ๋น„๊ตํ•˜์˜€๋‹ค.
์‹คํ—˜ ๊ฒฐ๊ณผ, ์ดˆ๊ธฐ ํ•™์Šต ๊ตฌ๊ฐ„์—์„œ๋Š” Q-learning์ด DQN๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ ๋ณด์ƒ์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๊ฒฝํ–ฅ์„ ๋ณด์˜€๋‹ค.

ํ›„๋ฐ˜ ํ•™์Šต(episode 20000~): DQN์ด ์••๋„์ ์ธ ์„ฑ๋Šฅ ํ–ฅ์ƒ

์ผ์ • ์—ํ”ผ์†Œ๋“œ ์ดํ›„, DQN์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋†’์€ ๋ณด์ƒ์„ ์–ป์œผ๋ฉฐ Q-learning์„ ์••๋„ํ•˜๋Š” ์„ฑ๋Šฅ์„ ๊ธฐ๋กํ•˜์˜€๋‹ค.
ํŠนํžˆ DQN์€ ํŠน์ • ์‹œ์ ์—์„œ 30๋งŒ ์ด์ƒ์˜ ๋ณด์ƒ์„ ๊ธฐ๋กํ•˜์˜€์œผ๋ฉฐ, ์ดํ›„ ํ‰๊ท ์ ์œผ๋กœ 1๋งŒ ์ด์ƒ์˜ ๋ณด์ƒ์„ ์ง€์†์ ์œผ๋กœ ์œ ์ง€ํ•˜์˜€๋‹ค.

๊ทธ๋ž˜ํ”„์—์„œ๋„ DQN์˜ ๊ธ‰๊ฒฉํ•œ ๋ณด์ƒ ์ƒ์Šน์œผ๋กœ ์ธํ•ด ์ผ๋ถ€ ๊ฐ’์ด ์ž˜ ๋ณด์ด์ง€ ์•Š์„ ์ •๋„๋กœ ํ•™์Šต ์„ฑ๋Šฅ์ด ๊ธ‰์ฆํ•˜๋Š” ๋ชจ์Šต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๐ŸŽ“ ํ–ฅํ›„ ์—ฐ๊ตฌ ๊ณ„ํš

์ด๋ฒˆ ์‹คํ—˜์„ ํ†ตํ•ด DQN์ด ์žฅ๊ธฐ์ ์œผ๋กœ Q-learning๋ณด๋‹ค ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ณด์ด๋ฉฐ, ์ผ์ • ๊ธฐ์  ์ดํ›„ ํญ๋ฐœ์ ์ธ ํ•™์Šต ์„ฑ๋Šฅ์„ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ช‡ ๊ฐ€์ง€ ํ•œ๊ณ„์ ์ด ์กด์žฌํ•˜๋ฏ€๋กœ, ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€ ์—ฐ๊ตฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๐Ÿ›  Double DQN ์ ์šฉ

โœ… Q๊ฐ’ ๊ณผ์ถ”์ •(Overestimation) ๋ฌธ์ œ ํ•ด๊ฒฐ

  • DQN์€ ํ•™์Šต ๊ณผ์ •์—์„œ Q๊ฐ’์ด ๊ณผ๋Œ€ํ‰๊ฐ€๋˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Œ
  • Double DQN์„ ์ ์šฉํ•˜๋ฉด, ์•ก์…˜ ์„ ํƒ๊ณผ Q๊ฐ’ ํ‰๊ฐ€๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ Q๊ฐ’์˜ ๊ณผ๋Œ€ํ‰๊ฐ€ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ์Œ

โœ… Q-learning๋ณด๋‹ค ์•ˆ์ •์ ์ธ ํ•™์Šต ๊ฐ€๋Šฅ

  • Double DQN์„ ์ ์šฉํ•˜๋ฉด, Q-learning์˜ ๋‹จ์ (๋ถˆ์•ˆ์ •ํ•œ ์—…๋ฐ์ดํŠธ)์ด ์ค„์–ด๋“ค์–ด ํ•™์Šต์ด ๋”์šฑ ์•ˆ์ •์ ์ด ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋จ

๐Ÿ“‘ Playing Atari with Deep Reinforcement Learning, 2015 ๋ฆฌ๋ทฐ

0๊ฐœ์˜ ๋Œ“๊ธ€