• 검색 결과가 없습니다.

STEAM R&E 연구결과보고서

N/A
N/A
Protected

Academic year: 2022

Share "STEAM R&E 연구결과보고서"

Copied!
42
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

STEAM R&E 연구결과보고서

(오목 인공지능 게임 운용을 통한 출력시간과 승률 연구)

2017. 11. 30.

이리고등학교

(2)

< 연구 결과요약 >

과 제 명 오목 인공지능 게임 운용을 통한 출력시간과 승률 연구

연구목표

제 4차 산업혁명으로 인한 인공지능의 관심이 커지고 있는데, 최근 알파고와 이세돌의 바둑대결로 인공지능에 대한 관심이 더욱 커졌다. 많은 기업들 또한 인공지능 개발에 몰두하고 있다. 이에 우리는 인공지능과 머신러닝 연구에 도전하고 싶었고 온라인 운용을 통해 우리의 인공지능이 어느 정도의 능력을 갖는지 알아보고자 했다.

연구개요 및 내용

□ 이론적 배경 및 선행연구

○ 이론적 배경 : 인공지능이 대세인 최근 알파고와 이세돌 간의 대결, AI의 거듭되는 발전, AI를 이루는데 중요한 요소인 소프트웨어 기술, 이를 모두 아우르고 있는 현 시대를 표현하는 4차 산업혁명이 주요 화제로 떠오르고 있다. 거기에다가 10대 남학생들이 학업 다음으로 가장 많이 접하는 것이 게임이다. 그래서 프로그래 밍에 관심이 있는 학생들이 모임으로써 3박자가 동시에 맞물려서 게임 AI를 제작해보자고 주제를 정함.

○ 선행연구

∙인공지능에 적용시킬 알고리즘, 훈련시킬 머신러닝 운용, 프로그래밍 언어를 조사 ∙비슷한 주제를 가지고 선행 연구한 논문이 있는지를 조사

∙기존의 오목 인공지능을 도입한 게임을 직접 플레이함으로써 어떤 방식으로 인공지능이 작동하는지 분석

□ 연구방법

○ 정보 검색 및 연구 방법 탐색

∙인공지능에 사용되는 알고리즘, 인공지능과 관련된 논문, 프로그래밍 등의 인터넷 검색을 통해 연구 분야와 관련된 지식들을 학습함.

∙얻은 지식을 종합하여 오목을 두는 프로그램을 만들고 프로그램의 학습 데이터로 사전에 다른 인공지능과의 경기와 사람과 사람간의 경기를 기보로 작성하여 넣는 것을 연구 방법으로 정함.

∙인공지능에 사용되는 분석법인 ‘Alpha-beta pruning’ 알고리즘과 ‘Bruteforce’ 알고리즘을 찾았으나

‘Alpha-beta pruning’ 알고리즘은 이해를 하지 못하여 ‘Bruteforce’ 알고리즘을 채용함.

∙머신러닝 인공지능 라이브러리인 텐서플로를 이용하려 했으나, 우리들이 계획하는 머신러닝 인공지능과 맞지 않는 이미지 분석 머신러닝 라이브러리이기 때문에 사용하지 못함. 그래서 파이썬을 통해 머신러닝 코드를 새로 짜고 사전에 작성한 기보를 데이터로 넣어 학습시킴.

○ 서버 컴퓨터 구축

(3)
(4)
(5)

< 연구 결과보고서 >

1. 개요

가. 연구주제선정이유

작년 한 해를 뜨겁게 달궜던 사건 중 하나를 뽑아보자면 3월에 있었던 알파고와 이 세돌의 대결이다. 이 대결에서 알파고가 1패를 한 기록을 빼면 무패전승의 경기를 치르고 은퇴했다. 한 술 더 떠서 지난달에는 알파고 제로가 공개되었는데 기존의 알 파고를 능가하는 성능을 보이며 다시 한 번 세계를 놀라게 했다. 이에 프로그래밍에 관심이 있어서 인공지능을 주제로 R&E 논문을 쓰기로 결정했다.

선행연구 조사를 위해 인공지능을 주제로 작성된 논문에 관해 검색해 보던 중 대한 민국에서 인공지능에 관련된 논문이 없는 것에 가깝다는 기사를1) 보고 IT기술

강국인데도 불구하고 기술 발전에만 급급하고 기초 이론을 연구하지 않는 문제점을 그대로 답습하고 있다는 현실이 나타나고 있단 점이 충격적이었다. 이에 비록 고등 학생이지만 한국의 인공지능에 관한 연구에 일조를 하고 싶었다.

나. 연구 진행 단계

▪ 서적을 통한 프로그래밍/알고리즘 학습 ▪ 서버/클라이언트 구축

