1P by neo 24일전 | favorite | 댓글과 토론

LAN 파티

  • 16년 동안 매년 친구들과 LAN 파티를 개최해 왔음.
  • 파티는 4-5일 동안 진행되며, 최대 12명이 참여함.
  • 주로 Dota 2를 플레이하지만, Counter-Strike, Warcraft 3 등 다양한 게임도 즐김.
  • 팀 선택이 어려워 자동화 시스템을 개발하게 됨.

Dota 2

  • Dota 2는 5v5로 진행되며, 불균형한 팀은 게임의 재미를 떨어뜨림.
  • 참가자들의 실력 차이가 커서 팀 선택이 어려움.

팀 선택 방법

  • 두 명의 리더가 번갈아 가며 팀원을 선택하는 방식 사용.
  • 그러나 이 방식은 시간이 많이 걸리고, 비슷한 팀이 자주 만들어져 지루함.

수동 팀 선택의 문제점

  • 시간이 많이 걸리고 지루해짐.
  • 비슷한 팀이 자주 만들어짐.
  • 리더 역할을 맡고 싶어하는 사람이 없음.
  • 불균형한 팀이 자주 만들어짐.

코드로 해결하기

  • 데이터 수집 후 Colab에서 Elo 레이팅 시스템을 사용하여 팀을 자동으로 생성함.
  • 각 플레이어는 1000 Elo 포인트로 시작하며, 승리 시 20 포인트를 얻고 패배 시 20 포인트를 잃음.

개선 1: 데이터 여러 번 통과

  • Elo 시스템에서 더 높은 Elo를 가진 플레이어를 이기면 더 많은 포인트를 얻음.
  • 여러 번 데이터를 통과하여 Elo를 계산함.

개선 2: ML 모델처럼 만들기

  • Elo를 모델로 사용하여 팀 승리 확률을 예측함.
  • L2 손실 함수를 정의하고, 백프로파게이션을 통해 모델을 최적화함.

개선 3: 역사적 결과를 확률적으로 만들기

  • 과적합을 방지하기 위해 역사적 게임의 승리 확률을 75% 또는 95%로 설정함.
  • 이를 통해 모델이 모든 게임을 암기하지 않고 일반화할 수 있도록 함.

결과

  • 새로운 시스템은 불균형한 팀 크기에서도 승리 확률을 예측할 수 있음.
  • 다음 LAN 파티를 위한 첫 번째 라인업이 준비됨.