๐Ÿš€ MuJoCo 3D Lunar Lander v1 โ€” Brave Brain (74% Success DQN)

๐Ÿ’ก 74.0% ์ฐฉ์ง€ ์„ฑ๊ณต๋ฅ  ๋‹ฌ์„ฑ! 3D MuJoCo ๋ฌผ๋ฆฌ ์—”์ง„ ๊ธฐ๋ฐ˜์˜ ์ฐฉ์ง€์„ (Lunar Lander)์„ ์‹ค์‹œ๊ฐ„ ๊ฑฐ๋ฆฌยท์ž์„ธ ๋ณด์ƒ ์—”์ง€๋‹ˆ์–ด๋ง(Reward Shaping)์„ ํ†ตํ•ด ์ •๋ฐ€ ์ œ์–ดํ•˜๋Š” Deep Q-Network(DQN) ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค.


๐ŸŽฅ ๋น„ํ–‰ ๋ฐ ์ฐฉ์ง€ ์‹œ์—ฐ (Demo)

๐Ÿ’ก ์ฐฉ์ง€์„ ์˜ ๋ชธํ†ต๊ณผ ๋‘ ๊ฐœ์˜ ์บก์А ๋‹ค๋ฆฌ๊ฐ€ MuJoCo ๋ฌผ๋ฆฌ ์—”์ง„์˜ ์‹ค์‹œ๊ฐ„ ์ถฉ๋Œ ํ•ด์„(d.contact)์„ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ์ฐฉ์ง€๋Œ€์— ์•ˆ์ฐฉํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Š ์‹คํ—˜ ์„ฑ๊ณผ ๋ฐ ํ‰๊ฐ€ ๊ฒฐ๊ณผ (50 Episodes Evaluation)

๋…๋ฆฝ๋œ 50๊ฐœ์˜ ๋ฏธํ•™์Šต ์‹œ๋“œ(Seed 5000 ~ 5049)๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์„ฑ๋Šฅ์„ ๊ฒ€์ฆํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

์ง€ํ‘œ (Metrics) 11๋ฒˆ ์…€ ๊ธฐ๋ณธํ˜• (Baseline) 3์ฐจ ์‹คํ—˜: ์šฉ๊ฐํ•œ ๋‘๋‡Œ (๋ณธ ๋ชจ๋ธ)
์™„๋ฒฝ ์ฐฉ์ง€ ์„ฑ๊ณต๋ฅ  ~40.0% (20/50ํŒ) 74.0% (37/50ํŒ) ๐Ÿ†
์ถ”๋ฝ (Crash) 12ํŒ 0ํŒ (0.0%)
์ฐฉ์ง€๋Œ€ ๋ฐ– ์ฐฉ์ง€ 18ํŒ 13ํŒ (26.0%)
์—ํ”ผ์†Œ๋“œ ํ‰๊ท  ๋ณด์ƒ -12.4 +89.8
  • ๋‹จ 1ํšŒ์˜ ์ถ”๋ฝ์ด๋‚˜ ๋’ค์ง‘ํž˜ ์—†์ด 100% ์•ˆ์ „ํ•˜๊ฒŒ ์ฐฉ์ง€ํ–ˆ์œผ๋ฉฐ, ๊ทธ์ค‘ 74%๊ฐ€ ์ฐฉ์ง€๋Œ€ ์ •์ค‘์•™ ์•ˆ์ „ ์˜์—ญ์— ์™„๋ฒฝ ์•ˆ์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ ํ•ต์‹ฌ ๋ณด์ƒ ์—”์ง€๋‹ˆ์–ด๋ง (Reward Shaping)

๊ธฐ์กด ๊ธฐ๋ณธ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ(11๋ฒˆ ์…€)๋Š” ์ฐฉ์ง€ ์‹œ์ ๊นŒ์ง€ ์˜๋ฏธ ์žˆ๋Š” ๋ณด์ƒ์ด ์ฃผ์–ด์ง€์ง€ ์•Š๋Š” 'ํฌ์†Œ ๋ณด์ƒ(Sparse Reward)' ๋ฌธ์ œ์™€ ์—ฐ๋ฃŒ ๋ฒŒ์ ์— ๋Œ€ํ•œ ๊ณตํฌ๋กœ ์ธํ•ด ๋ณด์ˆ˜์ ์ธ ํ–‰๋™(์ฐฉ์ง€๋Œ€ ๋ฐ– ์ฐฉ์ง€)์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค.