▪ 인공지능/머신러닝 구축

▪ 연구1 : 온라인 운용을 통한 인공지능 수정 ▪ 연구2 : 인공지능과 머신러닝에 따른 승률분석

▪ 연구3 : 인공지능과 머신러닝, 경기 진행정도에 따른 실행시간 분석

2. 연구수행내용

가. 이론적 배경 및 선행연구 1) 선행연구

가) 안일준, 박인규(2010), 유전 알고리즘과 게임 트리를 병합한 오목 인공지능 설계 및 GPU 기반 병렬 처리 기법, 정보과학회논문지 : 시스템 및 이론 제 37 권 제 2 호

오목 인공지능에 관련된 국내 유일의 논문이다. 인공지능은 오목에서 발생할 수 있는 모델을 21가지로 분류해 각각에 대한 평가함수가 존재하며 Minimax알고리즘을 통해 최적의 수를 찾아아나가는 방식과 유전 알고리즘을 이용하여 인공지능을 발전 시키는 방식을 둘 다 사용하며 각각의 인공지능을 CPU에서 계산했을 때와 GPU에서 계산했을 때, 각각의 성능차이를 비교한실험이다. CPU가 GPU보다 400배 이상의 성능 을 보인다.

1) [단독] 인공지능 연구에 한국은 없다, 2017.03.01. 매일경제

(6)

나) YIXIN

YIXIN은 Gomocup에 2011년 처음 등장한 오목 인공지능으로써 2013년을 기점으로 4 년 연속 1위를 하고 있는 인공지능이다. 현재 소스코드는 Github를 통해 배포되고 있으며2) C언어로 작성됐다. YIXIN 자체도 프로그램으로 배포되고 있다. 인공지능 의 흑백 여부 결정을 떠나서 어떤 룰로 대국을 할 것인지, 무 적수 사용을 허용할 것인지, 판 크기, 연산 내역 출력여부, 수 무르기, 기보 저장하기 등의 기능을 가 지고 있다. 프로그램으로도 오목 인공지능으로도 현 재로서는 최정상이다.

2) 이론적 배경 가) 오목

오목은 15줄짜리 오목판에 흑돌과 백돌이 번갈아 가면서 하나씩 착수해 돌 5개 연 속으로 놓이면 이기는 게임이다. 룰의 종류는 Free, Renju, RIF가 있다. Free 룰은 위의 룰 하나만 있는 룰이다. Renju 룰은 흑이 필승하는 것을 제어하기 위해 흑의 삼삼, 사사, 장목을 금지시킨 룰이다. RIF 룰은 Renju 룰까지도 흑이 필승한다는3) 이유 때문에 이를 막기 위해 연구한 룰이다. 현재 국제대회에서는 RIF룰을 채택하 고 있으며 일반인들이 이 룰을 적용하기에는 상당히 복잡하다. 간단하고 빠르게 제 작가능하면서 일반인들이 평소에 잘 쓰는 Free 룰을 채택했다.

나) 파이썬(Python)

파이썬(Python)은 1990년 암스테르담의 귀도 반 로섬이 개발한 인터프리터언어이 다. 국내에서는 아직 인기를 끌지 않고 있지만 문법이 쉽고, 직관적이고, 간결하 고, 개발 속도와 실행속도가 빠르다는 점에서 전 세계적으로 인기가 상승하고 있 는 언어이다.4)Python의 유연성 때문에 인공지능을 프로그래밍하기에 적합하다.5)

다) C#

C#은 Microsoft에서 개발한 객체지향 프로그래밍 언어이다. .NET Framework를 가 장 직접적으로 반영하는 만큼 .NET Framework를 강하게 의존한다. 6).NET

(7)

라) 자바(Java)

자바(Java)는 Sun Microsystems의 제임스 고슬링 연구팀이 개발한 객체지향 프로 그래밍 언어이다. 플랫폼에 구애받지 않는 JVM이라는 가상머신에서 컴파일된 코드 가 독립적으로 작동한단 점이 최대 장점이어서 웹 애플리케이션과의 특성과 맞아떨 어져 서버 개발용을 많이 사용한다.8)

마) Alpha Beta Pruning/순차검색 알고리즘

Alpha Beta Pruning 알고리즘은 Minimax 알고리즘의 평가되는 노드의 수를 줄이기 위해 개발된 알고리즘이다. 다음에 평가할 노드의 가중치가 이전에 평가한 노드의 가중치보다 낮을 경우 해당 노드는 탐색하지 않고 그 다음 노드를 탐색할지 결정한 다.9) Minimax 알고리즘 보다는 실행시간이 훨씬 줄어들지만 정확성이 떨어진다.

