알파고에 대해 araboja

비오박·2025년 1월 20일

알파고

목록 보기
1/2

알파고를 알아보자 (feat. 위키피디아)

여러분, "알파고, 알파고" 많이 들어보셨죠? 하지만 도대체 알파고가 뭘 하는 놈인지, 왜 그렇게 대단한 건지 명확히 아시는 분들은 많지 않을 겁니다. 이번 포스팅은 알파고에 대한 궁금증을 풀고, "이게 바로 알파고였구나!" 하고 머리를 탕 치실 수 있도록 만들어졌습니다. 위키피디아를 참고하며 쉽게 풀어가 보겠습니다!


1. 알파고의 간략한 소개

"알파고(영어: AlphaGo)는 구글의 딥마인드가 개발한 인공지능 바둑 프로그램" 입니다.

바둑이라는 복잡한 게임에서 인공지능의 잠재력을 증명하며, 기술적 도약을 이룩한 상징적인 프로젝트죠. 알파고는 정식으로 2016년에 이름을 날렸습니다. 당시, 세계적인 바둑 기사 이세돌 9단을 꺾으며 전 세계를 충격에 빠뜨렸습니다.

1.1 알파고는 뭘 잘할까?

  • 자율 학습: 알파고는 바둑의 규칙만 주어지면, 인간의 데이터 없이 스스로 학습합니다.
  • 몬테카를로 트리 탐색: 알파고는 가능한 수를 빠르게 계산해 최적의 수를 찾아냅니다.
  • 정책 네트워크와 가치 네트워크: 바둑판 상태를 분석하고, 승리 확률을 계산하는 시스템입니다.

"알파고는 단순한 기계가 아니라 스스로 배우는 인공지능이다."

"알파고의 학습 속도는 인간 기사와 비교할 수 없을 정도로 빠릅니다. 하루에 수백만 번의 대국을 시뮬레이션할 수 있습니다."


2. 역사와 대전

2.1 인간 대 바둑(체스) 프로그램

  • 딥 블루 (Dip Blue) - 가리 카스파로프(Garry Kasparov) (1997)
    IBM 체스 인공지능 승리 이후 20여년 동안 바둑 프로그램의 인공지능은 인간 아마추어 기사 5단의 수준까지 도달했지만, 여전히 핸디캡 없이 프로 바둑 기사를 이길 수 없었다.
  • 젠(Zen) - 프로 기사 다케미야 마사키 (2012)
  • 크레이지 스톤(Crazy Stone) - 이시다 요시오(石田芳夫) (2013)

2.2 프로 바둑 기사와의 대국

  • 판 후이 2단과의 대국 (2015)
  • 구글 딥마인드 챌린지 매치 - 이세돌 9단과의 대국 (2016)
  • 프로 기사와의 온라인 대국에서 60연승 (2017)
  • 바둑의 미래 서밋 - 커제 9단과의 대국 (2017)

3. 재미있는 알파고 이야기

  • 비록 알파고한텐 졌지만, 오마이걸만 생각하면 행복한 세돌찡
  • 바둑입단 시험 부정행위 적발(2020)

  • 김은지 2단 AI 치팅 징계 (2020)

  • 명예 9단 알파고 기사 (2016)


4. 알파고의 작동 원리

알파고는 기본적으로 두 가지 주요 신경망과 강화학습(몬테카를로) 알고리즘으로 작동합니다.

4.1 정책 신경망(Policy Network)

"가능한 모든 수의 확률을 예측해, 최적의 수를 선택하는 신경망"

