테트리스의 micro action을 한 칸씩 학습하면 credit assignment가 길어진다. 매크로 정책은 현재 블록의 회전과 열을 한 번에 후보로 만들고, 결과 보드의 특징을 평가해 선택한다. 이 소스는 Mixture of Experts 아이디어를 작은 규칙 모델로 구현한다.

테트리스 MoE 매크로 정책: 네 전문가로 착수 고르기 핵심 도식
그림. 구멍·줄·굴곡·높이 전문가의 점수를 합쳐 한 번의 매크로 행동을 선택한다.

후보 만들기

C++ 엔진의 `tetris_eval_macro_candidates`가 가능한 `(rotation, column)` 후보마다 지운 줄, 구멍, 표면 굴곡, 높이, game over 여부를 반환한다. Python은 엔진 핸들을 ctypes로 호출해 같은 규칙 결과를 사용한다.

네 전문가

  • A는 구멍 최소화를 가장 중요하게 본다.
  • B는 줄 제거에 큰 가중치를 준다.
  • C는 표면 굴곡을 줄인다.
  • D는 전체 높이를 낮춘다.

모든 전문가는 game over에 큰 음수 점수를 준다. gate 설정은 네 점수를 가중합하고 최대 후보의 index를 반환한다. 현재 구현은 학습된 neural gate가 아니라 설명 가능한 선형 gate다.

왜 유용한가

각 지표의 역할을 분리하면 실패 판에서 어느 전문가가 결정을 지배했는지 추적할 수 있다. DQN이나 LLM의 teacher, 안전 fallback, imitation label 생성기로도 사용할 수 있다.

개선 방향

고정 가중치만으로 모든 단계에 대응하기 어렵다. 초반에는 높이와 굴곡, 위기에는 구멍과 game over를 더 중시하도록 판 상태 기반 gate를 학습할 수 있다. 단, train/test에서 동일한 C++ 평가를 재사용해 정답을 누출하지 않도록 구분해야 한다.

관련 소스

  • `moe_macro_policy.py`: 네 전문가와 gate
  • `llm_macro_client.py`: LLM 매크로 경로
  • `vlm_macro_client.py`: VLM 매크로 경로
  • C++ 엔진의 macro candidate 평가 함수