순차검색 알고리즘은 리스트에서 특정 값을 찾는 알고리즘 중 하나로 Brute Force 와 비슷한 방식이다. Brute Force 알고리즘이 암호학에서 무차별적으로 대입하는 기법이라면 순차검색 알고리즘은 리스트에서 찾고자 하는 값을 맨 처음부터 끝까지 차례대로 찾아나가는 알고리즘이다.10)리스트 길이가 길수록 비효율적이지만 가장 단순하고 구현하기 쉽다.

바) 강화학습

강화학습은 기계학습의 한 영역으로 특정 환경내의 인공지능이 현재의 상태를 인 식하고 선택 가능한 행동 중 보상을 최대화하는 행동 및 그 순서를 선택하도록 학 습시키는 것이다. 입출력 쌍으로 이루어진 훈련집합을 제시하지 않으며 잘못된 행 동에 대해서도 명시적으로 정정이 일어나지 않는다는 점에서 지도학습과는 차이점 이 있다.11)

나. 연구주제 선정 과정

인공지능에 적용시킬 게임으로 오목을 선정하기 전에 인공지능에 적용시킬 게임 의 후보들을 물색했다. 그 결과, 오목, 장기, 체스, 오델로 등을 1차 후보로 뽑 았으며 제작하기 적합한 게임으로써 오목과 장기로 후보가 좁혀졌다. 어떤 것이 연구에 적합할까 심각하게 고민하던 중 한양대학교의 김광 교수님께 자문을 받았 으며 인간도 장기의 승리 패턴을 파악하기 어렵다는 답변에 따라 오목 AI를 제작 하기로 결정했다.

8) 위키백과 ‘자바’ 항목

9) 위키백과 ‘알파-베타 가지치기’ 항목 10) 위키백과 ‘순차검색 알고리즘’항목 11) 위키백과 ‘강화학습’ 항목

(8)

다. 연구방법

1) 알고리즘 직접고안

인공지능이나 통신부분, 머신러닝 알고리즘은 수집된 자료를 바탕으로 다른 도움 없이 시행착오를 거쳐 제작했다. 알고리즘은 다시 draw.io라는 사이트를 통해 디지 털화 시켰다.

처음 계획은 Alpha Beta Pruning기법을 변형한 알고리즘으로 제작하려고 했다. 오 목을 둘 때 특정 상황에 맞는 착수를 한다는 인간의 사고원리를 모방하여 착수지점 을 중심으로 특정 모델을 만족하는가를 검사해 최적의 수를 찾는 알고리즘을 고안 했지만 다음과 같은 문제점이 있다.

가) 3목일 때 한쪽을 막아야 하는 것이 일반적인 착수다. 그러나 이미 한쪽 끝이 막힌 3목에 대해 다른 쪽을 막아야 하는가라는 의문을 제기했다. 같은 경우로 처리한다면 인공지능은 극도로 수비적인 태세를 보여 공격하지 않기 때문에 승 률이 오르지 않는다. 다른 경우로 처리한다면 인공지능은 처리해야할 모델이 하 나가 더 늘어나게 되는데 한 모델에 대해 8방향을 모두 검사하므로 실행시간은 그만큼 증가한다.

나) 오목에서 나올 수 있는 모든 수를 ‘특정 모델’로만 계산한다는 아이디어는 인간의 사고방식을 일반화한 것이 아니다. ‘특정 모델’은 인공지능의 승리나 패배에 영향을 주는 모델이다. 예를 들어 인공지능이 백돌일 때 흑의 초수에 대 해서 인공지능은 이를 ‘특정 모델’로 분류해야하는가의 문제에 직면한다. 특 정한 데이터를 갖고 있지 않은 이상 인공지능은 위의 경우에 대해 자신에게로의 손익을 판단할 기준이 없기 때문에 예시로 든 것과 같은 경우들은 ‘특정 모 델’이 아니다.

(9)

위의 2가지의 문제점 때문에 인공지능 알고리즘을 변경했다. 인터넷을 통해 한 블로거가 사용한 방식을 가공하기로 했다.12)인간의 사고방식을 좀 더 일반화 시키 면서도 실행시간을 단축시킬 수 있는 알고리즘이었다.

순차검색 알고리즘을 적용한 알고리즘으로 판 전체를 일일이 검사한다. 실제로 판 전체를 검사하기 위해서는 225번의 실행횟수를 거쳐야하며 각 지점에 대해 다 시 8방향으로 돌의 존재 유무를 따져야 하므로 1800번의 조건문을 거치게 된다.

