Deep Learning이 Devil's Wheel을 만났을 때: European Roulette를 위한 RL (Part 1)

발행: (2025년 12월 13일 오전 11:25 GMT+9)
8 min read
원문: Dev.to

Source: Dev.to

파트 1: 이론, 수학, 그리고 아키텍처

면책 조항

만약 이 기술들 중 하나로 수익을 내게 된다면, 내 몫을 기대하고 있어요. 진심으로, 맥주 한 잔이나 레포에 커밋 하나면 충분합니다. 하우스는 언제나 이기지만, 적어도 우리는 그 과정에서 멋진 것을 배우고 있잖아요.

왜 유럽식 룰렛에 RL 에이전트를 만들까?

유럽식 룰렛의 하우스 엣지는 약 2.7 % 입니다. 카지노는 장기적으로 이깁니다, 그게 전부죠. 도전 과제는 하우스를 이기는 것이 아니라, 순수한 무작위성, 재앙적인 노이즈, 그리고 47‑차원 행동 공간(대부분의 선택이 손실을 초래함) 속에서 강화 학습(RL)의 한계를 시험하는 것입니다. 이런 적대적인 환경에서도 에이전트가 무언가를 배운다면, exploitable 패턴이 존재하는 곳에서는 무엇을 할 수 있을지 상상해 보세요.

행동 공간

유럽식 룰렛은 37개의 포켓(0‑36)을 가집니다. 외부 베팅을 포함하면 행동 공간은 47개의 이산 행동으로 확장됩니다:

행동설명배당
0‑36단일 번호에 대한 스트레이트 베팅35:1
37‑38색상 베팅 (빨강/검정)1:1
39‑40짝/홀 (홀/짝)1:1
41‑42높음/낮음 (1‑18 대 19‑36)1:1
43‑4512개 구간 (첫 번째/두 번째/세 번째 12개)2:1
46PASS – “베팅 안 함” (종종 가장 현명한 선택)0

에이전트는 어디에 베팅할지 뿐 아니라, 암묵적으로 얼마나 위험을 감수 할지도 결정해야 합니다.

상태 표현

  1. History Buffer – 마지막 20번 회전(정수 0‑36). 학습자를 위한 시퀀스를 제공하지만 통계적으로는 의미가 없습니다.
  2. Gain Ratio – 현재 자본을 초기 자본으로 나눈 비율. 이는 의사결정에 맥락을 제공한다(예: 이득이 있으면 보수적으로, 손해가 있으면 공격적으로).

자본 맥락을 포함하는 것이 필수적이었습니다; 이를 제외하면 에이전트는 50 % 상승했든 80 % 하락했든 동일한 결정을 내렸습니다.

보상 구조

결과보상
스트레이트 베팅 승리+35
빨강/검정, 홀/짝, 높음/낮음 베팅 승리+1
모든 베팅 패배–1
PASS 행동0

에피소드는 보통 -1, -1, -1, +1, -1, -1, …와 같이 나타납니다 – 양의 보상이 희박하고, 음의 보상이 조밀합니다.

네트워크 아키텍처 (BatchNorm‑기반 DQN)

Embedding Layer (0‑36 → 64‑dim)  
→ Flatten (20 × 64 = 1280)  
→ BatchNorm Dense (1280 → 128)  
→ BatchNorm Dense (128 → 128)  
Gain Network (gain ratio: 1 → 32)  
→ Concatenate (128 + 32 = 160)  
→ Dense (160 → 64)  
→ Dense (64 → 47) → Q‑values for all actions

왜 LSTM 대신 BatchNorm을 사용할까?
룰렛 회전은 독립적이며, 모델링할 시간적 의존성이 없습니다. LSTM은 노이즈에 맞추려다 불안정한 Q‑값 추정으로 이어집니다. BatchNorm은 각 미니배치 내 활성화를 정규화해 그래디언트 지형을 부드럽게 하고 수렴을 가속화합니다. 실제로 BatchNorm 버전이 더 빠르게 수렴했고, 더 안정적인 정책을 만들었습니다.

Double DQN 업데이트

표준 DQN은 동일한 네트워크가 행동을 선택하고 평가하기 때문에 Q‑값을 과대평가하는 경향이 있습니다. Double DQN은 온라인 네트워크로 행동을 선택하고 타깃 네트워크로 평가함으로써 이 편향을 완화합니다:

# Double DQN target computation
target = r + γ * Q_target(s_next, argmax_a Q_online(s_next, a))
Q(s, a) ← Q(s, a) + α * (target - Q(s, a))

과대평가는 대부분의 행동이 손실을 보는 룰렛에서 특히 문제가 됩니다; 에이전트가 베팅이 수익을 낸다고 착각하면 PASS가 최적이라는 사실을 발견하는 데 시간이 오래 걸집니다.

LSTM 예측기 (이상 탐지기)

베팅 결정을 내리기 위해서가 아니라 오직 다음 회전을 예측하기 위해 별도의 LSTM 모델을 구축했습니다:

Embedding (0‑36 → 32‑dim)  
→ LSTM (64 hidden)  
→ LSTM (64 hidden)  
→ Dropout (p=0.2)  
→ Linear → Softmax (37 classes)

학습 세부사항

  • 손실: 교차 엔트로피
  • 옵티마이저: Adam
  • 배치 크기: 64

완전히 무작위 데이터에서는 정확도가 2.7 %(1/37) 정도에 머무릅니다, 예상대로입니다. 아주 작은 편향(예: 특정 구역에 0.5 % 높은 확률)이 도입되면 LSTM은 수백 번의 회전 후 이를 감지하기 시작합니다. 이 모델은 수익을 창출하지는 않지만 효과적인 이상 탐지기로 활용될 수 있으며, 다중 모델 앙상블에 통합될 수 있습니다.

하드웨어 및 성능

  • GPU: RTX 3060
  • 학습 속도: 64 시퀀스 배치당 약 15 ms
  • PyTorch: model.to('cuda') 로 GPU 가속을 활성화; CPU 전용 학습은 실질적으로 너무 느립니다.

메타‑러닝 아이디어 (프리뷰)

단일 에이전트가 직접 행동을 배우는 대신, 메타‑에이전트언제 서로 다른 서브 모델(예: BatchNorm DQN, LSTM 예측기, 편향 탐지기)을 신뢰할지 학습할 수 있습니다. 이 계층적 접근법은 시리즈의 후속 파트에서 탐구됩니다.

Back to Blog

관련 글

더 보기 »