Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
Tags
- 로제타폴드
- 딥러닝
- COVID
- 생명정보학
- 인공지능 수학
- 시그모이드
- SVM
- Java
- RNN
- BLaST
- CNN
- 자바
- 바이오파이썬
- AP
- 파이썬
- 오류역전파
- 바이오인포매틱스
- 캐글
- Kaggle
- AP Computer Science A
- 인공신경망
- 알파폴드
- 이항분포
- 결정트리
- 단백질 구조 예측
- bioinformatics
- 생물정보학
- 서열정렬
- 인공지능
- ncbi
Archives
- Today
- Total
데이터 과학
CNN을 이용한 미니알파고 본문
이번에는 합성곱 신경망을 활용한 알파고 프로그램을 제작해 보겠습니다.
바둑 프로그램 전체를 제작하는 것은 환경적으로 어려움이 있으니 미니 알파고 프로그램을 제작해 보겠습니다.

CNN → 다음 착수 확률을 예측하는 모델부터 시작하세요.
추천 개발 단계
1단계: 바둑판 표현
19×19은 어렵기 때문에 처음에는 9×9 바둑 추천합니다.
입력 데이터는 보통 이렇게 만듭니다.
board_state.shape = (채널수, 9, 9)
예:
채널 1: 내 돌 위치
채널 2: 상대 돌 위치
채널 3: 빈 칸
채널 4: 패 여부 / 착수 금지 위치
2단계: CNN 정책망 만들기
처음 목표는 “이 상황에서 어디에 둘까?”를 예측하는 것입니다.
import torch
import torch.nn as nn
import torch.nn.functional as F
class PolicyNet(nn.Module):
def __init__(self, board_size=9):
super().__init__()
self.conv1 = nn.Conv2d(4, 64, kernel_size=3, padding=1)
self.conv2 = nn.Conv2d(64, 128, kernel_size=3, padding=1)
self.conv3 = nn.Conv2d(128, 128, kernel_size=3, padding=1)
self.head = nn.Conv2d(128, 1, kernel_size=1)
def forward(self, x):
x = F.relu(self.conv1(x))
x = F.relu(self.conv2(x))
x = F.relu(self.conv3(x))
x = self.head(x)
x = x.view(x.size(0), -1)
return F.log_softmax(x, dim=1)
출력은 9×9 = 81칸 중 어디에 둘지에 대한 확률입니다.
3단계: 학습 데이터 준비
가장 쉬운 방법은 기보 데이터를 사용하는 것입니다.
입력:
현재 바둑판 상태
정답:
실제 사람이 둔 위치
즉, CNN이 사람의 착수를 따라 하도록 학습합니다.
4단계: 합법수 처리
CNN이 이미 돌이 있는 곳에 두려고 할 수 있으므로, 착수 가능한 곳만 남기고 나머지는 확률을 제거해야 합니다.
policy[illegal_moves] = -float("inf")
move = torch.argmax(policy)
5단계: 몬테카를로 트리 탐색 MCTS 추가
CNN만 쓰면 “그럴듯한 수”는 두지만 깊은 계산은 약합니다.
그래서 다음 단계로는 CNN + MCTS 구조가 좋습니다.
구조는 이렇게 갑니다.
현재 바둑판
→ CNN이 좋은 후보 수 제안
→ MCTS가 몇 수 앞까지 탐색
→ 최종 착수 선택
프로그램 코드 입력중
'인공지능 > 딥러닝 -파이썬 인공지능' 카테고리의 다른 글
| ReLU (Rectified Linear Unit) 함수 (0) | 2025.10.26 |
|---|---|
| 하이퍼볼릭 탄젠트 함수 (0) | 2025.10.22 |
| RNN (0) | 2025.10.22 |
| 마르코프 모델과 벨만 방정식 (0) | 2025.10.22 |
| CNN, MNIST 코드 분석 (0) | 2025.09.10 |