물론 돌이 있다면 거쳐야하는 실행문은 기하급수적으로 늘어난다. 그러나 오목이 라는 단순한 게임에 단순한 인공지능을 적용하고 머신러닝 알고리즘이 복잡하지 않기 때문에 실행시간에 지장이 없다.

해당 블로거의 알고리즘이다.

■ 착수된 지점을 중심으로 8방향에 모두 1점의 가중치를 부여한다.

■ 검사지점이 비어있고 그 지점을 중심으로 8방향에 돌이 존재한다면 해당 방향 으로 검사를 진행한다.

■ 2의 방향으로 진행할 때 같은 색깔의 돌이 존재한다면 count라는 임시변수의 값을 1증가시킨다. 색깔이 같지 않다면 검사를 종료하고 다음 방향으로 나아가거 나 다음 검사지점에서 검사를 진행한다.

■ count가 검사지점의 가중치보다 크면 가중치의 값을 count로 변경한다. 그렇지 않으면 다음 검사지점에서 검사를 진행한다.

■ 판 전체에 대한 가중치 검사가 완료되면 다시 한 번 판 전체를 검사하면서 가 중치가 가장 큰 지점에 착수한다.

(10)

직접 손으로 그린 알고리즘. 왼쪽 알고리즘과 오른쪽 알고리즘은 서로 다른 알고 리즘이다. 오른쪽 알고리즘 2장은 서로 같은 알고리즘이다. 왼쪽 알고리즘 뒤쪽에 는 8방향에 대해 어떻게 적용할 것인가를 적어놓았다.

2) 인터넷/서적 정보 탐색

프로그래밍할 때 발생하는 오류나 모르는 사항에 대해서는 구글을 통해 검색했 으며 가장 많이 참조한 사이트는 Stackoverflow이고 그 외에는 Wikidocs나 개인 이 운영하는 블로그(Tistory 등)이다.

3) 머신러닝 데이터 제작

인공지능이 기보를 생성하기 전에 머신러닝을 적용하고 싶다면 데이터가 일정량 이 필요하다. 클라이언트 구 버전을 조금 수정해 YIXIN이 사용자들과 경기한 기보 를 복기하여 머신러닝 프로그램에서 사용할 수 있도록 번역하는 프로그램을 통해 데이터를 제작했다.

(11)

text translator로 오른쪽에 있는 기존에 저장된 기보를 복기시켜서 다시 왼쪽에 있는 기보 형태로 저장되었다. 클라이언트의 게임 진행중 White의 x,y가 뒤바뀌어 서 저장되는 오류가 있지만 게임진행에는 지장이 없다.

라. 연구 활동 및 과정 1) 전반적인 프로그램 구상도

인공지능을 중심으로 서버와 클라이언트를 제작했다. 이를 이용해 인공지능에 대한 접근성을 높이고 서버 컴퓨터에 모든 자료를 저장할 수 있다. 클라이언트는 사용자들의 편의를 위해 GUI방식으로 제작이 가능한 C#으로 프로그래밍했고, 서 버는 Java, 인공지능과 머신러닝 프로그램은 Python으로 프로그래밍했다.

프로그램 전반적인 구상도. C#, Java, Python의 클라이언트, 서버, 인공지능이 한 데 묶여있고 데이터베이스와 알고리즘을 통해 인공지능을 구축한다. 다른 오목 인 공지능과 대결하려는 구상안도 넣었다.

2) 서버와 클라이언트

자바로 제작된 서버에서는 클라이언트와 인공지능 사이의 신호를 알기 쉽게 분류 하고 관리하기 위해 ConnectTag.java 파일을 만들어 받은 메시지를 하이픈(-)을 기 준으로 가장 앞에 있는 문자열을 이용해 신호를 분류했다. 하이픈 뒤에는 서버에서 게임이 시작할 때마다 생성되는 인공지능에게 부여된 번호와 클라이언트에서 수집 한 아이피를 기록한다. 이 정보들을 HashMap을 통해 값을 매칭시켜 관리한다. 태그 중 place 태그는 클라이언트와 인공지능 간의 양방향으로 전송되는 태그가 아닌 클 라이언트에서 서버로 인공지능에서 서버로만 전송되는 착수되었을 때 위치 정보를 담은 신호이다. 이 태그를 이용해 게임 로그를 생성하고 이 로그는 인공지능의 머 신러닝을 위한 데이터로 활용된다.

(12)

실행 순서는 Server→Python(AI)→Client 순으로 실행해야한다. 서버가 실행되면 인공지능과 통신하기 위한 8700 포트와 클라이언트와 통신하기 위한 8765 포트가 개방되고 대기한다. Python 인공지능이 8700 포트에 접속하면 AI에서 메시지를 받 는 쓰레드(thread)와 AI로 메시지를 전송하는 쓰레드 두 개를 생성하고 대기한다.