๋ณธ ๋ชจ๋ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณด์ƒ ์„ค๊ณ„๋ฅผ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค:

  1. ์‹ค์‹œ๊ฐ„ ์ง€์ˆ˜ ๊ฑฐ๋ฆฌ ๋ณด๋„ˆ์Šค: $$R_{\text{dist}} = +0.5 \times \exp(-\text{๊ฑฐ๋ฆฌ})$$ ์ฐฉ์ง€๋Œ€ ์ค‘์‹ฌ $(0, 0.05)$์— ๊ฐ€๊นŒ์›Œ์งˆ์ˆ˜๋ก ๋งค ์Šคํ…๋งˆ๋‹ค ๋ˆ„์  ๊ฐ€์‚ฐ์ ์„ ์ฃผ์–ด ์ค‘์‹ฌ๋ถ€๋กœ ๋Œ์–ด๋‹น๊น€.
  2. ์ˆ˜์ง ์ž์„ธ ๋ณด๋„ˆ์Šค: $$R_{\text{att}} = +0.1 \times \cos(\theta)$$ ๋ชธ์ฒด๊ฐ€ ๊ธฐ์šธ์–ด์ง€์ง€ ์•Š๊ณ  ๋˜‘๋ฐ”๋กœ ์„œ ์žˆ๋„๋ก ์œ ๋„ํ•˜์—ฌ ์ฐฉ์ง€ ์‹œ ์ „๋ณต ๋ฐฉ์ง€.
  3. ๊ณผ๊ฐํ•œ ๊ธฐ๋™ ๋…๋ ค (Fuel Tuning): ์—ฐ๋ฃŒ ์†Œ๋ชจ ๋ฒŒ์ ์„ $0.3 \to 0.05$(๊ฐ€์šด๋ฐ), $0.03 \to 0.005$(์ธก๋ฉด)๋กœ ๋‚ฎ์ถ”์–ด ์ ๊ทน์ ์ธ ์ œ์–ด ๋ถ„์‚ฌ ์œ ๋„.
  4. ์‹ ๊ฒฝ๋ง ์šฉ๋Ÿ‰ ํ™•์žฅ: ์€๋‹‰ ๋…ธ๋“œ๋ฅผ $128 \to 256$์œผ๋กœ ํ™•์žฅํ•˜์—ฌ ๋น„์„ ํ˜• ๋ฌผ๋ฆฌ ์—ญํ•™์„ ์ •๋ฐ€ ํ•™์Šต.

๐Ÿ’ป ๋น ๋ฅธ ์‹œ์ž‘ ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ• (Quick Start)

1. ํ™˜๊ฒฝ ์„ค์น˜

pip install mujoco gymnasium torch numpy

2. ์ฐฉ์ง€์„  ํ‰๊ฐ€ ์‹คํ–‰

์ €์žฅ์†Œ๋ฅผ ํด๋ก ํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ๋“ค์„ ๋‚ด๋ ค๋ฐ›์€ ํ›„ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

python mujoco_lander.py lander_brave_brain.pth

3. ํŒŒ์ด์ฌ ์ฝ”๋“œ์—์„œ ์ง์ ‘ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

import torch
from mujoco_lander import ๋ชจ๋ธ์ƒ์„ฑ, ์‹ค์‹œ๊ฐ„๋ณด๋„ˆ์Šค_์ฐฉ์ง€ํ™˜๊ฒฝ

# 1. 256 ์€๋‹‰ ๋…ธ๋“œ Q-Network ๋กœ๋“œ
model = ๋ชจ๋ธ์ƒ์„ฑ(์ƒํƒœ์ˆ˜=8, ํ–‰๋™์ˆ˜=4, ์€๋‹‰=256)
model.load_state_dict(torch.load('lander_brave_brain.pth', map_location='cpu'))
model.eval()

# 2. MuJoCo ํ™˜๊ฒฝ ์ดˆ๊ธฐํ™”
env = ์‹ค์‹œ๊ฐ„๋ณด๋„ˆ์Šค_์ฐฉ์ง€ํ™˜๊ฒฝ()
obs, _ = env.reset(seed=42)

done = False
while not done:
    with torch.no_grad():
        action = int(model(torch.from_numpy(obs)).argmax())
    obs, reward, terminated, truncated, info = env.step(action)
    done = terminated or truncated

print(f"์ตœ์ข… ๊ฒฐ๊ณผ: {info['๊ฒฐ๊ณผ']}")

๐Ÿ“‚ ํŒŒ์ผ ๊ตฌ์กฐ

  • lander_brave_brain.pth: 74% ์ฐฉ์ง€ ์„ฑ๊ณต DQN ์‹ ๊ฒฝ๋ง ๊ฐ€์ค‘์น˜ (279KB)
  • mujoco_lander.py: MuJoCo XML + ํ™˜๊ฒฝ ํด๋ž˜์Šค + ์ถ”๋ก  ํ†ตํ•ฉ ์‹คํ–‰ ํŒŒ์ผ
  • lander_demo.mp4: ๋น„ํ–‰ ๋ฐ ์ฐฉ์ง€ ์‹œ์—ฐ ์˜์ƒ (16KB)
  • README.md: ๋ชจ๋ธ ์นด๋“œ ๋ฐ ์„ฑ๋Šฅ ๋ฆฌํฌํŠธ
Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading

Evaluation results

  • Landing Success Rate (%) on MuJoCo Custom 3D Lunar Lander
    self-reported
    74.000