시즌 1 · 알파고편 / PART 7 · PART 7 · AlphaZero (2017) / Ch 3 · 틱택토/커넥트포 학습

커넥트포 — 같은 알고리즘, 다른 규칙

커넥트포 (Connect Four) — 7x6 보드, 4개를 가로/세로/대각선으로 일렬.

📖 커넥트포 규칙 차이
  • 중력: 돌은 위에서 떨어져 가장 아래 빈자리에 놓임
  • 가능한 수 = 7개 (열 선택), 위치는 자동 결정
  • 승리 조건: 4개 일직선 (가로/세로/대각선)
  • 무승부: 보드 가득
🎯 인터페이스 구현 — 어떻게 바뀌나
class Connect4:
    def possible_moves(self):
        # 빈 자리가 있는 열들
        return [c for c in range(7) if self.board[0, c] == 0]
    
    def play(self, col):
        # 그 열의 가장 아래 빈자리에 돌 떨어짐
        new = self.board.copy()
        for r in range(5, -1, -1):
            if new[r, col] == 0:
                new[r, col] = self.turn
                break
        return Connect4(new, ...)
    
    def is_terminal(self):
        return self._check_4_in_a_row() or board_full()
    
    # to_input(), winner_value(): 거의 동일
  

"가능한 수"가 자리 (r, c) → 열 번호 (0~6)로 바뀜. 그 외 같음.

💡 신경망 출력 크기 차이
  • 틱택토: 9 자리 → policy 9개
  • 커넥트포: 7 열 → policy 7개
  • 바둑 7x7: 49 자리 → policy 49
  • 바둑 19x19: 361 자리 → policy 361+1 (pass)

같은 신경망 구조, 마지막 출력 크기만 조정.

📊 커넥트포 AlphaZero 학습 (가상 시뮬)

AlphaZero 알고리즘을 커넥트포에 적용하면 예상:

  • ~10분 학습 (3x3 틱택토보다 큼)
  • 완벽한 플레이 도달 (커넥트포는 풀려있음)
  • 좋은 오프닝 + 함정 전술 학습

커넥트포는 1988년에 풀린 게임 — 정답: 첫 수 가운데 두면 1번 플레이어 승. AlphaZero도 이 결론에 도달.

📖 다양한 게임에서 AlphaZero 성과

DeepMind 후속 연구 + 오픈소스 구현:

  • 오델로/리버시: 격파 (사람 챔피언 압도)
  • 구오: 격파 (작은 보드 정복)
  • 험브로닉스: 자체 학습 가능
  • 스타크래프트(부분): 적용 가능 (AlphaStar는 별도)

두 명 둘러 가며 두는 결정적 게임이면 거의 다 가능. 진짜 일반.