클라이언트가 8765포트로 접속하면, 연결된 Socket의 값을 가진 Client 객체가 서 버에서 생성되고 해당 객체 연결된 Socket을 이용해 Socket으로부터 메시지를 받는 쓰레드와 Socket으로 메시지를 보내는 쓰레드 2개를 생성한다. 서버에서 위의 작업 을 마치면 클라이언트에서 시작버튼을 누를 때 까지는 대기한다. 시작 버튼을 누르 면 create 태그가 클라이언트에서 서버로, 서버에서 인공지능으로 이동하여 클라 이언트의 게임을 맡아 진행할 인공지능 객체를 생성하고 인공지능에게 부여된 번호 를 Id 태그를 이용해 서버로 전송하고 HashMap 매칭 관리를 한다. 이후 game 태그 를 이용해 Client→Server→Python(AI), Python(AI)→Server→Client 로 이동하며 게임이 진행된다. game태그가 전송될 때 Python(AI)와 Client는 각각 착수 지점의 정보 태그인 place 태그를 같이 서버로 전송하고 게임을 진행한다. 인공지능은 게 임이 종료되었다고 판단하면, 활동을 중지하고 대기한다. Client에서도 게임이 종 료되었다고 판단하면, 사용자에게 게임이 종료되었음을 알리고 finish 메시지를 전송해 활동이 중지된 인공지능 객체를 제거한다. 게임이 종료되면 서버와 소켓을 바로 끊고 다시 연결하는 부분을 클라이언트에 구현하였으나, 오류 발생으로 제거 했다.

구분 AI Client Server

Rev Send Rev Send Rev Send

Id-[AIid]-[IpAddr] x

(13)

▴맨 처음에 계획했던 태그들과 인공지능, 클라이언트, 서버에서 각각 주고받는지에 대 한 표. 차후에 finish 태그가 추가된다.

▴통신을 위해 필요한 알고리즘이나 플로우로 화이트보드에 한가득 채웠다.

(14)

(15)

나) 인공지능의 연산코드를 메서드(method)로 따로 분리하여 color라는 인자값을 받아 검사지점의 같은 색깔이 존재하는가를 확인하는 것이 아니라 입력받은 color값이 존재하는지를 검사한다.

다) 2의 방식을 이용해 인공지능의 돌과 사용자의 돌에 대한 각각의 가중치 계산이 가능해졌다. 같은 색깔에 대한 가중치의 합산해 count를 계산해서 현재 검사지 점의 가중치보다 크면 그 가중치의 값은 count가 된다. 즉, 검사지점 주위로 어 느 색의 돌이 더 많이 있는지가 가중치를 결정하는 요소이다.

▴ 왼쪽이 Ver10.12 인공지능, 오른쪽이 Ver10.31 인공지능이다. 왼쪽은 가중치를 계산하는 코드를 접어놓은 상태이고 오른쪽은 calculatePosition이라는 메서드로 따 로 분리한 상태다. 오른쪽의 calculatePostion메서드는 2개로 각각 인공지능의 색깔 과 사용자의 색깔을 입력받는다.

그러나 이 인공지능에도 문제점이 있었다.

가) 오목은 돌이 5개로 연속적으로 놓여있을 때 이기는 게임이다. 두 버전의 인공지능들은 가중치를 계산할 때 이런 점을 전혀 고려하지 않았다. 계산상으 론 문제가 없지만 돌이 연속적으로 놓여있느냐를 중점적으로 계산하지 않았기

(16)

때문에 이상한 착수를 하는 경우가 있었다.

▴1번의 대표적인 문제점. 분명히 (F,8),(J,8)이 3목을 막는 위치다. 그 지점들이 3 점으로 책정되어있음에도 불구하고 가중치가 같으면 랜덤으로 착수하는 코드 때문에 (H,9)에 착수했다.

나) 머신러닝 데이터를 가공하지 않고 그대로 사용한단 점이 문제가 있다. 인 공지능의 이익을 극대화하고 사용자의 이익을 최소화해야 한다는 개념이 없어 인공지능이 쉽게 진다고 판단했다.

▪ Ver11.2의 인공지능은 Ver10.31의 인공지능의 문제점을 해결하기 위해 코드 를 수정했다.

Ver10.31의 1번 문제점을 해결하기 위해 돌이 연속적으로 놓여있으면 unt에 더해야하는 값이 증가하도록 했다.

Ver10.31의 2번 문제점을 해결하기 위해 머신러닝 데이터를 불러올 때 color 위치에 상대 돌과 같은 값이 있으면 해당 가중치는 2배가 되도록 저장 한다.