정책 신경망은 현재 바둑판 상태에서 가능한 모든 수를 예측하여 가장 적합한 수를 선택하는 데 사용됩니다.

  • 지도학습(Supervised Learning): 인간 바둑 기사의 기보를 학습하여 초기 정책망 구축.

  • 강화학습(Reinforcement Learning): 자가 대국(Self-Play)을 통해 성능을 강화.

  • 구현 예제:

    import tensorflow as tf
    from tensorflow.keras.layers import Dense, Input
    
    # 간단한 정책 신경망 구조 정의
    input_layer = Input(shape=(361,))  # 19x19 바둑판
    hidden_layer = Dense(256, activation='relu')(input_layer)
    output_layer = Dense(361, activation='softmax')(hidden_layer)
    
    policy_network = tf.keras.Model(inputs=input_layer, outputs=output_layer)
    policy_network.compile(optimizer='adam', loss='categorical_crossentropy')
    
    print(policy_network.summary())
  • 결과 출력:

    • 예: [0.01, 0.03, 0.85, ..., 0.02]
      각 수의 확률 분포를 출력하며, 높은 확률을 가진 수를 선택해 게임 진행.

4.2 가치 신경망(Value Network)

"현재 상태에서 승리 가능성을 평가하는 신경망"

가치 신경망은 현재 바둑판 상태의 승리 가능성을 평가합니다. 이 정보는 최적의 전략 설계 및 수 선택에 활용됩니다.

  • 구현 예제:

    import tensorflow as tf
    from tensorflow.keras.layers import Dense, Input
    
    # 간단한 가치 신경망 구조 정의
    value_input = Input(shape=(361,))  # 바둑판 상태
    value_hidden = Dense(128, activation='relu')(value_input)
    value_output = Dense(1, activation='sigmoid')(value_hidden)
    
    value_network = tf.keras.Model(inputs=value_input, outputs=value_output)
    value_network.compile(optimizer='adam', loss='mean_squared_error')
    
    print(value_network.summary())
  • 결과 출력:

    • 예: 0.72 # 현재 상태에서 승리할 확률
      이 승리 확률은 몬테카를로 트리 탐색(MCTS)와 결합되어 최적의 수를 선택하는 데 활용됩니다.

4.3 몬테카를로 트리 탐색(MCTS)

"가능한 모든 수를 시뮬레이션해 가장 높은 가치를 가진 수를 선택하는 알고리즘"

몬테카를로 트리 탐색(MCTS)은 정책 신경망과 가치 신경망을 기반으로 가능한 모든 수를 시뮬레이션하여 최적의 수를 선택합니다.

  • 시뮬레이션: 가능한 수를 반복적으로 탐색하여 높은 가치를 가진 수를 선택.

  • 정책 신경망의 역할: 각 수의 확률 분포 제공.

  • 가치 신경망의 역할: 상태의 승리 확률 평가.

  • 구현 예제:

    import numpy as np
    
    def mcts_simulation(policy, value, state):
        probabilities = policy(state)  # 각 수의 확률 분포
        outcomes = []
    
        for action, prob in enumerate(probabilities):
            if prob > 0.01:  # 낮은 확률의 수는 제외
                new_state = simulate_action(state, action)  # 가상의 수를 둠
                outcome = value(new_state)
                weighted_outcome = prob * outcome
                outcomes.append((action, weighted_outcome))
    
        best_action = max(outcomes, key=lambda x: x[1])[0]
        return best_action
  • 결과 출력:

    • 예: Action 12 chosen with weighted value 0.85
      최적의 수를 선택해 게임 진행.
  • probabilities의 역할:
    높은 확률을 가진 수일수록 탐색 과정에서 더 많은 리소스를 할당 ==> 최적의 수를 빠르게 찾는데 사용됨


5. 알파고의 역사

5.1 주요 이정표

  • 2015년: 알파고는 유럽 바둑 챔피언 판 후이(Fan Hui)를 상대로 5대 0 완승.
  • 2016년: 이세돌 9단을 4대 1로 꺾으며 역사적인 성과를 기록.
  • 2017년: 알파고 제로(AlphaGo Zero) 출시. 인간의 기보 없이 스스로 학습해 기존 알파고를 압도하는 실력을 보여줌.