(17)

은 Ver10.31의 인공지능 계산부분의 한 방향을 나타낸 코드다. 위에는 count에 증가 하는 k를 더하고 있는 반면 아래에는 count에 1만 더하고 있다.

연속된 돌의 갯수 count계산

1 count+=1

2 count+=2 (count=3) 3 count+=3 (count=6) 4 count+=4 (count=10)

▴아래의 표는 연속된 돌의 개수에 따른 count의 값을 나타낸 것이다.

▴머신러닝 데이터를 불러오는 코드. 맨 아래 줄의 코드가 사용자의 color일 때 가 중치에 2배로 더하는 코드이다.

(18)

라) 머신러닝 프로그램 및 인공지능 적용 코드

인공지능을 학습시키기 위해서는 데이터가 필요하다. 인공지능에게 학습시킬 데 이터는 Color [x,y]의 형태로 이뤄져있으며 이를 머신러닝 프로그램에서 [color,x,y,turn,playCount,winCount,winRate]의 list형태로 변환시킨다. 과정 은 다음과 같다.

▪ Color [x,y]를 각각 color,x,y에 저장한다.

▪ 현재 줄 수를 turn에 저장한다.

▪ playCount는 기본적으로 한 list가 생성될 때마다 1로 초기화하며 1과 2를 모두 만족시키면 playCount를 1증가시키고 해당 list를 제거한다.

▪ 가장 마지막 줄에 있는 Color값을 승리한 Color로 인식하고 해당 Color값이 저장된 리스트의 winCount를 1증가시킨다.

▪ Winrate=WinCount/PlayCount, 즉 승률이다.

▪ 이렇게 생성된 list는 머신러닝 프로그램에서 저장한 txt의 한 줄로 입력이 된다.

▪ 이 과정이 txt파일을 한 개를 학습시킬 때의 과정으로 머신러닝하고자 하는 txt에 대해 똑같은 과정을 반복한다.

▪ 위의 과정을 모두 반복하면 머신러닝이 된 txt파일이 생성되며 인공지능은 해당 txt를 읽어 머신러닝 프로그램과 동일한 형태의 list로 저장한 뒤 머신러 닝 데이터를 적용하는 코드에서 검사지점의 x,y와 입력받은 color값, 현재의 turn 값이 동일하면 계산된 가중치에 Winrate 값을 합산한다. Ver.11.2는 txt 를 불러와 list로 저장하는 과정에서 상대 color에 대한 Winrate값을 두 배로 저장하도록 했다.

(19)

마) 실험 진행

실험은 접근성이 좋고 컴퓨터가 많은 사람들에게 공개된 과학동 4층에서 진행했다.

실험당일에 실험을 진행할 시간을 잡은 뒤 실험자들을 모았다. 처음에는 머신러닝 데이터가 없는 인공지능과 경기하며 일정 경기량을 충족하면 머신러닝 데이터를 10 배수씩 늘려서 경기를 계속 진행한다. 출력시간과 기보들은 서버로 백업되고 엑셀 로 다시 표와 그래프를 작성한다.

머신러닝 데이터를 얼마나 주입했는지에 따라 엑셀 파일들을 분류한다. 해당하는 경기들의 실행시간을 경기의 진행정도에 따라 세로로 정렬한 뒤 각 턴의 실행시간의 평균들과 한 경기에 대한 실행시간의 평균들을 계산한다. 다시 평균들의 그래프를 통해 자료를 분석한다.

▴점심시간에 학생들에게 인공지능과 경기하도록 하는 모습.

【머신러닝정도/경기진행정도에 따른 실행시간】

10개의 기보에서 800개의 기보까지 10배수로 증가시키면서 관찰한 머신러닝 프로그램의 실행시간 그래프이다.

(20)

■ 위 그래프에 대한 표이다.

머신러닝 데이터 수 sec byte 머신러닝 데이터 수 sec byte

10 0.012501717 3710 450 2.383136272 63093

20 0.260016918 6860 460 2.580147505 65618

30 0.048002958 9391 470 2.714155197 67424

40 0.750043392 11939 480 2.870164156 70043

50 0.09600544 13557 490 3.052174568 72645

60 0.123006821 15483 500 3.173181295 74014

70 0.198011398 20523 510 3.419195652 76149

80 0.237013578 22419 520 3.738213778 78847

90 0.279016256 24359 530 3.790216923 81802

100 0.325018644 26193 540 3.984227896 82745

110 0.378021479 28714 550 4.104234934 83671

120 0.444025755 30151 560 4.290245533 84989

130 0.493028164 31807 570 4.441254184 86712

140 0.560032129 32716 580 4.547260442 88599

150 0.590034008 34130 590 4.70726943 89925

160 0.638036489 35014 600 4.841276884 91061

170 0.690039629 35823 610 5.015286684 91858

180 0.736041784 36971 620 5.044288397 93321

190 0.785044909 37778 630 5.142294168 94545

200 0.827047586 38589 640 5.402308702 96057

210 0.934053421 40219 650 5.679324627 97223

220 0.994056302 40959 660 5.683325291 99268

230 1.055060148 41816 670 5.692325592 99728

240 1.085062027 41934 680 5.863335371 100228

250 1.106063128 42552 690 5.848334312 101090

260 1.119063854 42764 700 5.972341776 101490

270 1.182067633 43257 710 6.01934433 102587

280 1.230070353 43896 720 6.249357462 103020

290 1.215069771 44104 730 6.316361666 103389

300 1.284073591 44429 740 6.720384359 104862

310 1.278073072 44926 750 6.782387972 106740

320 1.368077993 45577 760 6.787388325 106981

330 1.43108201 46298 770 6.863392592 107122

(21)

■ 머신러닝을 진행하지 않은 인공지능이 백돌일 때 실행시간에 대한 각 턴에 대한 모든 경기들의 평균 그래프와 해당 표이다.

(22)

■ 머신러닝을 10개 진행한 인공지능의 실행시간에 대한 각 턴에 대한 모든 경기들의 평균 그래프와 해당 표이다.

(23)

■ 머신러닝을 20개 진행한 인공지능이 백돌일 때 실행시간에 대한 각 턴에 대한 모든 경기들의 평균 그래프와 해당 표이다.

(24)

■ 머신러닝을 30개 진행한 인공지능이 백돌일 때 실행시간에 대한 각 턴에 대한 모 든 경기들의 평균 그래프와 해당 표이다.

(25)

■ 머신러닝을 40개 진행한 인공지능이 백돌일 때 실행시간에 대한 각 턴에 대한 모든 경 기들의 평균 그래프와 해당 표이다.

(26)

■ 머신러닝을 50개 진행한 인공지능이 백돌일 때 실행시간에 대한 각 턴에 대한 모 든 경기들의 평균 그래프와 해당 표이다.

(27)

■ 머신러닝을 60개 진행한 인공지능이 백돌일 때 실행시간에 대한 각 턴에 대한 모 든 경기들의 평균 그래프와 해당 표이다.

(28)

■ 머신러닝을 70개 진행한 인공지능이 백돌일 때 실행시간에 대한 각 턴에 대한 모든 경기들의 평균 그래프와 해당 표이다.

(29)

■ 머신러닝을 80개 진행한 인공지능이 백돌일 때 실행시간에 대한 각 턴에 대한 모 든 경기들의 평균 그래프와 해당 표이다.

(30)

■ 머신러닝을 90개 진행한 인공지능이 백돌일 때 실행시간에 대한 각 턴에 대한 모 든 경기들의 평균 그래프와 해당 표이다.

(31)

■ 머신러닝을 100개 진행한 인공지능이 백돌일 때 실행시간에 대한 각 턴에 대한 모든 경기들의 평균 그래프와 해당 표이다.

(32)

■ 머신러닝을 진행하지 않은 인공지능이 흑돌일 때 실행시간에 대한 각 턴에 대한 모든 경기들의 평균 그래프와 해당 표이다.

(33)

■ 머신러닝을 10개 진행한 인공지능이 흑돌일 때 실행시간에 대한 각 턴에 대한 모 든 경기들의 평균 그래프와 해당 표이다.

(34)

■ 머신러닝을 20개 진행한 인공지능이 흑돌일 때 실행시간에 대한 각 턴에 대한 모 든 경기들의 평균 그래프와 해당 표이다.

(35)

■ 머신러닝을 30개 진행한 인공지능이 흑돌일 때 실행시간에 대한 각 턴에 대한 모 든 경기들의 평균 그래프와 해당 표이다.

(36)

■ 머신러닝을 40개 진행한 인공지능이 흑돌일 때 실행시간에 대한 각 턴에 대한 모든 경기들의 평균 그래프와 해당 표이다.

(37)

■ 머신러닝을 50개 진행한 인공지능이 흑돌일 때 실행시간에 대한 각 턴에 대한 모 든 경기들의 평균 그래프와 해당 표이다.

(38)

■ 머신러닝을 60개 진행한 인공지능이 흑돌일 때 실행시간에 대한 각 턴에 대한 모 든 경기들의 평균 그래프와 해당 표이다.

(39)

■ 백돌에 대해 위에서 설명한 내용을 종합한 그래프이다.