5.2 변천사: 다 같은 알파고가 아니다

  • 선요약
    • 알파고 판: 인간 기보를 지도학습하여 첫 번째 성과를 달성.
    • 알파고 리: 가치 네트워크와 강화학습 도입으로 인간 프로를 압도.
    • 알파고 마스터: 온라인에서 실전 검증 및 성능 최적화.
    • 알파고 제로: 완전 자율 학습으로 인간 데이터를 초월.
    • 알파제로: 다양한 게임에서 범용 AI로 확장.
  • 알파고 판 (AlphaGo Fan)

    • 176개의 GPU가 사용된 분산 버전
    • 2015년 판 후이 2단과 대국에서 승리
    • 당시에는 '버전12'로 알려짐
  • 알파고 리 (AlphaGo Lee)

    • 48개의 TPU가 사용된 분산 버전
    • 2016년 3월 이세돌 9단과 대국에서 승리
      대국 당시에는 알파고 판에서 기계학습이 개선된 수준의 '버전18'이라는 정도만 알려졌었다. 하지만 2016년 5월 구글 I/O(개발자회의) 2016 컨퍼런스에서 구글은 자체 개발한 애플리케이션 집적회로(ASIC)인 TPU(Tensor Processing Unit)를 처음 소개하면서 이세돌 9단과 대국한 알파고는 TPU가 사용되었다고 설명했다.
  • 알파고 마스터 (AlphaGo Master)

    • 4개의 TPU가 사용된 단일 버전
    • 2017년 초 프로 바둑기사와 온라인 대국에서 60연승
    • 같은 해 5월 커제 9단과의 대결에서도 승
  • 알파고 제로 (AlphaGo Zero)

    • 4개의 TPU가 사용된 단일 버전으로 알파고의 최종 버전
    • 2017년 10월 19일 과학 학술지 네이처에 인간 지식 없이 바둑을 마스터하기(Mastering the game of Go without human knowledge)라는 제목의 논문 발표를 통해 소개
  • 알파 제로 (Alpha Zero)

    • 하나의 알고리즘으로 바둑, 체스, 쇼기 등의 보드게임에 적용되는 범용 인공지능
    • 2018년 12월 7일 자가학습을 통해 체스, 쇼기, 바둑을 마스터할 수 있는 범용 강화학습 알고리즘(A general reinforcement learning algorithm that masters chess, shogi, and Go through self-play)이라는 제목의 논문을 과학 학술지 사이언스에 발표

5.3 버전별 비교

버전학습 알고리즘하드웨어주요 성과
알파고 판- 지도학습 (SL): 인간 기보 약 30만 개 학습
- MCTS
1,202 CPU, 176 GPU판 후이 2단과 5전 전승 (2015)
알파고 리- SL + 강화학습 (RL): 자가 대국
- 가치 네트워크
- MCTS
48 TPU이세돌 9단과 5번기 4승 1패 (2016)
알파고 마스터- 강화학습 (RL): 자가 대국
- 개선된 MCTS
4 TPU"Master"로 60전 전승, 커제 9단 승리
알파고 제로- 자율 학습: 인간 기보 없이 자가 대국
- 단일 신경망
- MCTS
4 TPU알파고 리를 100전 전승으로 압도
알파제로- 범용 자율 학습: 바둑, 체스, 쇼기
- 단일 신경망
- MCTS
4 TPU각 게임 최고 AI를 능가, 범용 AI 입증

결론: 알파고의 발전 과정은 지도학습에서 강화학습, 그리고 자율 학습으로 이어지며, 하드웨어도 TPU를 적극 활용하여 연산 효율을 극대화하였습니다.

5.4 바둑 AI

  • 카타고
  • 절예
  • 한돌

마무리

다음 포스팅에서 더 흥미로운 이야기로 찾아뵙겠습니다.

1개의 댓글

comment-user-thumbnail
2025년 1월 20일

공감 꾸욱~누르고 갑니다^^ 블로그 부업관심 있으시면 제블로그도 방문해주세요^^ 따수운 하루되세요~~

답글 달기