■ 흑돌에 대해 위에서 설명한 내용을 종합한 그래프이다.

(40)

■ 머신러닝 정도에 따른 승률

인공지능이 백돌일 때 머신러닝 정도에 따른 승률이다.

머신러닝 개수 전체 경기 수 승 패 승률

0 127 30 97 0.236220472

10 254 47 207 0.18503937

20 102 27 75 0.264705882

30 73 13 60 0.178082192

40 42 11 31 0.261904762

50 29 6 23 0.206896552

60 29 6 23 0.206896552

70 33 7 26 0.212121212

80 19 4 15 0.210526316

90 35 4 31 0.114285714

100 36 4 32 0.111111111

전체 870 211 659 0.242528736

(41)

■ 인공지능이 흑돌일 때 머신러닝 정도에 따른 승률이다.

머신러닝 개수 전체 경기 수 승 패 인공지능 승률 사용자 승률 0 29 6 23 0.206896552 0.793103448 10 29 13 16 0.448275862 0.551724138

20 16 8 8 0.5 0.5

30 21 12 9 0.571428571 0.428571429

40 20 11 9 0.55 0.45

50 16 12 4 0.75 0.25

60 47 14 33 0.29787234 0.70212766 전체 178 76 102 0.426966292 0.573033708

(42)

2. 연구결과 및 한계점 가. 결론

▪ 머신러닝 시킬 데이터가 증가할수록 그것들을 처리하는 시간도 증가한다.

▪ 경기의 진행정도가 실행시간에 미치는 영향은 미미하다.

▪ 머신러닝 진행정도가 실행시간에 미치는 영향은 미미하다.

▪ 머신러닝 진행정도가 승률에 미치는 영향은 미미하다.

나. 한계

2,3번 결론에서의 한계점은 변인통제가 제대로 이뤄지지 않아 질 좋은 결과를 얻지 못했다는 점이다. 컴퓨터에서 echo IP를 통해 수동으로 게임을 진행했기 때문에 컴 퓨터의 성능에 따라 실행시간이 다르다. 설령 그렇다 하더라도 분석할 데이터양이 충분했다면 위의 내용은 크게 상관이 없다.

1번 결론에서의 한계점은 800개의 기보 학습 이후의 프로그램 실행시간을 측정하지 않았다는 점이다. 그래프가 중간에서 가파르게 상승하다가 다시 완만하게 상승하는 것으로 보아 특정 값에 수렴하지 않을까라는 의문만 남겼다.

4번 결론에서의 한계점은 인공지능과 머신러닝 알고리즘이 너무 단순했다는 점, 인 공지능이 흑돌인 경우는 데이터가 너무 적어서 명확한 결론을 내리기 어렵다는 점, 사용자의 실력에 따라 승률이 달라진다는 점이다.

참조

관련 문서

전체의 2%만 수지로 구성돼 있고, 나머지는 공기층이어서 자원절약형 소재로 널리 알려져 있다.. 또한 물에 젖으면 완충, 단열, 포장등의

해양으로 유입된 대부분의 플라스틱은 자연적으 로 분해되지 않고 해류나 바 람에 의하여 화학적 변형을 일으켜 점차 작은 조각으로 분해된다. 또한, 애초에 작게

부모-자녀 발달놀이치료가 자폐성 장애 아동의 모-자 상호 작용 행동에 미치는 영향을 알아보기 위해 자폐성 장애 아 동에게 실험한 결과 부모와의 상호작용을 통한

지팡이 , 시각장애인, 스테레오 기술, 센서.. 한편 시각장애인들이 일상생활에서 겪는 여러 가지 어려움들 중 하나는 바로 여러 장애물들을 피해 안전하게 목적지까지 찾아가는 것

명도를 사용한 수질오염 지표로서 실험을 계획하는데 있어 녹조를 직접 배양하며 많은 시행 착오를 겪었지만, 정확한 결과 값을 얻기 위해 노력하였다...

곰팡이억제 천연보존제 재료 탐색을 위해 항산화, 항균효과를 갖는 천연재료에서 특정성 분을 추출한 후 실험을 통하여 재료로 안토시아닌(크랜베리), 세사몰(참깨)를

수질 측정 장비가 값비싸서 학생들의 연구에 사용되어지기 부담스럽 다는 문제점을 해결하기 위해 설정한 구체적인 연구의 목적은 제작비 용을 15만 원 이하로 하여

관측되었고 로진 카제인 페인트와 수성 페인트가 비슷한 정도로 두 번째로 우수한 측정값을 나타냈기 때문에 이 실험에서 역시 로진을 이용한 페인트들이 우수하였다고