KR20220140123A - 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치 - Google Patents

딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치 Download PDF

Info

Publication number
KR20220140123A
KR20220140123A KR1020210046229A KR20210046229A KR20220140123A KR 20220140123 A KR20220140123 A KR 20220140123A KR 1020210046229 A KR1020210046229 A KR 1020210046229A KR 20210046229 A KR20210046229 A KR 20210046229A KR 20220140123 A KR20220140123 A KR 20220140123A
Authority
KR
South Korea
Prior art keywords
time
value
time management
relative
model server
Prior art date
Application number
KR1020210046229A
Other languages
English (en)
Other versions
KR102537471B1 (ko
Inventor
이상현
이창율
Original Assignee
엔에이치엔클라우드 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엔에이치엔클라우드 주식회사 filed Critical 엔에이치엔클라우드 주식회사
Priority to KR1020210046229A priority Critical patent/KR102537471B1/ko
Publication of KR20220140123A publication Critical patent/KR20220140123A/ko
Application granted granted Critical
Publication of KR102537471B1 publication Critical patent/KR102537471B1/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/822Strategy games; Role-playing games
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F3/00Board games; Raffle games
    • A63F3/02Chess; Similar board games
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 장치는, 바둑판 상태에 따른 가치값 및 상대 착수시간 중 적어도 하나를 수신하는 통신부; 시간 조정부를 저장하는 메모리; 및 상기 시간 조정부를 독출하여, 상기 시간 조정부가 상기 가치값 및 상대 착수시간 중 적어도 하나를 이용하여 착수 준비 시간을 결정하도록 제어하는 프로세서;를 포함하는 것을 특징으로 한다.

Description

딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치{METHOD AND DEVICE FOR DEEP-LEARNING BASED COMPUTATION TIME MANAGEMENT OF GO GAME SERVICE}
본 발명은 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치에 관한 것이다. 보다 상세하게는, 바둑 게임 서비스의 대국 상황에 따라서 딥러닝 연산시간을 관리하는 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치에 관한 것이다.
스마트폰, 태블릿 PC, PDA(Personal Digital Assistant), 노트북 등과 같은 사용자 단말의 이용이 대중화되고 정보 처리 기술이 발달함에 따라 사용자 단말을 이용하여 보드 게임의 일종인 바둑을 할 수 있게 되었고 나아가 사람이 아닌 프로그램된 인공지능 컴퓨터와 바둑 대국을 할 수 있게 되었다.
바둑은 다른 보드게임인 체스나 장기와 비교하였을 때 경우의 수가 많아서 인공지능 컴퓨터가 사람 수준으로 대국을 하는데 한계가 있었고 인공지능 컴퓨터의 기력을 높이기 위한 연구가 활발하게 진행되고 있는 추세이다.
최근 개발자들은 인공지능 컴퓨터에 몬테 카를로 트리 서치(Monte Carlo Tree Search; MCTS) 알고리즘과 딥러닝 기술을 적용하여 인공지능 컴퓨터의 기력을 프로기사들의 수준 이상으로 올렸다.
또한, 바둑은 시간이 제한된 보드게임이다. 바둑 대회마다 시간이 다른데 보통 선수에게 각자 1시간에서 5시간의 다양한 시간이 주어질 수 있고, 주어진 시간이 초과되면 초읽기 규칙이 적용되어 초읽기 횟수를 넘기면 패배하는 규칙이 있다.
따라서, 남은 바둑 시간을 파악하고 한 수에 얼마나 많은 시간을 사용하는지 결정하는 것은 게임 승리에 중요한 요소이다.
그러나, 인공지능 컴퓨터는 한 수를 두기 위해 소비하는 시간이 항상 일정하여 중요한 국면에서 좋지 못한 수를 착수하는 문제점이 있다.
또한, 일반적으로 일반이나 아마추어 또는 인공지능 컴퓨터는 남은 경기 길이를 예측할 수 없어서 시간 전략을 세울 수 없는 문제점이 있다.
JP 4392621 B2
본 발명은, 바둑 게임 서비스 상의 대국 상황에 따라서 딥러닝 연산시간을 관리하는 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치를 제공하는데 그 목적이 있다.
자세히, 본 발명은, 승률의 변화나 상대방의 착수 소요시간 등을 고려하여 중요한 국면에서 착수 준비 시간을 변경하는 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치를 제공함을 목적으로 한다.
또한, 본 발명은, 예측된 남은 경기 길이를 이용하여 착수 준비 시간을 효과적으로 나눌 수 있는 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치를 제공함을 목적으로 한다.
다만, 본 발명 및 본 발명의 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 장치는, 바둑판 상태에 따른 가치값 및 상대 착수시간 중 적어도 하나를 수신하는 통신부; 시간 조정부를 저장하는 메모리; 및 상기 시간 조정부를 독출하여, 상기 시간 조정부가 상기 가치값 및 상대 착수시간 중 적어도 하나를 이용하여 착수 준비 시간을 결정하도록 제어하는 프로세서;를 포함하는 것을 특징으로 한다.
이때, 상기 시간 조정부는, 상기 가치값의 변동 추세 및 변동 폭 중 적어도 하나를 판단하고, 상기 판단된 변동 추세 및 변동 폭에 따라서 상기 착수 준비 시간을 결정한다.
또한, 상기 시간 조정부는, 상기 가치값의 변동 추세인 상기 가치값의 변화율이 소정의 수치 이하이면, 상기 착수 준비 시간을 증가시킨다.
또한, 상기 시간 조정부는, 이전 착수 단계에서의 가치값과 현재 상기 가치값의 변동 폭이 소정의 값 이상으로 하락하면, 상기 착수 준비 시간을 증가시킨다.
또한, 상기 시간 조정부는, 상기 상대 착수시간을 기초로 상대방의 직전 착수에 소요된 상대 착수시간인 직전 상대 착수시간과, 상기 상대방이 소정의 시점동안 수행한 복수의 착수에 소요된 상대 착수시간의 평균인 평균 상대 착수시간을 산출한다.
또한, 상기 시간 조정부는, 상기 평균 상대 착수시간 보다 상기 직전 상대 착수시간이 크면, 상기 착수 준비 시간을 증가시킨다.
또한, 상기 시간 조정부는, 상기 착수 준비 시간을 증가시키는 조건을 만족하면, 상기 착수 준비 시간을 증가시키는 기준이 되는 착수시간 증가량을 산출한다.
또한, 상기 메모리는, 기설정된 착수 준비 시간인 기초 착수시간을 제공하는 시간 관리부를 더 포함하고, 상기 시간 조정부는, 상기 시간 관리부에서 제공된 상기 기초 착수시간을 기초로 상기 착수시간 증가량을 결정한다.
또한, 상기 시간 조정부는, 기설정된 초읽기 시간과 상기 기초 착수시간을 기초로 상기 착수시간 증가량을 결정한다.
또한, 상기 메모리는, 기설정된 착수 준비 시간인 기초 착수시간을 제공하는 시간 관리부를 더 포함하고, 상기 시간 조정부는, 상기 직전 상대 착수시간과 상기 시간 관리부에서 제공된 상기 기초 착수시간 중 더 큰 착수시간을 상기 착수 준비 시간으로 결정한다.
또한, 상기 시간 조정부는, 상기 평균 상대 착수시간 대비 직전 상대 착수시간 비율인 상대 착수시간 비율을 산출하고, 상기 메모리는, 기설정된 착수 준비 시간인 기초 착수시간을 제공하는 시간 관리부를 더 포함하고, 상기 시간 조정부는, 상기 상대 착수시간 비율이 소정의 기준을 충족하면, 상기 상대 착수시간 비율과 상기 시간 관리부에서 제공된 상기 기초 착수시간에 기반한 소정의 연산을 수행하여 상기 착수 준비 시간을 결정한다.
한편, 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법은, 시간 관리 모델 서버에서 딥러닝 기반의 바둑 게임 서비스 연산시간을 관리하는 방법으로서, 바둑판 상태에 따른 가치값 및 상대 착수시간 중 적어도 하나를 수신하는 단계; 및 상기 수신된 가치값 및 상대 착수시간 중 적어도 하나를 이용하여 착수 준비 시간을 결정하는 단계를 포함하고, 상기 착수 준비 시간을 결정하는 단계는, 상기 가치값의 변동 추세 및 변동 폭 중 적어도 하나를 판단하고, 상기 판단된 변동 추세 및 변동 폭에 따라서 상기 착수 준비 시간을 결정하는 단계와, 상기 상대 착수시간을 기초로 상대방의 직전 착수에 소요된 상대 착수시간인 직전 상대 착수시간과 상기 상대방이 소정의 시점동안 수행한 복수의 착수에 소요된 상대 착수시간의 평균인 평균 상대 착수시간을 산출하고, 상기 산출된 직전 상대 착수시간과 상기 평균 상대 착수시간을 기초로 상기 착수 준비 시간을 결정하는 단계를 포함한다.
본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치는, 중요한 국면에서 착수 준비 시간을 변경할 수 있다.
또한, 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치는, 남은 대국 시간을 예측할 수 있다.
또한, 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치는, 예측된 남은 대국 시간을 이용하여 착수 준비 시간을 효과적으로 분배할 수 있다.
다만, 본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 명확하게 이해될 수 있다.
도 1은 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 시스템에 대한 예시도이다.
도 2는 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스에서 인공지능 컴퓨터의 착수를 위한 착수 모델 서버의 착수 모델 구조를 설명하기 위한 도면이다.
도 3은 착수 모델의 정책에 따른 착수점에 대한 이동 확률 분포를 설명하기 위한 도면이다.
도 4는 착수 모델의 착수점에 대한 가치값과 방문 횟수를 설명하기 위한 도면이다.
도 5는 착수 모델이 탐색부의 파이프 라인에 따라 착수하는 과정을 설명하기 위한 도면이다.
도 6은 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스의 형세 판단 기능을 제공하는 화면을 보여주는 예시도이다.
도 7은 본 발명의 형세 판단 모델 서버의 형세 판단 모델 구조를 설명하기 위한 도면이다.
도 8은 본 발명의 형세 판단 모델의 복수의 블록으로 이루어진 신경망 구조 중 하나의 블록을 설명하기 위한 도면이다.
도 9는 본 발명의 형세 판단 모델을 학습하기 위해 사용되는 정답 레이블을 생성하기 위한 제1 및 제2 전처리 단계를 설명하기 위한 도면이다.
도 10은 본 발명의 형세 판단 모델을 학습하기 위해 사용되는 정답 레이블을 생성하기 위한 제1 및 제2 전처리 단계를 설명하기 위한 도면이다.
도 11은 본 발명의 형세 판단 모델을 학습하기 위해 사용되는 정답 레이블을 생성하기 위한 제3 전처리 단계를 설명하기 위한 도면이다.
도 12는 본 발명의 형세 판단 모델의 형세 판단 결과를 설명하기 위한 도면이다.
도 13은 본 발명의 형세 판단 모델의 형세 판단 결과와 종래 기술에 따른 딥러닝 모델에 의한 형세 판단 결과를 비교한 모습이다.
도 14는 본 발명의 형세 판단 모델의 형세 판단 결과와 종래 기술에 따른 딥러닝 모델에 의한 형세 판단 결과를 비교한 모습이다.
도 15는 본 발명의 형세 판단 모델의 형세 판단 결과와 종래 기술에 따른 딥러닝 모델에 의한 형세 판단 결과를 비교한 모습이다.
도 16은 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 시스템에 신호 흐름에 대한 예시도이다.
도 17은 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법 중 형세 판단 방법이다.
도 18은 도 17의 형세 판단 방법 중 정답 레이블을 생성하기 위한 트레이닝 데이터의 전처리 방법이다.
도 19는 본 발명의 일 실시예에 따른 시간 관리 모델 서버의 시간 관리부를 설명하기 위한 도면이다.
도 20a 및 도 20b는 본 발명의 일 실시예에 따른 시간 관리부의 분산 산출을 설명하기 위한 도면이다.
도 21은 본 발명의 일 실시예에 따른 시간 관리 모델 서버의 바둑 게임 서비스 시스템에서의 신호 흐름에 대한 예시도이다.
도 22는 본 발명의 일 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법 중 착수 준비 시간 결정 방법이다.
도 23은 본 발명의 다른 실시예에 따른 시간 관리 모델 서버의 시간 조정부를 설명하기 위한 도면이다.
도 24는 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법 중 착수 준비 시간 결정 방법이다.
도 25는 본 발명의 다른 실시예에 따른 가치값의 변동 추세에 따라서 착수 준비 시간을 결정하는 방법을 설명하기 위한 도면의 일례이다.
도 26은 본 발명의 다른 실시예에 따른 가치값의 변동 폭에 따라서 착수 준비 시간을 결정하는 방법을 설명하기 위한 도면의 일례이다.
도 27은 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법 중 착수 준비 시간 결정 방법이다.
도 28은 본 발명의 다른 실시예에 따른 상대 착수시간에 따라서 착수 준비 시간을 결정하는 방법을 설명하기 위한 도면의 일례이다.
도 29는 본 발명의 또 다른 실시예에 따른 시간 관리 모델 서버의 시간 관리 모델을 설명하기 위한 도면이다.
도 30a 및 도 30b는 본 발명의 또 다른 실시예에 따른 게임 시간 정보를 생성하기 위해 사용되는 집수 변화량을 설명하기 위한 도면이다.
도 31a 및 도 31b는 본 발명의 또 다른 실시예에 따른 게임 시간 정보를 생성하기 위해 사용되는 집수 변화량을 설명하기 위한 도면이다.
도 32a 및 도 32b는 본 발명의 또 다른 실시예에 따른 게임 시간 정보를 생성하기 위해 사용되는 공배수를 설명하기 위한 도면이다.
도 33은 본 발명의 또 다른 실시예에 따른 시간 관리 모델 서버의 바둑 게임 서비스 시스템에서의 신호 흐름에 대한 예시도이다.
도 34는 본 발명의 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법 중 게임 시간 정보 생성 방법이다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 본 발명의 효과 및 특징, 그리고 그것들을 달성하는 방법은 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 다양한 형태로 구현될 수 있다. 이하의 실시예에서, 제1, 제2 등의 용어는 한정적인 의미가 아니라 하나의 구성 요소를 다른 구성 요소와 구별하는 목적으로 사용되었다. 또한, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 또한, 포함하다 또는 가지다 등의 용어는 명세서상에 기재된 특징, 또는 구성요소가 존재함을 의미하는 것이고, 하나 이상의 다른 특징들 또는 구성요소가 부가될 가능성을 미리 배제하는 것은 아니다. 또한, 도면에서는 설명의 편의를 위하여 구성 요소들이 그 크기가 과장 또는 축소될 수 있다. 예컨대, 도면에서 나타난 각 구성의 크기 및 두께는 설명의 편의를 위해 임의로 나타내었으므로, 본 발명이 반드시 도시된 바에 한정되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명하기로 하며, 도면을 참조하여 설명할 때 동일하거나 대응하는 구성 요소는 동일한 도면부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 시스템에 대한 예시도이다.
도 1을 참조하면, 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 시스템은, 단말기(100), 바둑서버(200), 착수 모델 서버(300), 형세 판단 모델 서버(400) 및 네트워크(500)를 포함할 수 있다.
도 1의 각 구성요소는, 네트워크(500)를 통해 연결될 수 있다. 단말기(100), 바둑서버(200), 착수 모델 서버(300), 형세 판단 모델 서버(400) 및 시간 관리 모델 서버(500) 등과 같은 각각의 노드 상호 간에 정보 교환이 가능한 연결 구조를 의미하는 것으로, 이러한 네트워크의 일 예에는 3GPP(3rd Generation Partnership Project) 네트워크, LTE(Long Term Evolution) 네트워크, WIMAX(World Interoperability for Microwave Access) 네트워크, 인터넷(Internet), LAN(Local Area Network), Wireless LAN(Wireless Local Area Network), WAN(Wide Area Network), PAN(Personal Area Network), 블루투스(Bluetooth) 네트워크, 위성 방송 네트워크, 아날로그 방송 네트워크, DMB(Digital Multimedia Broadcasting) 네트워크 등이 포함되나 이에 한정되지는 않는다.
<단말기(100)>
먼저, 단말기(100)는, 바둑 게임 서비스를 제공받고자 하는 유저의 단말기이다. 또한, 단말기(100)는 다양한 작업을 수행하는 애플리케이션들을 실행하기 위한 유저가 사용하는 하나 이상의 컴퓨터 또는 다른 전자 장치이다. 예컨대, 컴퓨터, 랩탑 컴퓨터, 스마트 폰, 모바일 전화기, PDA, 태블릿 PC, 혹은 바둑서버(200)와 통신하도록 동작 가능한 임의의 다른 디바이스를 포함한다. 다만 이에 한정되는 것은 아니고 단말기(100)는 다양한 머신들 상에서 실행되고, 다수의 메모리 내에 저장된 명령어들을 해석하여 실행하는 프로세싱로직을 포함하고, 외부 입력/출력 디바이스상에 그래픽 사용자 인터페이스(GUI)를 위한 그래픽 정보를 디스플레이하는 프로세스들과 같이 다양한 기타 요소들을 포함할 수 있다. 아울러 단말기(100)는 입력 장치(예를 들면 마우스, 키보드, 터치 감지 표면 등) 및 출력 장치(예를 들면 디스플레이장치, 모니터, 스크린 등)에 접속될 수 있다. 단말기(100)에 의해 실행되는 애플리케이션들은 게임 어플리케이션, 웹 브라우저, 웹 브라우저에서 동작하는 웹 애플리케이션, 워드 프로세서들, 미디어 플레이어들, 스프레드시트들, 이미지 프로세서들, 보안 소프트웨어 또는 그 밖의 것을 포함할 수 있다.
또한, 단말기(100)는 명령들을 저장하는 적어도 하나의 메모리(101), 적어도 하나의 프로세서(102) 및 통신부(103)를 포함할 수 있다.
단말기(100)의 메모리(101)는 단말기(100)에서 구동되는 다수의 응용 프로그램(application program) 또는 애플리케이션(application), 단말기(100)의 동작을 위한 데이터들, 명령어들을 저장할 수 있다. 명령들은 프로세서(102)로 하여금 동작들을 수행하게 하기 위해 프로세서(102)에 의해 실행 가능하고, 동작들은 바둑 게임 실행 요청 신호를 전송, 게임 데이터 송수신, 착수 정보 송수신, 형세 판단 요청 신호를 전송, 형세 판단 결과 수신, 게임 시간 정보 요청, 게임 시간 정보 수신 및 각종 정보 수신하는 동작들을 포함할 수 있다. 또한, 메모리(101)는 하드웨어적으로, ROM, RAM, EPROM, 플래시 드라이브, 하드 드라이브 등과 같은 다양한 저장기기 일 수 있고, 메모리(130)는 인터넷(internet)상에서 상기 메모리(101)의 저장 기능을 수행하는 웹 스토리지(web storage)일 수도 있다.
단말기(100)의 프로세서(102)는 전반적인 동작을 제어하여 바둑 게임 서비스를 제공받기 위한 데이터 처리를 수행할 수 있다. 단말기(100)에서 바둑 게임 어플리케이션이 실행되면, 단말기(100)에서 바둑 게임 환경이 구성된다. 그리고 바둑 게임 어플리케이션은 네트워크(500)를 통해 바둑 서버(200)와 바둑 게임 데이터를 교환하여 단말기(100) 상에서 바둑 게임 서비스가 실행되도록 한다. 이러한 프로세서(102)는 ASICs (application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 제어기(controllers), 마이크로 컨트롤러(micro-controllers), 마이크로 프로세서(microprocessors), 기타 기능 수행을 위한 임의의 형태의 프로세서일 수 있다.
단말기(100)의 통신부(103)는, 하기 통신방식(예를 들어, GSM(Global System for Mobile communication), CDMA(Code Division Multi Access), HSDPA(High Speed Downlink Packet Access), HSUPA(High Speed Uplink Packet Access), LTE(Long Term Evolution), LTE-A(Long Term Evolution-Advanced) 등), WLAN(Wireless LAN), Wi-Fi(Wireless-Fidelity), Wi-Fi(Wireless Fidelity) Direct, DLNA(Digital Living Network Alliance), WiBro(Wireless Broadband), WiMAX(World Interoperability for Microwave Access)에 따라 구축된 네트워크망 상에서 기지국, 외부의 단말, 서버 중 적어도 하나와 무선 신호를 송수신할 수 있다.
이러한 단말기(100)는, 후술되는 바둑서버(200), 착수 모델 서버(300), 형세 판단 모델 서버(400) 및 시간 관리 모델 서버(500) 중 적어도 하나에서 수행되는 기능 동작의 적어도 일부를 수행할 수도 있다.
<바둑서버(200)>
바둑서버(200)가 제공하는 바둑 게임 서비스는 바둑서버(200)가 제공하는 가상의 컴퓨터 유저와 실제 유저가 함께 게임에 참여하는 형태로 구성될 수 있다. 이는 유저측 단말기(100) 상에서 구현되는 바둑 게임 환경에서 하나의 실제 유저와 하나의 컴퓨터 유저가 함께 게임을 플레이 한다. 다른 측면에서, 바둑서버(200)가 제공하는 바둑 게임 서비스는 복수의 유저측 디바이스가 참여하여 바둑 게임이 플레이되는 형태로 구성될 수도 있다.
바둑서버(200)는 명령들을 저장하는 적어도 하나의 메모리(201), 적어도 하나의 프로세서(202) 및 통신부(203)를 포함할 수 있다.
바둑서버(200)의 메모리(201)는 바둑서버(200)에서 구동되는 다수의 응용 프로그램(application program) 또는 애플리케이션(application), 바둑서버(200)의 동작을 위한 데이터들, 명령어들을 저장할 수 있다. 명령들은 프로세서(202)로 하여금 동작들을 수행하게 하기 위해 프로세서(202)에 의해 실행 가능하고, 동작들은 게임 실행 요청 신호 수신, 게임 데이터 송수신, 착수 정보 송수신, 형세 판단 요청 신호 송수신, 형세 판단 결과 송수신, 착수 준비 시간 송수신, 게임 정보 시간 송수신 및 각종 전송 동작을 포함할 수 있다. 또한, 메모리(201)는 바둑서버(200)에서 대국을 하였던 복수의 기보 또는 기존에 공개된 복수의 기보를 저장할 수 있다. 복수의 기보 각각은 대국 시작의 첫 착수 정보인 제1 착수부터 대국이 종료되는 최종 착수까지의 정보를 모두 포함할 수 있다. 즉, 복수의 기보는 착수에 관한 히스토리 정보를 포함할 수 있다. 바둑서버(200)는 형세 판단 모델 서버(400)의 트레이닝을 위하여 저장된 복수의 기보를 형세 판단 모델 서버(400)에 제공할 수 있게 한다. 또한, 메모리(201)는 하드웨어적으로, ROM, RAM, EPROM, 플래시 드라이브, 하드 드라이브 등과 같은 다양한 저장기기 일 수 있고, 메모리(201)는 인터넷(internet)상에서 상기 메모리(201)의 저장 기능을 수행하는 웹 스토리지(web storage)일 수도 있다.
바둑서버(200)의 프로세서(202)는 전반적인 동작을 제어하여 바둑 게임 서비스를 제공하기 위한 데이터 처리를 수행할 수 있다. 이러한 프로세서(202)는 ASICs (application specific integrated circuits), DSPs(digital signal processors), DSPDs(digital signal processing devices), PLDs(programmable logic devices), FPGAs(field programmable gate arrays), 제어기(controllers), 마이크로 컨트롤러(micro-controllers), 마이크로 프로세서(microprocessors), 기타 기능 수행을 위한 임의의 형태의 프로세서일 수 있다.
바둑서버(200)는 통신부(203)를 통해 네트워크(500)를 경유하여 단말기(100), 착수 모델 서버(300) 및 형세 판단 모델 서버(400)와 통신을 수행할 수 있다.
<착수 모델 서버(300)>
착수 모델 서버(300)는, 별도의 클라우드 서버나 컴퓨팅 장치를 포함할 수 있다. 또한, 착수 모델 서버(300)는 단말기(100)의 프로세서 또는 바둑서버(200)의 데이터 처리부에 설치된 신경망 시스템일 수 있지만, 이하에서 착수 모델 서버(300)는, 단말기(100) 또는 바둑 서버(200)와 별도의 장치로 설명한다.
착수 모델 서버(300)는 명령들을 저장하는 적어도 하나의 메모리(301), 적어도 하나의 프로세서(302) 및 통신부(303)를 포함할 수 있다.
착수 모델 서버(300)는 바둑 규칙에 따라 스스로 학습하여 딥러닝 모델인 착수 모델을 구축하고 단말기(100)의 유저와 대국을 할 수 있는 인공지능 컴퓨터로써 자신의 턴에서 대국에서 이길 수 있도록 바둑돌의 착수를 수행할 수 있다. 착수 모델 서버(300)가 착수 모델로 트레이닝하는 자세한 설명은 도 2 내지 도 5의 착수 모델에 관한 설명을 따른다.
착수 모델 서버(300)의 메모리(301)는 착수 모델 서버(300)에서 구동되는 다수의 응용 프로그램(application program) 또는 애플리케이션(application), 착수 모델 서버(300)의 동작을 위한 데이터들, 명령어들을 저장할 수 있다. 명령들은 프로세서(302)로 하여금 동작들을 수행하게 하기 위해 프로세서(302)에 의해 실행 가능하고, 동작들은 착수 모델 학습(트레이닝) 동작, 착수 정보 송수신, 착수 준비 시간 수신, 게임 시간 정보 수신 및 각종 전송 동작을 포함할 수 있다. 또한, 메모리(301)는 딥러닝 모델인 착수 모델을 저장할 수 있다. 또한, 메모리(301)는 하드웨어적으로, ROM, RAM, EPROM, 플래시 드라이브, 하드 드라이브 등과 같은 다양한 저장기기 일 수 있고, 메모리(301)는 인터넷(internet)상에서 상기 메모리(301)의 저장 기능을 수행하는 웹 스토리지(web storage)일 수도 있다.
착수 모델 서버(300)의 프로세서(302)는 메모리(302)에 저장된 착수 모델을 독출하여, 구축된 신경망 시스템에 따라서 하기 기술하는 착수 모델 학습 및 바둑알 착수를 수행하게 된다. 실시예에 따라서 프로세서(302)는, 전체 유닛들을 제어하는 메인 프로세서와, 착수 모델에 따라 신경망 구동시 필요한 대용량의 연산을 처리하는 복수의 그래픽 프로세서(Graphics Processing Unit, GPU)를 포함하도록 구성될 수 있다.
착수 모델 서버(300)는 통신부(303)를 통해 네트워크(500)를 경유하여 바둑 서버(200)와 통신을 수행할 수 있다.
<형세 판단 모델 서버(400)>
형세 판단 모델 서버(400)는, 별도의 클라우드 서버나 컴퓨팅 장치를 포함할 수 있다. 또한, 형세 판단 모델 서버(400)는 단말기(100)의 프로세서 또는 바둑서버(200)의 데이터 처리부에 설치된 신경망 시스템일 수 있지만, 이하에서 형세 판단 모델 서버(400)는, 단말기(100) 또는 바둑 서버(200)와 별도의 장치로 설명한다.
형세 판단 모델 서버(400)는 명령들을 저장하는 적어도 하나의 메모리(401), 적어도 하나의 프로세서(402) 및 통신부(403)를 포함할 수 있다.
형세 판단 모델 서버(400)는 통신부(403)를 통하여 바둑서버(200)로부터 트레이닝 데이터 셋을 수신할 수 있다. 트레이닝 데이터 셋은 복수의 기보와 해당 복수의 기보에 대한 형세 판단 정보일 수 있다. 형세 판단 모델 서버(400)는 수신한 트레이닝 데이터 셋을 이용하여 바둑알이 놓인 바둑판의 상태에 대한 형세를 판단할 수 있도록 지도학습하여 딥러닝 모델인 형세 판단 모델을 구축하고 단말기(100) 유저의 형세 판단 요청에 따라 형세 판단을 수행할 수 있다. 형세 판단 모델 서버(400)가 형세 판단 모델로 트레이닝하는 자세한 설명은 도 6 내지 도 18의 형세 판단 모델에 관한 설명을 따른다.
형세 판단 모델 서버(400)의 메모리(401)는 형세 판단 모델 서버(400)에서 구동되는 다수의 응용 프로그램(application program) 또는 애플리케이션(application), 형세 판단 모델 서버(400)의 동작을 위한 데이터들, 명령어들을 저장할 수 있다. 명령들은 프로세서(402)로 하여금 동작들을 수행하게 하기 위해 프로세서(402)에 의해 실행 가능하고, 동작들은 형세 판단 모델 학습(트레이닝) 동작, 형세 판단 수행, 형세 판단 결과 송신, 복수의 기보 정보 수신, 집수의 변화량 정보 송신, 공배수 정보 송신 및 각종 전송 동작을 포함할 수 있다. 또한, 메모리(401)는 딥러닝 모델인 형세 판단 모델을 저장할 수 있다. 또한, 메모리(401)는 하드웨어적으로, ROM, RAM, EPROM, 플래시 드라이브, 하드 드라이브 등과 같은 다양한 저장기기 일 수 있고, 메모리(401)는 인터넷(internet)상에서 상기 메모리(301)의 저장 기능을 수행하는 웹 스토리지(web storage)일 수도 있다.
형세 판단 모델 서버(400)의 프로세서(402)는 메모리(402)에 저장된 형세 판단 모델을 독출하여, 구축된 신경망 시스템에 따라서 하기 기술하는 형세 판단 모델 학습 및 대국 중 바둑판의 형세 판단을 수행하게 된다. 실시예에 따라서 프로세서(402)는, 전체 유닛들을 제어하는 메인 프로세서와, 형세 판단 모델에 따라 신경망 구동시 필요한 대용량의 연산을 처리하는 복수의 그래픽 프로세서(Graphics Processing Unit, GPU)를 포함하도록 구성될 수 있다.
형세 판단 모델 서버(400)는 통신부(403)를 통해 네트워크(500)를 경유하여 바둑 서버(200)와 통신을 수행할 수 있다.
<시간 관리 모델 서버(500)>
시간 관리 모델 서버(500)는, 별도의 클라우드 서버나 컴퓨팅 장치를 포함할 수 있다. 또한, 시간 관리 모델 서버(500)는 단말기(100)의 프로세서, 바둑서버(200)의 메모리, 착수 모델 서버(300)의 메모리 또는 형세 판단 모델 서버(400)의 메모리에 설치된 신경망 시스템일 수 있지만, 이하에서 시간 관리 모델 서버(500)는, 단말기(100), 바둑 서버(200), 착수 모델 서버(300) 또는 형세 판단 모델 서버(400)와 별도의 장치로 설명한다.
시간 관리 모델 서버(500)는 명령들을 저장하는 적어도 하나의 메모리(501), 적어도 하나의 프로세서(502) 및 통신부(503)를 포함할 수 있다.
또한, 시간 관리 모델 서버(500)는 통신부(503)를 통하여 착수 모델 서버(300)로부터 방문 횟수, 탐색 확률값 또는 가치값을 수신할 수 있다. 시간 관리 모델 서버(500)는 수신한 방문 횟수, 탐색 확률값, 가치값을 이용하여 착수 준비 시간을 결정할 수 있다. 시간 관리 모델 서버(500)의 착수 준비 시간 결정 방법에 대한 자세한 설명은 도 19 내지 도 22의 설명을 따른다.
또한, 시간 관리 모델 서버(500)는 통신부(503)를 통하여 바둑서버(500)로부터 트레이닝 데이터 셋을 수신할 수 있다. 트레이닝 데이터 셋은 복수의 기보, 해당 복수의 기보에 대한 형세 판단 정보, 복수의 기보에 대한 각 바둑판 상태에 따른 시간 정보일 수 있다.
또한, 시간 관리 모델 서버(500)는 통신부(503)를 통하여 착수 모델 서버(300) 및/또는 바둑서버(500)로부터 가치값 및/또는 상대방의 착수 준비 시간(이하, 상대 착수시간)을 수신할 수 있다. 시간 관리 모델 서버(500)는, 수신된 가치값 및/또는 상대 착수시간을 이용하여 착수 준비 시간을 결정할 수 있다. 시간 관리 모델 서버(500)의 착수 준비 시간 결정 방법에 대한 자세한 설명은 도 23 내지 도 28의 설명을 따른다.
또한, 시간 관리 모델 서버(500)는 통신부(503)를 통하여 형세 판단 모델 서버(400)로부터 형세 판단 정보를 수신할 수 있다. 형세 판단 정보는 집수의 변화량 정보, 공배수 정보 등을 포함할 수 있다. 시간 관리 모델 서버(500)는 수신한 트레이닝 데이터 셋, 형세 판단 정보, 가치값 등을 이용하여 게임 시간 정보를 생성할 수 있도록 지도학습하여 딥러닝 모델인 시간 관리 모델을 구축하고 착수 모델 서버(300) 또는 단말기(100)에 바둑판 상태에 따른 게임 시간 정보를 제공할 수 있다. 시간 관리 모델 서버(50))가 시간 관리 모델로 트레이닝하는 자세한 설명은 도 29 내지 도 34의 시간 관리 모델에 관한 설명을 따른다.
시간 관리 모델 서버(500)의 메모리(501)는 시간 관리 모델 서버(500)에서 구동되는 다수의 응용 프로그램(application program) 또는 애플리케이션(application), 형세 판단 모델 서버(400)의 동작을 위한 데이터들, 명령어들을 저장할 수 있다. 명령들은 프로세서(502)로 하여금 동작들을 수행하게 하기 위해 프로세서(502)에 의해 실행 가능하고, 동작들은 시간 관리 모델 학습(트레이닝) 동작, 방문 횟수, 탐색 확률값 또는 가치값을 수신, 착수 준비 시간 결정, 복수의 기보 정보 수신, 집수의 변화량 정보 수신, 공배수 정보 수신, 게임 시간 정보 생성 및 각종 전송 동작을 포함할 수 있다. 또한, 메모리(501)는 시간 관리부, 시간 조정부 또는 딥러닝 모델인 시간 관리 모델을 저장할 수 있다. 또한, 메모리(501)는 하드웨어적으로, ROM, RAM, EPROM, 플래시 드라이브, 하드 드라이브 등과 같은 다양한 저장기기 일 수 있고, 메모리(501)는 인터넷(internet)상에서 상기 메모리(501)의 저장 기능을 수행하는 웹 스토리지(web storage)일 수도 있다.
시간 관리 모델 서버(500)의 프로세서(502)는 메모리(501)에 저장된 시간 관리부를 독출하여, 하기 기술하는 착수 준비 시간 결정을 수행하게 된다.
또한, 시간 관리 모델 서버(500)의 프로세서(502)는 메모리(501)에 저장된 시간 조정부를 독출하여, 후술되는 착수 준비 시간 결정을 수행하게 된다.
또한, 시간 관리 모델 서버(500)의 프로세서(502)는 메모리(501)에 저장된 시간 관리 모델을 독출하여, 구축된 신경망 시스템에 따라서 하기 기술하는 게임 시간 정보 생성을 수행하게 된다.
실시예에 따라서 프로세서(502)는, 전체 유닛들을 제어하는 메인 프로세서와, 시간 관리 모델에 따라 신경망 구동시 필요한 대용량의 연산을 처리하는 복수의 그래픽 프로세서(Graphics Processing Unit, GPU)를 포함하도록 구성될 수 있다.
시간 관리 모델 서버(500)는 통신부(403)를 통해 네트워크(500)를 경유하여 바둑 서버(200), 착수 모델 서버(300) 및 형세 판단 모델 서버(400)와 통신을 수행할 수 있다.
<착수 모델>
도 2는 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스에서 인공지능 컴퓨터의 착수를 위한 착수 모델 서버의 착수 모델 구조를 설명하기 위한 도면이고, 도 3은 착수 모델의 정책에 따른 착수점에 대한 이동 확률 분포를 설명하기 위한 도면이고, 도 4는 착수 모델의 착수점에 대한 가치값과 방문 횟수를 설명하기 위한 도면이고, 도 5는 착수 모델이 탐색부의 파이프 라인에 따라 착수하는 과정을 설명하기 위한 도면이다.
도 2를 참조하면, 본 발명의 실시예에 따른 착수 모델은 착수 모델 서버(300)의 딥러닝 모델로써 탐색부(310), 셀프 플레이부(320) 및 착수 신경망(330)을 포함할 수 있다.
착수 모델은 탐색부(310), 셀프 플레이부(320) 및 착수 신경망(330)을 이용하여 대국에서 이길 수 있도록 착수하는 모델로 학습할 수 있다. 보다 구체적으로, 탐색부(310)는 착수 신경망(330)의 가이드에 따라 몬테 카를로 트리 서치(Monte Carlo Tree Search; MCTS) 동작을 수행할 수 있다. MCTS는 모종의 의사 결정을 위한 체험적 탐색 알고리즘이다. 즉, 탐색부(310)는 착수 신경망(330)이 제공하는 이동 확률값(p) 및/또는 가치값(V)에 기초하여 MCTS를 수행할 수 있다. 일 예로, 착수 신경망(330)에 의해 가이드된 탐색부(310)는 MCTS를 수행하여 착수점들에 대한 확률분포값인 탐색 확률값(
Figure pat00001
)을 출력할 수 있다. 셀프 플레이부(320)는 탐색 확률값(
Figure pat00002
)에 따라 스스로 바둑 대국을 할 수 있다. 셀프 플레이부(320)는 게임의 승패가 결정되는 시점까지 스스로 바둑 대국을 진행하고, 자가 대국이 종료되면 바둑판 상태(S), 탐색 확률값(
Figure pat00003
), 자가 플레이 가치값(z)을 착수 신경망(330)에 제공할 수 있다. 바둑판 상태(S)는 착수점들에 바둑돌이 놓여진 상태이다. 자가 플레이 가치값(z)은 바둑판 상태(S)에서 자가 대국을 하였을 때 승률 값이다. 착수 신경망(330)은 이동 확률값(p)과 가치값(V)을 출력할 수 있다. 이동 확률값(p)은 바둑판 상태(S)에 따라 착수점들에 대해 어느 착수점에 착수하는 것이 게임을 이길 수 있는 좋은 수인지 수치로 나타낸 확률분포값이다. 가치값(V)은 해당 착수점에 착수시 승률을 나타낸다. 예를 들어, 이동 확률값(p)이 높은 착수점이 좋은 수일 수 있다. 착수 신경망(330)은 이동 확률값(p)이 탐색 확률값(
Figure pat00004
)과 동일해지도록 트레이닝되고, 가치값(V)이 자가 플레이 가치값(z)과 동일해지도록 트레이닝될 수 있다. 이후 트레이닝된 착수 신경망(330)은 탐색부(310)를 가이드하고, 탐색부(310)는 이전 탐색 확률값(
Figure pat00005
)보다 더 좋은 수를 찾도록 착수 준비 시간 동안 MCTS를 진행하여 새로운 탐색 확률값(
Figure pat00006
)을 출력하게 한다. 예를 들어, 착수 준비 시간은 MCTS 진행 시간에 따라 평균 착수 준비 시간, 제1 착수 준비 시간 및 제2 착수 준비 시간 중 어느 하나의 착 수 준비 시간을 따를 수 있다. 착수 준비 시간은 시간 관리 모델 서버(500)에서 제공할 수 있고 기본적으로 평균 착수 준비 시간으로 설정되어 있을 수 있다. 셀프 플레이부(320)는 새로운 탐색 확률값(
Figure pat00007
)에 기초하여 바둑판 상태(S)에 따른 새로운 자가 플레이 가치값(z)을 출력하고 바둑판 상태(S), 새로운 탐색 확률값(
Figure pat00008
), 새로운 자가 플레이 가치값(z)을 착수 신경망(330)에 제공할 수 있다. 착수 신경망(330)은 이동 확률값(p)과 가치값(V)이 새로운 탐색 확률값(
Figure pat00009
)과 새로운 자가 플레이 가치값(z)으로 출력되도록 다시 트레이닝될 수 있다. 즉, 착수 모델은 이러한 과정을 반복하여 착수 신경망(330)이 대국에서 이기기 위한 더 좋은 착수점을 찾도록 트레이닝 될 수 있다. 일 예로, 착수 모델은 착수 손실(l)을 이용할 수 있다. 착수 손실(l)은 수학식 1과 같다.
(수학식 1)
Figure pat00010
Figure pat00011
는 신경망의 파라미터이고, c는 매우 작은 상수이다.
수학식 1의 착수 손실(l)에서 z와 v가 같아 지도록 하는 것은 평균 제곱 손실(mean square loss) 텀에 해당되고,
Figure pat00012
와 p가 같아 지도록 하는 것은 크로스 엔트로피 손실(cross entropy loss) 텀에 해당되고,
Figure pat00013
에 c를 곱하는 것은 정규화 텀으로 오버피팅(overfitting)을 방지하기 위한 것이다.
예를 들어, 도 3을 참조하면 트레이닝된 착수 모델은 착수점들에 이동 확률값(p)을 도 3과 같이 확률분포값으로 나타낼 수 있다. 도 4를 참조하면 트레이닝 된 착수 모델의 탐색 확률값(
Figure pat00014
)은 하나의 착수점에서 위에 표시된 값으로 나타낼 수 있다. 탐색 확률값(
Figure pat00015
)은 착수 후보수의 방문 횟수를 전체 횟수로 나눈 비율일 수 있다. 일 예로, MCTS 시뮬레이션 전체 횟수가 1000번이고 90.00이라고 표시되어 있으면 해당 착수 후보수에 1000번 중 900번 방문했다는 것을 의미한다. 트레이닝 된 착수 모델의 가치값(V)은 도 4의 하나의 착수점에서 아래에 표시된 값으로 나타낼 수 있다. 착수 신경망(330)은 신경망 구조로 구성될 수 있다. 일 예로, 착수 신경망(330)은 한 개의 컨볼루션(convolution) 블록과 19개의 레지듀얼(residual) 블록으로 구성될 수 있다. 컨볼루션 블록은 3X3 컨볼루션 레이어가 여러개 중첩된 형태일 있다. 하나의 레지듀얼 블록은 3X3 컨볼루션 레이어가 여러개 중첩되고 스킵 커넥션을 포함한 형태일 수 있다. 스킵 커넥션은 소정의 레이어의 입력이 해당 레이어의 출력값과 합하여서 출력되어 다른 레이어에 입력되는 구조이다. 또한, 착수 신경망(330)의 입력은 흑 플레이어의 최근 8 수에 대한 돌의 위치 정보과 백 플레이어의 최근 8 수에 대한 돌의 위치 정보와 현재 플레이어가 흑인지 백인지에 대한 차례 정보를 포함한 19*19*17의 RGB 이미지가 입력될 수 있다.
도 5를 참조하면, 학습된 착수 모델은 자신의 차례에서 착수 신경망(330)과 탐색부(310)를 이용하여 착수할 수 있다. 착수 모델은 선택 과정(a)을 통하여 현재 제1 바둑판 상태(S1)에서 MCTS를 통해 탐색하지 않은 가지 중 활동 함수(Q)와 신뢰값(U)이 높은 착수점을 가지는 제2 바둑판 상태(S1-2)를 선택한다. 활동 함수(Q)는 해당 가지를 지날 때마다 산출된 가치값(V)들의 평균값이다. 신뢰값(U)은 해당 가지를 지나는 방문 횟수(N)에 반비례하고 이동 확률값(p)에 비례한다. 착수 모델은 확장과 평가 과정(b)을 통하여 선택된 착수점에서의 제3 바둑판 상태(S1-2-1)로 확장하고 이동 확률값(p)을 산출할 수 있다. 착수 모델은 상기 확장된 제3 바둑판 상태(S1-2-1)의 가치값(V)을 산출하고 백업 과정(c)을 통하여 지나온 가지들의 활동 함수(Q), 방문 횟수(N), 이동 확률값(p)을 저장할 수 있다. 착수 모델은 착수 준비 시간 동안 선택(a), 확장 및 평가(b), 백업(c) 과정을 반복하고 각 착수점에 대한 방문 횟수(N)를 이용하여 확률 분포를 만들어서 탐색 확률값(
Figure pat00016
)을 출력할 수 있다. 착수 모델은 착수점들 중 가장 높은 탐색 확률값(
Figure pat00017
)을 선택하여 착수할 수 있다.
<형세 판단 모델>
도 6은 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스의 형세 판단 기능을 제공하는 화면을 보여주는 예시도이고, 도 7은 본 발명의 형세 판단 모델 서버의 형세 판단 모델 구조를 설명하기 위한 도면이고, 도 8은 본 발명의 형세 판단 모델의 복수의 블록으로 이루어진 신경망 구조 중 하나의 블록을 설명하기 위한 도면이다.
도 6을 참조하면, 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스는 현재 바둑판 상태의 형세 판단을 할 수 있다. 일 예로, 도 6과 같이 유저가 단말기(100)의 화면에서 바둑 대국 중 형세 판단 메뉴(A)를 클릭하여 형세 판단을 요청하면 딥러닝 기반의 바둑 게임 서비스가 팝업 창에 형세 판단 결과를 제공할 수 있다. 형세 판단은 바둑 대국 중에 상대방과 나의 집을 계산하여 누가 몇점으로 이기고 있는지 판단하는 것이다. 예를 들어, 유저는 형세가 나에게 유리하다는 판단이 서면 더 이상 무리하지 말고 현재의 유리한 상황을 그대로 유지한 채 대국을 종료하는 방향으로 전략을 세울 것이고, 만약 불리하다는 판단이면 게임 국면을 새롭게 전환할 수 있도록 여러가지 전략을 모색할 수 있다. 형세 판단의 기준은 바둑돌이 바둑판에 배치된 상태에 따른 집, 사석, 돌, 공배, 빅이 된다. 돌은 바둑판에 놓여진 돌이고 한국 규칙에서는 점수가 아니다. 집은 한 가지 색의 바둑돌로 둘러쌓인 빈 점으로 구성된 영역으로 한국 규칙에서는 점수이다. 공배와 빅은 바둑이 끝났을 때 흑집도 백집도 아닌 영역으로 한국 규칙에서는 점수가 아니다. 판위사석은 바둑판 위에 놓여진 돌 중에서 어떻게 두어도 잡힐 수밖에 없어 죽게 된 돌로 한국 규칙에서는 상대방의 집을 메우는데 사용하므로 점수이다. 빅은 바둑이 끝났을 때, 흑집도 백집도 아닌 영역을 말한다.  따라서, 형세 판단은 바둑돌이 놓인 바둑판 상태에서 집, 사석, 돌, 공배, 빅을 정확히 구분 또는 예측해야 정확한 판단이 될 수 있다. 이 때, 집, 사석, 돌, 공배, 빅을 정확히 구분하는 것은 집, 사석, 돌, 공배, 빅이 완전히 이루어진 상태를 구분하는 것이고, 집, 사석, 돌, 공배, 빅을 정확히 예측하는 것은 집, 사석, 돌, 공배, 빅이 될 가능성이 높은 상태를 예측하는 것일 수 있다.
도 7을 참조하면, 본 발명의 실시예에 따른 형세 판단 모델은 형세 판단 모델 서버(400)의 딥러닝 모델로써 형세 판단 신경망(410), 입력 특징 추출부(420) 및 정답 레이블 생성부(430)를 포함할 수 있다.
형세 판단 모델은 형세 판단 신경망(410)을 이용하여 현재 바둑판 상태의 형세를 판단할 수 있도록 지도 학습(supervised learning)할 수 있다. 보다 구체적으로, 형세 판단 모델 바둑판 상태(S)에 관한 트레이닝 데이터 셋을 생성하고 생성된 트레이닝 데이터 셋을 이용하여 형세 판단 신경망(410)이 현재 바둑판 상태(S)에 따른 형세를 판단할 수 있도록 학습시킬 수 있다. 형세 판단 모델 서버(400)는 바둑서버(200)로부터 복수의 기보를 수신할 수 있다. 복수의 기보의 각 기보는 착수 순서에 따른 각각의 바둑판 상태(S)를 포함할 수 있다.
입력 특징 추출부(420)는 복수의 기보의 바둑판 상태(S)에서 입력 특징(IF)을 추출하여 형세 판단 신경망(410)에 트레이닝을 위한 입력 데이터로 제공할 수 있다. 바둑판 상태(S)의 입력 특징(IF)은 흑 플레이어의 최근 8 수에 대한 돌의 위치 정보과 백 플레이어의 최근 8 수에 대한 돌의 위치 정보와 현재 플레이어가 흑인지 백인지에 대한 차례 정보를 포함한 19*19*18의 RGB 이미지일 수 있다. 일 예로, 입력 특징 추출부(420)는 신경망 구조로 되어 있을 수 있으며 일종의 인코더를 포함할 수 있다.
정답 레이블 생성부(430)는 현재 바둑판 상태(S)로 전처리 과정을 거쳐 정답 레이블(ground truth)을 생성하고 정답 레이블을 형세 판단 신경망(410)에 트레이닝을 위한 타겟 데이터(
Figure pat00018
)로 제공할 수 있다. 정답 레이블 생성부(430)의 정답 레이블 생성은 후술하는 도 9 내지 도 11의 설명을 따른다. 일 예로, 정답 레이블 생성부(430)는 신경망 구조의 롤아웃 또는 인코더를 포함할 수 있다.
형세 판단 모델은 입력 특징(IF)을 입력 데이터로 하고 정답 레이블을 타겟 데이터(
Figure pat00019
)로 한 트레이닝 데이터 셋을 이용하여 형세 판단 신경망(410)에서 생성된 출력 데이터(o)가 타겟 데이터(
Figure pat00020
)와 동일해지도록 형세 판단 신경망(420)을 충분히 학습할 수 있다. 일 예로, 형세 판단 모델은 형세 판단 손실(
Figure pat00021
)을 이용할 수 있다. 형세 판단 손실(
Figure pat00022
)은 평균 제곱 에러(mean square error)를 이용할 수 있다. 예를 들어, 형세 판단 손실(
Figure pat00023
)은 수학식 2와 같다.
(수학식 2)
Figure pat00024
B는 바둑판의 전체 교차점 수이다. 바둑판은 가로 19줄 및 세로 19줄이 서로 교차하여 361개의 교차점이 배치된다. 이에 제한되는 것은 아니고 바둑판이 가로 9줄 및 세로 9줄일 경우 81개의 교차점이 배치될 수 있다.
Figure pat00025
는 현재 바둑판 상태(S)에서 정답 레이블에 따른 소정의 교차점(i)에 대한 형세값이다. 형세값에 대한 설명은 후술하는 도 11의 설명에 따른다.
Figure pat00026
는 현재 바둑판 상태(S)에서 소정의 교차점(i)을 형세 판단 신경망(410)에 입력하였을 때에 출력되는 출력 데이터이다. 형세 판단 모델은 형세 판단 손실(
Figure pat00027
)이 최소화되도록 경사 하강법(gradient-descent)과 역전파(backpropagation)을 이용하여 형세 판단 신경망(410) 내의 가중치와 바이어스 값들을 조절하여 형세 판단 신경망(410)를 학습시킬 수 있다.
형세 판단 신경망(410)은 신경망 구조로 구성될 수 있다. 일 예로, 형세 판단 신경망(420)은 19개의 레지듀얼(residual) 블록으로 구성될 수 있다. 도 8을 참조하면, 하나의 레지듀얼 블록은 256개의 3X3 컨볼루션 레이어, 일괄 정규화(batch normalization) 레이어, Relu 활성화 함수 레이어, 256개의 3X3 컨볼루션 레이어, 일괄 정규화(batch normalization) 레이어, 스킵 커넥션, Relu 활성화 함수 레이어 순으로 배치될 수 있다. 일괄 정규화(batch normalization) 레이어는 학습하는 도중에 이전 레이어의 파라미터 변화로 인해 현재 레이어의 입력의 분포가 바뀌는 현상인 공변량 변화(covariate shift)를 방지하기 위한 것이다. 스킵 커넥션은 블록 층이 두꺼워지더라도 신경망의 성능이 감소하는 것을 방지하고 블록 층을 더욱 두껍게 하여 전체 신경망 성능을 높일 수 있게 한다. 스킵 커넥션은 레지듀얼 블록의 최초 입력 데이터가 두 번째 일괄 정규화(batch normalization) 레이어의 출력과 합하여 두번째 Relu 활성화 함수 레이어에 입력되는 형태일 수 있다.
도 9 및 도 10은 본 발명의 형세 판단 모델을 학습하기 위해 사용되는 정답 레이블을 생성하기 위한 제1 및 제2 전처리 단계를 설명하기 위한 도면이고, 도 11은 본 발명의 형세 판단 모델을 학습하기 위해 사용되는 정답 레이블을 생성하기 위한 제3 전처리 단계를 설명하기 위한 도면이다.
정답 레이블 생성부(430)는 형세 판단 신경망(410)이 정확한 형세 판단을 할 수 있도록 학습하는데 이용되는 정답 레이블을 생성할 수 있다.
보다 구체적으로, 정답 레이블 생성부(430)는 입력 데이터에 기초가 되는 바둑판 상태(S)를 입력으로 받고, 현재 바둑판 상태(S)에서 끝내기를 하는 제1 전처리를 수행하여 제1 전처리 상태(P1)를 생성할 수 있다. 제1 전처리인 끝내기는 집 계산을 하기 전에 집의 경계가 명확해지도록 소정의 착수를 하여 게임을 마무리하는 과정이다. 일 예로, 도 9를 참조하면 정답 레이블 생성부(430)는 도 9의 (a)의 현재 바둑판 상태(S)에서 끝내기를 하여 도 9의 (b)의 제1 전처리 상태(P1)를 생성할 수 있다.
정답 레이블 생성부(430)는 제1 전처리 상태(P1)에서 집 경계 내에 배치되며 집 구분에 불필요한 돌을 제거하는 제2 전처리를 수행하여 제2 전처리 상태(P2)를 생성할 수 있다. 예를 들어, 집 경계 내에 배치되며 집 구분에 불필요한 돌은 사석일 수 있다. 사석은 집안에 상대방 돌이 배치되어 어떻게 두어도 잡힐수 밖에 없어 죽게 된 돌임을 앞서 설명하였다. 또한, 집 경계 내에 배치되며 집 구분에 불필요한 돌은 집안에 배치된 자신의 돌일 수 있다. 일 예로, 도 9를 참조하면 정답 레이블 생성부(430)는 도 9의 (b)의 제1 전처리 상태(P1)에서 집 구분에 불필요한 돌을 제거하여 도 9의 (c)의 제2 전처리 상태(P2)를 생성할 수 있다.
다른 예로, 도 10을 참조하면, 정답 레이블 생성부(430)는 도 10의 (a)의 현재 바둑판 상태(S)에서 제1 전처리인 끝내기를 위하여 도 10의 (b)와 같이 빨간색 x에 착수할 수 있다. 정답 레이블 생성부(430)는 도 10의 (b)에서 파란색 x로 표시된 사석을 제거하기 위하여 녹색 x에 착수하여 사석을 제거하고 사석 제거를 위해 사용된 녹색 x에 착수한 돌도 제거하여 제2 전처리를 수행할 수 있다.
정답 레이블 생성부(430)는 제2 전처리 상태(P2)에서 각 교차점을 -1 부터 +1까지 표시된 형세값(g, 단 g는 정수)으로 변경하는 제3 전처리를 수행할 수 있다. 즉, 제3 전처리는 정답 레이블 생성부(430)가 이미지 특징인 제2 전처리 상태(P2)를 수치 특징인 제3 전처리 상태(P3)로 변경하는 것이다. 일 예로, 제2 전처리 상태(P2)에서 교차점에 내 돌이 배치되면 0, 내 집 영역이면 +1, 상대 돌이 배치되면 0, 상대 집 영역이면 -1로 대응할 수 있다. 이 경우, 형세 판단 신경망(410)은 형세 판단시 집, 돌, 사석을 구분할 수 있도록 학습될 수 있다. 다른 예로, 제2 전처리 상태(P2)에서 교차점에 내 돌이 배치되면 0, 내 집 영역이면 +1, 상대 돌이 배치되면 0, 상대 집 영역이면 -1, 빅 또는 공배이면 0으로 대응할 수 있다. 다른 예의 경우 형세 판단 신경망(410)은 형세 판단시 빅 또는 공배를 구분할 수 있도록 학습될 수 있다. 예를 들어, 도 11을 참조하면, 정답 레이블 생성부(430)는 도 11의 (a)의 제2 전처리 상태(P2)를 도 11의 (b)의 제3 전처리 상태(P3)로 특징을 변경할 수 있다.
제3 전처리 상태(P3)는 바둑판 상태(S)에서의 형세 판단의 정답 레이블이 되고 형세 판단 신경망(410)의 학습 시 타겟 데이터(
Figure pat00028
)로 이용될 수 있다.
도 12는 본 발명의 형세 판단 모델의 형세 판단 결과를 설명하기 위한 도면이다.
학습된 형세 판단 모델은 바둑판 상태가 입력되면 바둑판의 모든 교차점에 대한 형세값을 제공할 수 있다. 즉, 바둑판 교차점의 361개 지점에 대해 형세값인 -1 내지 +1의 정수 값을 제공할 수 있다.
도 12를 참조하면, 형세 판단 모델 서버(400)는 형세 판단 모델이 제공한 형세값, 소정의 임계값, 돌의 유무를 이용하여 형세를 판단할 수 있다. 일 예로, 형세 판단 모델 서버(400)는 돌이 없는 곳이며, 형세 값이 제1 임계값을 넘으면 내 집이 될 가능성이 높은 곳으로 판단하고, +1에 가까운 값이면 내 집 영역으로 판단할 수 있다. 형세 판단 모델 서버(400)는 내 집일 가능성이 높을수록 점점 커지는 내 돌과 같은 색의 네모 형태로 표시할 수 있다. 형세 판단 모델 서버(400)는 돌이 없는 곳이며, 형세 값이 제2 임계값 이하이면 상대 집이 될 가능성이 높은 곳으로 판단하고, -1에 가까운 값이면 상대 집 영역으로 판단할 수 있다. 형세 판단 모델 서버(400)는 상대 집일 가능성이 높을수록 점점 커지는 상대 돌과 같은 색의 네모 형태로 표시할 수 있다. 형세 판단 모델 서버(400)는 돌이 없는 곳이며, 형세 값이 제3 임계값 범위 이내 또는 0에 가까운 값이면 공배 또는 빅으로 판단할 수 있다. 형세 판단 모델 서버(400)는 공배 또는 빅으로 판단하면 X로 표시할 수 있다. 형세 판단 모델 서버(400)는 돌이 있는 곳이며, 형세 값이 제3 임계값 범위 이내 또는 0에 가까운 값이면 내 돌 또는 상대 돌로 판단할 수 있다. 형세 판단 모델 서버(400)는 공배 또는 빅으로 판단하면 아무런 표시를 안할 수 있다. 형세 판단 모델 서버(400)는 돌이 있는 곳이며, 형세 값이 제1 임계값을 넘으면 상대 돌의 사석이 될 가능성이 높은 곳으로 판단하고, +1에 가까운 값이면 상대 돌의 사석으로 판단할 수 있다. 형세 판단 모델 서버(400)는 상대 돌의 사석일 가능성이 높을수록 점점 커지는 내 돌과 같은 색의 네모 형태로 표시할 수 있다. 형세 판단 모델 서버(400)는 돌이 있는 곳이며, 형세 값이 제2 임계값 이하이면 내 돌의 사석이 될 가능성이 높은 곳으로 판단하고, -1에 가까운 값이면 상대 돌의 사석으로 판단할 수 있다. 형세 판단 모델 서버(400)는 상대 돌의 사석일 가능성이 높을수록 점점 커지는 상대 돌과 같은 색의 네모 형태로 표시할 수 있다.
또한, 형세 판단 모델 서버(300)는 각 교차점에서 판단한 형세 판단 기준을 이용하여 현재 바둑판 상태에서의 계가 결과를 표시할 수 있다.
또한, 형세 판단 모델 서버(300)는 바둑판 상태에 따른 집수의 변화량 정보 및 공배수 정보를 생성할 수 있다. 예를 들어, 형세 판단 모델 서버(300)는 이전 착수에 따른 바둑판 상태의 형세 판단 결과와 현재 바둑판 상태의 형세 판단 결과를 이용하여 집수의 변화량 정보를 생성할 수 있다. 또한, 형세 판단 모델 서버(300)는 바둑판 상태의 형세 판단 결과를 이용하여 공배수 정보를 생성할 수 있다.
따라서, 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 그 장치는 딥러닝 신경망을 이용하여 바둑 형세를 판단할 수 있다. 또한, 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 장치는 바둑 규칙에 따른 집, 사석, 돌, 공배, 빅을 정확히 구분하여 바둑의 형세를 정확히 판단할 수 있다. 또한, 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 장치는 바둑 규칙에 따른 집, 사석, 돌, 공배, 빅을 예측하여 바둑의 형세를 정확히 판단할 수 있다. 또한, 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 장치는 바둑 대국 중 신속하게 형세를 판단할 수 있다.
도 13은 본 발명의 형세 판단 모델의 형세 판단 결과와 종래 기술에 따른 딥러닝 모델에 의한 형세 판단 결과를 비교한 모습이고, 도 14는 본 발명의 형세 판단 모델의 형세 판단 결과와 종래 기술에 따른 딥러닝 모델에 의한 형세 판단 결과를 비교한 모습이고, 도 15는 본 발명의 형세 판단 모델의 형세 판단 결과와 종래 기술에 따른 딥러닝 모델에 의한 형세 판단 결과를 비교한 모습이다.
도 13을 참조하면, 본 발명의 형세 판단 모델은 도 13의 (a)의 B영역과 같이 교차점 마다 집, 돌, 사석을 구분하여 형세를 판단한다. 그러나 종래 기술에 따른 딥러닝 모델에 의한 형세 판단 모델은 도 13의 (b)에서 도 13의 (a)와 대응되는 영역의 교차점에 대하여 집, 돌, 사석을 구분하지 못한다.
마찬가지로 도 14를 참조하면, 본 발명의 형세 판단 모델은 도 14의 (a)의 C영역과 같이 교차점 마다 집, 돌, 사석을 구분하여 형세를 판단한다. 그러나 종래 기술에 따른 딥러닝 모델에 의한 형세 판단 모델은 도 14의 (b)에서 도 13의 (a)와 대응되는 영역의 교차점에 대하여 집, 돌, 사석을 구분하지 못한다.
도 15을 참조하면, 본 발명의 형세 판단 모델은 도 15의 (a)의 D영역과 같이 백집을 제대로 인식한다. 그러나 종래 기술에 따른 딥러닝 모델에 의한 형세 판단 모델은 도 15의 (b)에서 도 15의 (a)와 대응되는 영역에서 백집을 구분하지 못한다.
도 16은 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 시스템에 신호 흐름에 대한 예시도이다.
도 16을 참조하면, 착수 모델 서버(300)는 인공지능 컴퓨터로써 자신의 턴에서 대국에서 이길 수 있도록 바둑돌의 착수를 수행할 수 있도록 바둑 규칙에 따라 스스로 학습하여 딥러닝 모델인 착수 모델을 트레이닝 할 수 있다(s11). 바둑서버(22)는 복수의 기보를 형세 판단 모델 서버(400)에게 송신할 수 있다. 형세 판단 모델 서버(400)는 트레이닝 데이터 셋을 생성할 수 있다. 먼저, 형세 판단 모델 서버(400)는 복수의 기보의 바둑판 상태에서 입력 특징을 추출할 수 있다(S13). 형세 판단 모델 서버(400)는 입력 특징을 추출한 바둑판 상태를 이용하여 정답 레이블을 생성할 수 있다(S14). 형세 판단 모델 서버(400)은 입력 특징을 입력 데이터로 하고 정답 레이블을 타겟 데이터로 한 트레이닝 데이터 셋을 이용하여 형세 판단 모델을 트레이닝 할 수 있다(S15). 단말기(100)는 바둑서버(200)에 인공지능 컴퓨터를 상대로 또는 다른 유저 단말기를 상대로 바둑 게임을 요청할 수 있다(S16). 바둑서버(200)는 단말기(100)가 인공지능 컴퓨터를 상대로 바둑 게임을 요청하면 착수 모델 서버(300)에 착수를 요청할 수 있다(S17). 바둑서버(200)는 바둑 게임을 진행하며 단말기(100)와 착수 모델 서버(300)가 자신의 턴에 착수를 수행할 수 있다(S18 내지 S20). 대국 중 단말기(100)는 바둑서버(200)에 형세 판단을 요청할 수 있다(S21). 바둑서버(200)는 형세 판단 모델 서버(400)에게 현재 바둑판 상태에 대한 형세 판단을 요청할 수 있다(S22). 형세 판단 모델 서버(400)는 현재 바둑판 상태의 입력 특징을 추출하고, 딥러닝 모델인 형세 판단 모델이 입력 특징을 이용하여 형세값을 생성하고, 바둑판 상태와 형세값을 이용하여 형세 판단을 수행할 수 있다(S23). 형세 판단 모델 서버(400)는 형세 판단 결과를 바둑서버(200)에 제공할 수 있다(S24). 바둑서버(200)는 단말기(100)에 형세 판단 결과를 제공할 수 있다(S25).
도 17은 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법 중 형세 판단 방법이고, 도 18은 도 17의 형세 판단 방법 중 정답 레이블을 생성하기 위한 트레이닝 데이터의 전처리 방법이다.
도 17을 참조하면, 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 형세 판단 모델 서버가 바둑서버로부터 복수의 기보를 수신하는 단계(S100)를 포함할 수 있다.
본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 형세 판단 모델 서버의 형세 판단 모델 중 입력 특징 추출부가 복수의 기보의 바둑판 상태에서 입력 특징을 추출하는 단계(S200)를 포함할 수 있다. 입력 특징을 추출하는 방법은 도 7의 설명을 따른다.
본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 형세 판단 모델 중 정답 레이블 생성부가 입력 특징을 추출한 바둑판 상태에 기초하여 정답 레이블을 생성하는 단계(S300)를 포함할 수 있다. 일 예로, 도 18을 참조하면, 정답 레이블 생성 단계(S300)는 정답 레이블 생성부가 현재 바둑판 상태에서 끝내기 하는 제1 전처리하는 단계(S301)를 포함할 수 있다. 제1 전처리하는 단계(S301)는 도 9 내지 도 10의 설명을 따른다. 정답 레이블 생성 단계(S300)는 정답 레이블 생성부가 제1 전처리된 바둑판 상태에서 불필요한 돌을 제거하는 제2 전처리하는 단계(S302)를 포함할 수 있다. 제2 전처리하는 단계(S302)는 도 9 내지 도 10의 설명을 따른다. 정답 레이블 생성 단계(S300)는 정답 레이블 생성부가 제2 전처리된 바둑판 상태의 각 교차점을 형세값으로 변경하는 제3 전처리하는 단계(S303)를 포함할 수 있다. 제3 전처리하는 단계(S303)는 도 11의 설명을 따른다. 정답 레이블 생성 단계(S300)는 제3 전처리 상태를 정답 레이블로 하여 형세 판단 신경망에 타겟 데이터로 제공하는 단계(S303)를 포함할 수 있다. 타겟 데이터를 제공하는 단계(S301)는 도 7 및 도 11의 설명을 따른다.
본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 트레이닝 데이터 셋을 이용하여 형세 판단 모델의 형세 판단 신경망을 트레이닝하는 단계(S400)을 포함할 수 있다. 형세 판단 신경망을 트레이닝(학습)하는 방법은 도 7의 설명을 따른다.
본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 형세 판단 신경망의 트레이닝이 완료되어 형세 판단 모델을 구축하는 단계(S500)를 포함한다. 일 예로, 형세 판단 신경망의 트레이닝의 완료는 도 7의 형세 판단 손실이 소정의 값 이하가 된 경우일 수 있다.
본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 단말기의 형세 판단 요청에 의해 현재 바둑판 상태가 형세 판단 모델에 입력되는 단계(S600)를 포함할 수 있다.
본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 형세 판단 모델이 입력된 현재 바둑판 상태의 형세 판단을 수행하는 단계(S700)를 포함할 수 있다. 형세 판단을 수행하는 단계(S700)는 도 12에서 설명한 형세 판단 모델이 현재 바둑판 상태의 형세값을 생성하는 설명을 따를 수 있다.
본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 형세 판단 모델 서버가 형세 판단 결과를 출력하는 단계(S800)를 포함할 수 있다. 형세 판단 결과를 출력하는 단계(S800)는 도 12에서 설명한 형세 판단 모델 서버가 형세값, 바둑판의 상태, 소정의 임계값을 이용하여 형세 판단 결과를 제공하는 설명을 따를 수 있다.
따라서, 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 딥러닝 신경망을 이용하여 바둑 형세를 판단할 수 있다. 또한, 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 바둑 규칙에 따른 집, 사석, 돌, 공배, 빅을 정확히 구분하여 바둑의 형세를 정확히 판단할 수 있다. 또한, 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 바둑 규칙에 따른 집, 사석, 돌, 공배, 빅을 예측하여 바둑의 형세를 정확히 판단할 수 있다. 또한, 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 바둑 대국 중 신속하게 형세를 판단할 수 있다.
<일 실시예에 따른 시간 관리 모델 서버>
도 19는 본 발명의 일 실시예에 따른 시간 관리 모델 서버의 시간 관리부를 설명하기 위한 도면이고, 도 20은 본 발명의 일 실시예에 따른 시간 관리부의 분산 산출을 설명하기 위한 도면이다.
본 발명의 일 실시예에 따른 딥러닝 기반의 바둑 게임 서비스는 시간 관리 모델 서버(500)가 시간 관리 정보 중 하나인 착수 준비 시간을 결정하고, 착수 모델이 기 설정된 또는 결정된 착수 준비 시간에 기초하여 착수할 수 있다. 시간 관리 모델 서버(500)는 사용자와 인공지능 컴퓨터의 대국 또는 인공지능 컴퓨터 간의 대국에서 경기가 막상막하일 경우 인공지능 컴퓨터가 착수하기 더 좋은 수를 두기 위하여 좋은 수를 찾기 위해 착수 준비 시간을 증가시킬 수 있다.
보다 구체적으로, 도 19를 참조하면, 시간 관리 모델 서버(500)는 착수 모델 서버(300) 로부터 탐색 확률값(
Figure pat00029
), 방문 횟수(N) 또는 가치값(V)을 수신하고, 착수 모델 서버(300)로 착수 준비 시간(PP)을 제공할 수 있다. 일 예로, 착수 준비 시간(PP)은 평균 착수 준비 시간, 제1 착수 준비 시간 또는 제2 착수 준비 시간을 포함할 수 있다. 제1 착수 준비 시간은 평균 착수 준비 시간보다 길고, 제2 착수 준비 시간은 제1 착수 준비 시간보다 길 수 있다. 시간 관리 모델 서버(500)는 시간 관리부(510)를 포함할 수 있다. 시간 관리부(510)는 탐색 확률값(
Figure pat00030
) 및 방문 횟수(N)에 기초하여 착수 준비 시간(PP)을 결정할 수 있다. 시간 관리부(510)는 탐색 확률값(
Figure pat00031
), 방문 횟수(N)을 이용하여 분산을 산출하고, 분산과 임계 분산 값을 비교하여 착수 준비 시간을 결정할 수 있다. 즉, 착수 후보점에 대한 분산이 낮을수록 착수 후보점이 가장 좋은 수가 아닐 가능성이 높다는 것이고 이러한 정보에 비추어 현재 경기가 막상막하일 가능성이 높을 수 있다. 이에, 시간 관리부는 분산이 임계 분산 값보다 낮을 경우 착수 준비 시간을 더 길게 하여 착수 모델이 더 좋은 수를 착도록 할 수 있다. 분산은 수학식 3과 수학식 4를 이용하여 구할 수 있다.
(수학식 3)
Figure pat00032
수학식 3에서 n은 교차점 수이고,
Figure pat00033
는 각 교차점에 대한 방문 횟수이고,
Figure pat00034
는 각 교차점에 대한 탐색 확률값이고,
Figure pat00035
는 평균 방문 횟수이다.
(수학식 4)
Figure pat00036
수학식 4에서 Var는 분산이다.
시간 관리부(510)는 분산(Var)이 임계 분산값보다 낮으면 제1 착수 준비 시간으로 착수 준비 시간을 결정할 수 있고, 분산(Var)이 임계 분산값보다 낮지 않으면 평균 착수 준비 시간으로 착수 준비 시간을 결정할 수 있다.
예를 들어, 도 20을 참조하면, 임계 분산값은 0.05일 수 있다. 도 20(a)의 경우, 시간 관리부(510)는 분산(Var)이 0.2109로 산출할 수 있다. 이 경우, 시간 관리부(510)는 분산(Var)이 임계 분산값보다 높으므로 평균 착수 준비 시간으로 착수 준비 시간을 결정할 수 있다. 도 20(b)의 경우, 시간 관리부(510)는 분산(Var)이 0.0145로 산출할 수 있다. 이 경우, 시간 관리부(510)는 분산(Var)이 임계 분산값보다 낮으므로 제1 착수 준비 시간으로 착수 준비 시간을 결정할 수 있다. 이에, 착수 모델은 더 오랫동안 또는 더 많은 횟수의 MCTS 시뮬레이션을 수행하여 더 좋은 착수 후보점을 선택할 수 있다.
또한, 시간 관리부(510)는 가치값(V)에 기초하여 착수 준비 시간(PP)을 결정할 수 있다. 보다 구체적으로, 시간 관리부(510)는 제1 착수 준비 시간 결정 후 가치값(V)이 임계 가치값 이하이면 착수 준비 시간(PP)을 제2 착수 준비 시간으로 결정할 수 있다. 예를 들어, 임계 가치값은 50.0%일 수 있다. 즉, 착수 후보점의 가치값이 낮다는 것은 현재 경기에서 지고 있을 가능성이 높다는 것이므로 시간 관리부(510)가 더 좋은 착수 후보점을 찾도록 착수 모델이 더 오랫동안 또는 더 많은 횟수의 MCTS 시뮬레이션을 수행할 수 있도록 하는 것이다.
따라서, 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 장치는 바둑 게임 시간 관리를 할 수 있다. 또한, 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 장치는 중요한 국면에서 착수 준비 시간을 변경할 수 있다.
도 21은 본 발명의 일 실시예에 따른 시간 관리 모델 서버의 바둑 게임 서비스 시스템에서의 신호 흐름에 대한 예시도이다.
도 21을 참조하면, 착수 모델 서버(300)는 대국 중에 대국에서 이기기 위한 착수점을 찾기 위하여 MCTS 시뮬레이션을 수행할 수 있다(S2101). 착수 모델 서버(300)는 MCTS 시뮬레이션 결과 생성된 탐색 확률값(
Figure pat00037
), 방문 횟수(N), 가치값(V)를 시간 관리 모델 서버(500)에 전송할 수 있다(S2102). 시간 관리 모델 서버(500)는 수신한 탐색 확률값(
Figure pat00038
), 방문 횟수(N), 가치값(V)에 기초하여 착수 준비 시간을 결정할 수 있다(S2103). 시간 관리 모델 서버(500)는 결정된 착수 준비 시간을 착수 모델 서버(300)에 전송할 수 있다(S2104). 착수 모델 서버(300)는 수신한 착수 준비 시간 또는 기설정된 착수 준비 시간에 기초하여 착수를 수행할 수 있다(S2105). 착수 모델 서버(300)는 수신한 착수 준비 시간과 기설정된 착수 준비 시간 중 수신한 착수 준비 시간에 우선하여 착수를 수행할 수 있다.
도 22는 본 발명의 일 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법 중 착수 준비 시간 결정 방법이다.
도 22를 참조하면, 본 발명의 일 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 탐색 확률값(
Figure pat00039
), 방문 횟수(N) 또는 가치값(V)을 수신하는 단계(S2201)을 포함할 수 있다.
본 발명의 일 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500) 중 시간 관리부가 시간 관리 모델 서버(500)가 탐색 확률값(
Figure pat00040
), 방문 횟수(N)에 기초하여 분산을 산출하는 단계(S2202)를 포함할 수 있다. 분산을 산출하는 방법은 도 19 및 도 20의 설명을 따른다.
본 발명의 일 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500) 중 시간 관리부가 산출된 분산이 임계 분산값 미만인지 판단하는 단계(S2203)를 포함할 수 있다.
본 발명의 일 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500) 중 시간 관리부가 분산이 임계 분산값 미만이 아니면 착수 준비 시간을 평균 착수 준비 시간으로 결정하는 단계(S2204)를 포함할 수 있다. 착수 준비시간을 평균 착수 준비 시간으로 결정하는 방법은 도 19 및 도 20의 설명을 따른다.
본 발명의 일 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500) 중 시간 관리부가 분산이 임계 분산값 미만이면 착수 준비 시간을 제1 착수 준비 시간으로 결정하는 단계(S2205)를 포함할 수 있다. 착수 준비 시간을 제1 착수 준비 시간으로 결정하는 방법은 도 19 및 도 20의 설명을 따른다.
본 발명의 일 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500) 중 시간 관리부가 착수 준비 시간을 제1 착수 준비 시간으로 결정 후 가치값이 임계 가치값 이하인지 판단하는 단계(S2206)를 포함할 수 있다. 가치값이 임계 가치값 이하인지 판단하는 방법은 도 19 및 도 20의 설명을 따른다. 시간 관리부는 가치값이 임계 가치값 이하가 아니면 제1 착수 준비 시간을 착수 준비 시간으로 결정할 수 있다.
본 발명의 일 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500) 중 시간 관리부가 가치값이 임계 가치값 이하이면 착수 준비 시간을 제2 착수 준비 시간으로 결정하는 단계(S2207)를 포함할 수 있다. 착수 준비 시간을 제2 착수 준비 시간으로 결정하는 방법은 도 19 및 도 20의 설명을 따른다.
본 발명의 일 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500) 중 시간 관리부가 결정된 착수 준비 시간을 전송하는 단계(S2208)을 포함할 수 있다.
따라서, 일 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 바둑 게임 시간 관리를 할 수 있다. 또한, 일 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 중요한 국면에서 착수 준비 시간을 변경할 수 있다.
<다른 실시예에 따른 시간 관리 모델 서버>
도 23은 본 발명의 다른 실시예에 따른 시간 관리 모델 서버의 시간 조정부를 설명하기 위한 도면이고, 도 24는 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법 중 착수 준비 시간 결정 방법이고, 도 25는 본 발명의 다른 실시예에 따른 가치값의 변동 추세에 따라서 착수 준비 시간을 결정하는 방법을 설명하기 위한 도면의 일례이고, 도 26은 본 발명의 다른 실시예에 따른 가치값의 변동 폭에 따라서 착수 준비 시간을 결정하는 방법을 설명하기 위한 도면의 일례이다.
도 23을 참조하면, 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스는 시간 관리 모델 서버(500)가 시간 관리 정보 중 하나인 착수 준비 시간(PP)을 결정할 때, 가치값(V) 및/또는 상대 착수시간(OT: 즉, 상대방의 착수 준비 시간)을 이용하여 상기 착수 준비 시간(PP)을 결정할 수 있다. 또한, 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스는 기 설정된 또는 결정된 착수 준비 시간(PP)에 기초하여 착수할 수 있다.
이때, 시간 관리 모델 서버(500)는 사용자와 인공지능 컴퓨터의 대국 또는 인공지능 컴퓨터 간의 대국에서 경기의 중요한 국면을 마주한 경우(예컨대, 경기가 막상막하인 경우 등) 인공지능 컴퓨터가 착수하기 더 좋은 수를 두기 위하여 좋은 수를 찾기 위한 착수 준비 시간(PP)을 증가시킬 수 있다.
자세히, 시간 관리 모델 서버(500)는 시간 조정부(550)를 포함할 수 있다. 시간 조정부(550)는 가치값(V) 및/또는 상대 착수시간(OT)에 기초하여 착수 준비 시간(PP)을 결정할 수 있다.
구체적으로, 도 24를 참조하면, 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 가치값(V)을 기초로 착수 준비 시간(PP)을 결정하게 할 수 있다.
자세히, 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 가치값(V)의 변화 즉, 승률의 변화에 따라서 착수 준비 시간(PP)을 결정하게 할 수 있다.
보다 상세히, 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 복수의 가치값(V)을 수신하는 단계(S2301)를 포함할 수 있다.
즉, 시간 관리 모델 서버(500)는 착수 모델 서버(300)로부터 바둑 대국의 매 착수에 따른 복수의 가치값(V)을 수신할 수 있다.
또한, 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 수신된 복수의 가치값(V)을 누적하여 저장하는 단계(S2302)를 포함할 수 있다.
자세히, 시간 관리 모델 서버(500)는 착수 모델 서버(300)로부터 수신된 복수의 가치값(V)을 순차적으로 누적하여 저장할 수 있다.
또한, 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 누적된 가치값(V)을 기초로 승률변화를 판단하는 단계(S2303)를 포함할 수 있다.
구체적으로, 시간 관리 모델 서버(500)는 누적된 가치값(V)에 기초하여 가치값(V)의 변동 추세 및/또는 변동 폭을 파악할 수 있다.
여기서, 상기 가치값(V)의 변동 추세란 가치값(V)(즉, 승률)이 점차적으로 상승하고 있는지 또는 하락하고 있는지 여부를 나타내는 가치값(V)의 변화율을 의미할 수 있다. 자세히, 상기 가치값(V)의 변동 추세는 대국 시작 이후 소정의 착수 시점부터 현재 착수 시점까지의 복수의 가치값(V)의 변화 상태를 나타낸다. 보다 상세히는, 상기 복수의 가치값(V) 각각에 대한 변화율이 소정의 횟수 이상 음수인 경우 즉, 가치값(V)이 소정의 횟수 이상 감소하는 경우를 상기 가치값(V)이 점차적으로 하락하고 있는 형세라고 판단할 수 있다. 반면, 상기 복수의 가치값(V) 각각에 대한 변화율이 소정의 횟수 이상 양수인 경우 즉, 가치값(V)이 소정의 횟수 이상 증가하는 경우를 상기 가치값(V)이 점차적으로 상승하고 있는 형세라고 판단할 수 있다. 또한, 이러한 가치값(V)의 변동 추세는 해당 가치값(V) 변화율의 기울기로 판단할 수도 있다.
예를 들어, 상기 가치값(V)의 변동 추세는 최근 착수된 5수에 대한 가치값(V)의 변화율 및/또는 기울기(즉, 가치값(V)이 상승하고 있는지 또는 가치값(V)이 하락하고 있는지 여부)일 수 있다.
한편, 상기 가치값(V)의 변동 폭이란 가치값(V)의 변화량(변화 정도)를 의미할 수 있다.
또한, 시간 관리 모델 서버(500)는 파악된 가치값(V)의 변동 추세 및/또는 변동 폭을 기초로 상기 누적된 복수의 가치값(V)에 기초한 승률변화를 판단할 수 있다.
계속해서, 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 위와 같이 판단된 승률변화에 따라서 착수 준비 시간(PP)을 결정하는 단계(S2304)를 포함할 수 있다.
자세히, 도 25를 참조하면, 시간 관리 모델 서버(500)는 가치값(V)의 변동 추세에 따른 착수 준비 시간(PP)을 결정할 수 있다.
보다 상세히, 시간 관리 모델 서버(500)는 상기 복수의 가치값(V)에 기초한 변동 추세가 지속적으로 감소하는 형세이면, 착수 준비 시간(PP)을 증가시킬 수 있다. 이는, 승률이 지속적으로 하락하는 경우 더 좋은 착수점을 찾기 위해 더 많은 착수 준비 시간(PP)을 할당해야 하는 중요한 국면이라는 점을 감안한 것이다.
예를 들면, 시간 관리 모델 서버(500)는 최근 착수된 5수(예컨대, 72수, 74수, 76수, 78수 및 80수)에 대한 가치값(V)의 변동 추세가 점차 하락하는 형세인 경우(예컨대, 72수의 가치값: 70%, 74수의 가치값: 67%, 76수의 가치값: 65%, 78수의 가치값: 63% 및 80수의 가치값: 61%), 중요한 국면이라고 판단하고 현재 사용할 착수 준비 시간(PP)을 증가시킬 수 있다.
또한, 도 26을 참조하면, 시간 관리 모델 서버(500)는 가치값(V)의 변동 폭에 따른 착수 준비 시간(PP)을 결정할 수 있다.
자세히, 시간 관리 모델 서버(500)는 상기 가치값(V)의 변동 폭이 소정의 기준(예컨대, 기설정된 수치 및/또는 비율 등) 이상으로 크게 감소하는 형세이면, 해당 상황을 중요한 국면으로 판단하고 더 좋은 착수점을 찾기 위하여 보다 많은 착수 준비 시간(PP)을 할당하게 할 수 있다.
예를 들어, 시간 관리 모델 서버(500)는 최근 착수된 2수(예컨대, 64수 및 66수) 간의 가치값(V) 변동 폭이 소정의 기준(예컨대, 기설정된 수치 및/또는 비율 등) 이상으로 크게 감소하는 형세인 경우(예컨대, 64수의 가치값: 58% 및 66수의 가치값: 35%), 중요한 국면이라고 판단하고 현재 사용할 착수 준비 시간(PP)을 증가시킬 수 있다.
이때, 시간 관리 모델 서버(500)는 착수 준비 시간(PP)을 증가시킬 시 해당 착수 준비 시간(PP)을 얼마나 증가시킬지에 대한 착수 준비 시간(PP) 증가량(이하, 착수시간 증가량)을 소정의 방식에 따라서 결정할 수 있다.
자세히, 시간 관리 모델 서버(500)는 상술된 시간 관리부(510)에 의하여 결정된 착수 준비 시간(PP)을 기초 착수 준비 시간(이하, 기초 착수시간)으로 설정할 수 있다.
또한, 시간 관리 모델 서버(500)는 상기 1) 기초 착수시간을 기반으로 상기 착수시간 증가량을 결정할 수 있다.
구체적으로, 시간 관리 모델 서버(500)는 상기 기초 착수시간에 기반한 소정의 연산을 기초로 산출되는 소정의 수치만큼 상기 착수시간 증가량을 결정할 수 있다.
실시예로 시간 관리 모델 서버(500)는 상기 기초 착수시간 대비 소정의 퍼센트(예컨대, 기 설정된 수치 이하의 퍼센트 등)만큼 증가하도록 상기 착수시간 증가량을 결정할 수 있다. 예를 들면, 시간 관리 모델 서버(500)는 상기 기초 착수시간이 10초이고 상기 소정의 퍼센트가 30%이면, 상기 착수시간 증가량을 3초로 결정할 수 있다.
또한, 시간 관리 모델 서버(500)는 위와 같이 결정된 착수시간 증가량을 상기 기초 착수시간에 반영하여 조정된 착수 준비 시간(PP)을 결정할 수 있다.
또는, 시간 관리 모델 서버(500)는 2) 바둑 게임 서비스 상에 기 설정되어 있는 초읽기 시간을 기초로 상기 착수시간 증가량을 결정할 수 있다.
자세히, 시간 관리 모델 서버(500)는 바둑 게임 서비스에 기 설정된 초읽기 시간을 상기 착수시간 증가량으로 결정하고, 이를 상기 시간 관리부(510)에 의하여 결정된 기초 착수시간에 가산하여 조정된 착수 준비 시간(PP)을 결정할 수 있다. 예를 들어, 시간 관리 모델 서버(500)는 기 설정된 초읽기 시간이 60초이고 상기 기초 착수시간이 10초이면, 최종적으로 조정된 착수 준비 시간(PP)을 70초로 결정할 수 있다.
계속해서, 시간 관리 모델 서버(500)는 위와 같이 결정된 착수 준비 시간(PP)을 착수 모델 서버(300)로 제공할 수 있다.
즉, 시간 관리 모델 서버(500)의 시간 조정부(550)는 상기 착수 준비 시간(PP)을 수신한 착수 모델 서버(300)의 착수 모델이 더 오랫동안 또는 더 많은 횟수의 MCTS 시뮬레이션을 수행하여 보다 좋은 착수 후보점을 선택하게 할 수 있다.
따라서, 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 장치는 바둑 게임 시간 관리를 할 수 있다. 또한, 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 장치는 중요한 국면에서 착수 준비 시간(PP)을 변경할 수 있다.
도 27은 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법 중 착수 준비 시간(PP) 결정 방법이고, 도 28은 본 발명의 다른 실시예에 따른 상대 착수시간(OT)에 따라서 착수 준비 시간(PP)을 결정하는 방법을 설명하기 위한 도면의 일례이다.
한편, 도 27을 참조하면, 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 상대 착수시간(OT)을 기초로 착수 준비 시간(PP)을 결정하게 할 수 있다.
자세히, 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 상대방의 직전 착수(즉, 현재시점 바로 이전에 착수된 상대방의 착수)에 소요된 상대 착수시간(이하, 직전 상대 착수시간)과, 상대방이 사용한 복수의 상대 착수시간(OT)의 평균(이하, 평균 상대 착수시간)을 이용하여 착수 준비 시간(PP)을 결정하게 할 수 있다.
구체적으로, 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 복수의 상대 착수시간(OT)을 수신하는 단계(S2401)를 포함할 수 있다.
보다 상세히, 시간 관리 모델 서버(500)는 착수 모델 서버(300) 및/또는 바둑서버(500)로부터 대국이 진행되는 과정에서 상대방이 수행한 매 착수마다 소요된 상대방의 착수 준비 시간(즉, 상대 착수시간(OT))을 복수 개 수신할 수 있다.
이때, 상기 수신되는 복수의 상대 착수시간(OT)은 대국 시작 이후 소정의 시점부터 상기 직전 착수 시점 또는 상기 직전 착수 시점을 제외한 그 이전까지의 시점에 대한 모든 상대 착수시간(OT)을 포함할 수 있다.
예를 들면, 상기 복수의 상대 착수시간(OT)은 상대방의 첫 착수 시점의 제1 착수에 대한 제1 상대 착수시간(OT)부터 상기 직전 상대 착수시간까지의 모든 상대 착수시간(OT)을 포함할 수도 있고, 또는 상기 상대방의 첫 착수 시점의 제1 착수에 대한 제1 상대 착수시간(OT)부터 상기 직전 상대 착수시간을 제외한 그 이전까지의 모든 상대 착수시간(OT)을 포함할 수도 있다.
또한, 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 상기 수신된 복수의 상대 착수시간(OT)에 따른 평균 상대 착수시간을 산출하는 단계(S2402)를 포함할 수 있다.
실시예로, 시간 관리 모델 서버(500)는 상기 복수의 상대 착수시간(OT)에 대한 평균연산을 수행하여 상기 평균 상대 착수시간을 산출할 수 있다.
또한, 본 발명의 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 위와 같이 산출된 평균 상대 착수시간과 직전 상대 착수시간을 기초로 착수 준비 시간(PP)을 결정하는 단계(S2403)를 포함할 수 있다.
이때, 상기 직전 상대 착수시간은 상기 복수의 상대 착수시간(OT)에 포함하여 착수 모델 서버(300) 및/또는 바둑서버(500)로부터 수신할 수도 있고, 상기 복수의 상대 착수시간(OT)과는 구분하여 상기 착수 모델 서버(300) 및/또는 바둑서버(500)로부터 수신할 수도 있다.
자세히, 도 28을 참조하면, 시간 관리 모델 서버(500)는 상대방의 직전 착수(즉, 현재시점 바로 이전에 착수된 상대방의 착수)에 소요된 직전 상대 착수시간이 상기 산출된 평균 상대 착수시간 보다 크면, 착수 준비 시간(PP)을 증가시킬 수 있다. 이는, 상대방이 대국 과정에서 사용한 평균적인 착수 준비 시간(PP)보다 직전 착수에서 보다 많은 착수 준비 시간(PP)을 사용했다는 것은 상기 직전 착수가 상대방에게 중요한 국면이었다는 점을 고려한 것이다. 그리하여 상대방에게 중요한 국면이었던 이전 착수 이후 수행하는 현재 착수 또한 중요한 국면이라고 판단하고 더 좋은 착수점을 찾기 위하여 보다 많은 착수 준비 시간(PP)을 할당하도록 착수 준비 시간(PP)을 증가시킬 수 있다.
예를 들면, 시간 관리 모델 서버(500)는 상대방이 최근 착수한 8수(예컨대, 54수, 56수, 58수, 60수, 62수, 64수, 66수 및 직전 착수인 68수) 각각에 대한 상대 착수시간(OT)을 포함하는 복수의 상대 착수시간(OT)(예컨대, 54수 상대 착수시간: 20초, 56수 상대 착수시간: 10초, 58수 상대 착수시간: 20초, 60수 상대 착수시간: 10초, 62수 상대 착수시간: 30초, 64수 상대 착수시간: 5초, 66수 상대 착수시간: 2초 및 68수 상대 착수시간: 38초)을 수신할 수 있다.
또한 본 예시에서 시간 관리 모델 서버(500)는 수신된 복수의 상대 착수시간(OT)에 대한 평균연산을 수행하여 평균 상대 착수시간(예컨대, 약 14초)을 산출할 수 있다.
또한 본 예시에서 시간 관리 모델 서버(500)는 상기 산출된 평균 상대 착수시간(예컨대, 약 14초)과 상기 직전 착수(예컨대, 68수)에 대한 직전 상대 착수시간(예컨대, 38초)을 비교할 수 있다.
또한 본 예시에서 시간 관리 모델 서버(500)는 상기 비교를 통하여 상기 평균 상대 착수시간(예컨대, 약 14초)보다 상기 직전 상대 착수시간(예컨대, 38초)이 더 크다고 판단되면, 중요한 국면이라고 판단하고 현재 사용할 착수 준비 시간(PP)을 증가시킬 수 있다.
이때, 시간 관리 모델 서버(500)는 착수 준비 시간(PP)을 증가시킬 시 해당 착수 준비 시간(PP)을 얼마나 증가시킬지에 대한 착수시간 증가량을 소정의 방식에 따라서 결정할 수 있다.
자세히, 시간 관리 모델 서버(500)는 상술된 바와 같이 1) 시간 관리부(510)에 의하여 결정된 기초 착수시간을 기반으로 상기 착수시간 증가량을 결정할 수 있다.
구체적으로, 시간 관리 모델 서버(500)는 상기 기초 착수시간에 기반한 소정의 연산을 기초로 산출되는 소정의 수치만큼 상기 착수시간 증가량을 결정할 수 있다.
실시예로 시간 관리 모델 서버(500)는 상기 기초 착수시간 대비 소정의 퍼센트(예컨대, 기 설정된 수치 이하의 퍼센트 등)만큼 증가하도록 상기 착수시간 증가량을 결정할 수 있다. 예를 들면, 시간 관리 모델 서버(500)는 상기 기초 착수시간이 10초이고 상기 소정의 퍼센트가 30%이면, 상기 착수시간 증가량을 3초로 결정할 수 있다.
또한, 시간 관리 모델 서버(500)는 위와 같이 결정된 착수시간 증가량을 상기 기초 착수시간에 반영하여 조정된 착수 준비 시간(PP)을 결정할 수 있다.
또는, 시간 관리 모델 서버(500)는 2) 바둑 게임 서비스 상에 기 설정되어 있는 초읽기 시간을 기초로 상기 착수시간 증가량을 결정할 수 있다.
자세히, 시간 관리 모델 서버(500)는 바둑 게임 서비스에 기 설정된 초읽기 시간을 상기 착수시간 증가량으로 결정하고, 이를 상기 시간 관리부(510)에 의하여 결정된 기초 착수시간에 가산하여 조정된 착수 준비 시간(PP)을 결정할 수 있다. 예를 들어, 시간 관리 모델 서버(500)는 기 설정된 초읽기 시간이 60초이고 상기 기초 착수시간이 10초이면, 최종적으로 조정된 착수 준비 시간(PP)을 70초로 결정할 수 있다.
또는, 시간 관리 모델 서버(500)는 3) 상대 착수시간(OT)에 따라서 착수시간 증가량을 결정할 수 있다.
이때, 상기 상대 착수시간(OT)은 직전 상대 착수시간 및/또는 평균 상대 착수시간을 포함할 수 있다.
구체적으로, 시간 관리 모델 서버(500)는 상기 1] 기초 착수시간과 상기 직전 상대 착수시간을 비교하고, 비교의 결과 더 큰 시간을 가지는 착수시간을 현재 착수에 사용할 착수 준비 시간(PP)으로 결정할 수 있다.
즉, 시간 관리 모델 서버(500)는 상술된 시간 관리부(510)에서 도출된 상기 기초 착수시간 보다 상기 직전 상대 착수시간이 큰 경우, 해당 격차만큼을 착수시간 증가량으로 결정할 수 있다. 예를 들면, 시간 관리 모델 서버(500)는 상기 기초 착수시간이 35초이고 상기 직전 상대 착수시간이 예컨대 38이면, 더 큰 시간을 가지는 상기 직전 상대 착수시간을 착수 준비 시간(PP)으로 설정하기 위하여 상기 착수시간 증가량을 두 착수시간 간 격차인 3초로 결정할 수 있다.
또는, 시간 관리 모델 서버(500)는 상기 2] 평균 상대 착수시간 대비 직전 상대 착수시간 비율(이하, 상대 착수시간 비율)을 산출하고, 산출된 상대 착수시간 비율에 기초하여 착수시간 증가량을 결정할 수 있다.
자세히, 시간 관리 모델 서버(500)는 상기 상대 착수시간 비율(즉, 직전 상대 착수시간/평균 상대 착수시간)을 산출하여 상대방이 평균적으로 사용한 착수 준비 시간(PP)에 대비하여 직전 착수에 어느정도 비율의 시간을 사용하였는지 판단할 수 있다.
또한, 시간 관리 모델 서버(500)는 상기 산출된 상대 착수시간 비율(예컨대, 소정의 퍼센트)이 소정의 기준(실시예로, 소정의 임계값(예컨대, 1.00%)을 초과 등)을 충족하는 경우, 상기 상대 착수시간 비율을 상기 기초 착수시간에 반영하여 착수시간 증가량을 결정할 수 있다. 즉, 시간 관리 모델 서버(500)는 상기 상대 착수시간 비율을 토대로 상대방이 평균적인 착수 준비 시간(PP)보다 직전 착수에 더 큰 시간을 사용하였다고 판단되면(실시예로, 상대 착수시간 비율이 소정의 임계값을 초과하면), 해당 상대 착수시간 비율을 상기 기초 착수시간에 적용하여 착수시간 증가량을 결정할 수 있다.
실시예로, 시간 관리 모델 서버(500)는 상기 산출된 상대 착수시간 비율이 소정의 임계값(예컨대, 1.00%)을 초과하는 경우, 상기 산출된 상대 착수시간 비율과 상기 기초 착수시간을 이용한 소정의 연산(예컨대, 곱셈 연산 등)을 수행할 수 있고, 그 연산의 결과를 토대로 착수시간 증가량을 결정할 수 있다. 여기서는 상기 소정의 기준을 소정의 임계값(예컨대, 1.00%)을 초과하는 것으로 한정하여 설명하나 이에 제한되는 것은 아니다.
예를 들면, 시간 관리 모델 서버(500)는 상기 기초 착수시간이 '30초'이고 상기 평균 상대 착수시간이 '40초'이고 상기 직전 상대 착수시간이 '60초'인 경우, 평균 상대 착수시간과 상기 직전 상대 착수시간에 기반하여 상기 상대 착수시간 비율을 '1.5%(60초/40초)'로 산출할 수 있다. 또한, 시간 관리 모델 서버(500)는 상기 산출된 상대 착수시간 비율이 소정의 임계값인 '1.00%'를 초과하는지 판단할 수 있다. 또한 시간 관리 모델 서버(500)는 상기 상대 착수시간 비율이 소정의 임계값을 초과하면, 상기 상대 착수시간 비율(본 예시에서, '1,5%')을 상기 기초 착수시간(본 예시에서, '30초')에 소정의 연산(본 예시에서 곱셈 연산)을 이용하여 적용할 수 있다. 그리하여 시간 관리 모델 서버(500)는 최종적인 착수 준비 시간(PP)을 '45초('30초*1.5')'로 도출할 수 있고 이에 따른 착수시간 증가량을 '15초'로 결정할 수 있다.
즉, 시간 관리 모델 서버(500)는 대국 과정에서 상대방이 착수에 소요한 시간인 상대 착수시간(OT)을 기초로 착수시간 증가량을 결정할 수 있고, 결정된 착수시간 증가량을 상기 기초 착수시간에 반영하여 조정된 착수 준비 시간(PP)을 결정할 수 있다.
또한, 시간 관리 모델 서버(500)는 위와 같이 결정된 착수 준비 시간(PP)을 착수 모델 서버(300)로 제공할 수 있다.
그리하여 시간 관리 모델 서버(500)의 시간 조정부(550)는 상기 착수 준비 시간(PP)을 수신한 착수 모델 서버(300)의 착수 모델이 더 오랫동안 또는 더 많은 횟수의 MCTS 시뮬레이션을 수행하여 보다 좋은 착수 후보점을 선택하게 할 수 있다.
따라서, 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 장치는 바둑 게임 시간 관리를 할 수 있고, 중요한 국면에서 착수 준비 시간(PP)을 변경할 수 있다.
<또 다른 실시예에 따른 시간 관리 모델 서버>
도 29은 본 발명의 또 다른 실시예에 따른 시간 관리 모델 서버의 시간 관리 모델을 설명하기 위한 도면이고, 도 30은 본 발명의 또 다른 실시예에 따른 게임 시간 정보를 생성하기 위해 사용되는 집수 변화량을 설명하기 위한 도면이고, 도 31은 본 발명의 또 다른 실시예에 따른 게임 시간 정보를 생성하기 위해 사용되는 집수 변화량을 설명하기 위한 도면이고, 도 32는 본 발명의 또 다른 실시예에 따른 게임 시간 정보를 생성하기 위해 사용되는 공배수를 설명하기 위한 도면이다.
도 29을 참조하면, 본 발명의 실시예에 따른 딥러닝 기반의 바둑 게임 서비스는 시간 관리 모델 서버(500)의 시간 관리 모델을 이용하여 현재 바둑판 상태에서 게임 시간 정보를 생성할 수 있다. 게임 시간 정보는 바둑판 상태에 따른 경기 종료시까지 예측되는 남은 경기 길이를 포함할 수 있다. 시간 관리 모델은 시간 관리 모델 서버(500)의 딥러닝 모델로써 시간 관리 제1 신경망(520), 시간 관리 제2 신경망(530), 제1 입력 특징 생성부(540)를 포함할 수 있다.
시간 관리 모델은 현재 바둑판 상태의 게임 시간 정보인 남은 경기 길이를 예측할 수 있도록 지도 학습(supervised learning)할 수 있다. 보다 구체적으로, 시간 관리 모델 서버(500)는 바둑판 상태(S)에 따른 남은 경기 길이 예측을 위한 트레이닝 데이터 셋을 생성하고 생성된 트레이닝 데이터 셋을 이용하여 시간 관리 모델이 현재 바둑판 상태(S)에 따른 남은 경기 길이를 예측할 수 있도록 학습시킬 수 있다. 시간 관리 모델 서버(500)는 바둑서버(200)로부터 복수의 기보를 수신할 수 있다. 복수의 기보의 각 기보는 착수 순서에 따른 각각의 바둑판 상태(S)를 포함할 수 있다. 또한, 복수의 기복의 각 기보는 각각의 바둑판 상태(S)에서 게임 시간 정보, 특히 경기 종료시까지의 남은 경기 길이 정보를 포함할 수 있다. 또한, 시간 관리 모델 서버(500)는 형세 판단 모델 서버(400)로부터 형세 판단 정보를 수신할 수 있다. 형세 판단 정보는 바둑서버(200)에서 시간 관리 모델 서버(500)로 제공하는 복수의 기보에 기초한 형세 판단 정보이고, 집수의 변화량 정보 및 공배수 정보 등을 포함할 수 있다. 또한, 시간 관리 모델 서버(500)는 착수 모델 서버(300)로부터 가치값을 수신할 수 있다. 가치값은 바둑서버(200)에서 시간 관리 모델 서버(500)로 제공하는 복수의 기보에 기초한 가치값일 수 있다.
제1 입력 특징 추출부(540)는 복수의 기보의 바둑판 상태(S)에서 제1 입력 특징(IF1)을 추출하여 시간 관리 제1 신경망(520)에 트레이닝을 위한 입력 데이터로 제공할 수 있다. 바둑판 상태(S)의 제1 입력 특징(IF)은 흑 플레이어의 최근 8 수에 대한 돌의 위치 정보과 백 플레이어의 최근 8 수에 대한 돌의 위치 정보와 현재 플레이어가 흑인지 백인지에 대한 차례 정보를 포함한 19*19*18의 RGB 이미지일 수 있다. 일 예로, 제1 입력 특징 추출부(540)는 신경망 구조로 되어 있을 수 있으며 일종의 인코더를 포함할 수 있다.
또한, 시간 관리 모델은 제2 입력 특징(IF2) 및 제3 입력 특징(IF3)을 시간 관리 제1 신경망(520)에 트레이닝을 위한 입력 데이터로 제공할 수 있다. 제2 입력 특징(IF2)은 바둑판 상태(S)에 따른 집수의 변화량 정보일 수 있다. 제3 입력 특징(IF3)은 바둑판 상태(S)에 따른 공배수 정보일 수 있다. 시간 관리 모델은 제4 입력 특징(IF4)를 시간 관리 제2 신경망(530)에 트레이닝을 위한 입력 데이터로 제공할 수 있다. 제4 입력 특징(IF4)는 바둑판 상태(S)에 따른 가치값일 수 있다.
시간 관리 제1 신경망(520)은 제1 내지 제3 입력 특징(IF1 내지 IF3)를 입력으로 하여 출력값을 시간 관리 제2 신경망(530)에 제공할 수 있다. 시간 관리 제1 신경망(520)은 신경망 구조로 구성될 수 있다. 일 예로, 시간 관리 제1 신경망(520)은 20개의 레지듀얼(residual) 블록으로 구성될 수 있다. 도 8을 참조하면, 하나의 레지듀얼 블록은 256개의 3X3 컨볼루션 레이어, 일괄 정규화(batch normalization) 레이어, Relu 활성화 함수 레이어, 256개의 3X3 컨볼루션 레이어, 일괄 정규화(batch normalization) 레이어, 스킵 커넥션, Relu 활성화 함수 레이어 순으로 배치될 수 있다. 일괄 정규화(batch normalization) 레이어는 학습하는 도중에 이전 레이어의 파라미터 변화로 인해 현재 레이어의 입력의 분포가 바뀌는 현상인 공변량 변화(covariate shift)를 방지하기 위한 것이다. 스킵 커넥션은 블록 층이 두꺼워지더라도 신경망의 성능이 감소하는 것을 방지하고 블록 층을 더욱 두껍게 하여 전체 신경망 성능을 높일 수 있게 한다. 스킵 커넥션은 레지듀얼 블록의 최초 입력 데이터가 두 번째 일괄 정규화(batch normalization) 레이어의 출력과 합하여 두번째 Relu 활성화 함수 레이어에 입력되는 형태일 수 있다.
시간 관리 제2 신경망(530)은 시간 관리 제1 신경망(520)의 출력값과 제4 입력 특징(IF4)를 입력으로 하여 예측한 남은 경기 길이에 관한 게임 시간 정보를 생성할 수 있다. 시간 관리 제2 신경망(530)은 신경망 구조로 구성될 수 있다. 일 예로, 시간 관리 제2 신경망(530)은 풀리 커넥티드 레이어 구조일 수 있다.
시간 관리 모델은 제1 내지 제4 입력 특징(IF1 내지 IF4)을 입력 데이터로 하고 남은 경기 길이 정보를 타겟 데이터(
Figure pat00041
)로 한 트레이닝 데이터 셋을 이용하여 시간 관리 제1 신경망(520)을 거쳐 시간 관리 제2 신경망(530)에서 생성된 출력 데이터(r)가 타겟 데이터(
Figure pat00042
)와 동일해지도록 시간 관리 제1 신경망(520) 및 시간 관리 제2 신경망(530)을 충분히 학습할 수 있다. 일 예로, 시간 관리 모델은 남은 경기 길이 예측 손실(
Figure pat00043
)을 이용하여 남은 경기 길이 예측 손실(
Figure pat00044
)이 최소가 되도록 트레이닝 할 수 있다. 예를 들어, 남은 경기 길이 예측 손실(
Figure pat00045
)은 수학식 5를 따를 수 있다.
(수학식 5)
Figure pat00046
수학식 5에서
Figure pat00047
는 집수의 변화량 손실이다. 남은 경기 길이 예측 손실(
Figure pat00048
)은 집수의 변화량 손실(
Figure pat00049
)을 이용한다. 남은 경기 길이 예측을 위하여 집수의 변화량을 이용하는 이유는 대국중 초반의 집수의 변화가 상대적으로 크고, 후반의 집수의 변화가 상대적으로 적을 가능성이 높으므로 남은 경기 길이 예측 판단의 요소로 사용할 수 있기 때문이다. 일 예로, 도 30를 참고하면, 도 30는 임의의 기보의 초반부의 바둑판 상태(S)에 대하여 형세 판단 모델 서버(400)를 이용하여 생성된 형세 판단 정보이다. 도 30(a)는 104수까지 둔 경우로 흑이 46집이고 백이 63.5집이 된다. 도 30(b)는 흑이 한수를 더 둔 105수까지 둔 경우로 흑이 46집이고 백이 59.5집으로 백의 경우 4집의 차이가 난다. 즉, 초반부의 바둑판 상태(S)는 한 수 둘때마다 집수의 변화량이 크다. 도 31를 참고하면, 도 31는 임의의 기보의 후반부의 바둑판 상태(S)에 대하여 형세 판단 모델 서버(400)를 이용하여 생성된 형세 판단 정보이다. 도 31(a)는 222수까지 둔 경우로 흑이 64집이고 백이 63.5집이 된다. 도 31(b)는 백이 한 수를 더 둔 223수까지 둔 경우로 흑이 63집이고 백이 64.5집으로 백의 경우 1집의 차이가 난다. 즉, 후반부의 바둑판 상태(S)는 한 수 둘때마다 집수의 변화량이 작다.
수학식 5에서
Figure pat00050
는 공배수 손실이다. 남은 경기 길이 예측 손실(
Figure pat00051
)은 공배수 손실(
Figure pat00052
)을 이용한다. 남은 경기 길이 예측을 위하여 공배수를 이용하는 이유는 대국 중에 후반으로 갈수록 공배수가 점점 줄어들기 때문에 이를 이용하여 남은 경기 길이 예측 판단의 요소로 사용할 수 있기 때문이다. 일 예로, 도 32을 참고하면, 도 32은 임의의 기보의 초반부와 후반부의의 바둑판 상태(S)에 대하여 형세 판단 모델 서버(400)를 이용하여 생성된 형세 판단 정보이다. 공배는 도 32의 형세 판단 결과에서 붉은 선으로 X표시가 된 곳이다. 도 32(a)는 대국의 초반부이기 때문에 공배가 많다. 도 32(b)는 대국의 후반부이기 때문에 공배가 적다.
수학식 5에서
Figure pat00053
는 가치값 손실이다. 남은 경기 길이 예측 손실(
Figure pat00054
)은 가치값 손실(
Figure pat00055
)을 이용한다. 남은 경기 길이 예측을 위하여 가치값 이용하는 이유는 대국 중에 후반으로 갈수록 어느 한쪽의 가치값이 높아지기 때문에 이를 이용하여 남은 경기 길이 예측 판단의 요소로 사용할 수 잇기 때문이다. 또한, 가치값 손실(
Figure pat00056
)은 초반에는 큰 변화가 없기 때문에 경기 후반부에 이용될 수 있다. 예를 들어, 경기 후반부는 임의의 기보에서 250수이상의 착수가 된 바둑판 상태일 수 있고, 이에 제한되는 것은 아니다.
수학식 5에서,
Figure pat00057
는 하이퍼 파라미터들이다. 사용자는 하이퍼 파라미터는 조절하여 각 손실의 상대적인 중요도를 조절할 수 있다. 예를 들어,
Figure pat00058
는 경기 후반부로 갈수록 중요도가 높아지므로 수치가 높아질 수 있고, 경기 초반부에는 중요도가 낮으므로 수치가 낮을 수 있다.
학습된 시간 관리 모델은 대국중 현재 바둑판 상태가 입력되면 예측한 남은 경기 길이에 관한 게임 시간 정보를 생성할 수 있다. 보다 구체적으로, 학습된 시간 관리 모델은 대국중에 현재 바둑판 상태가 입력되면 제1 입력 특징 추출부(540)에 의해 제1 입력 특징이 추출할 수 있다. 시간 관리 모델은 형세 판단 모델 서버가 현재 바둑판 상태에 대한 형세 판단으로 제공하는 집수의 변화량 정보를 제2 입력 특징으로 하고, 공배수 정보를 제3 입력 특징으로 할 수 있다. 시간 관리 모델은 제1 입력 특징 내지 제3 입력 특징을 입력 데이터로 하여 시간 관리 제1 신경망(520)에서 생성한 출력값을 시간 관리 제2 신경망(530)에 제공할 수 있다. 시간 관리 모델은 착수 모델 서버가 제공하는 현재 바둑판 상태에 착수 후보점에 대한 가치값을 제4 입력 특징으로 할 수 있다. 시간 관리 모델은 시간 관리 제1 신경망(520)의 출력값과 제4 입력 특징을 입력 데이터로 하여 시간 관리 제2 신경망(530)에서 예측된 남은 경기 길이에 관한 게임 시간 정보를 생성할 수 있다.
또한, 시간 관리 모델 서버(500)는 게임 시간 정보의 예측된 남은 경기 길이에 따라서 착수 준비 시간을 조절할 수 있다. 시간 관리 모델 서버(500)는 조절된 착수 준비 시간을 착수 모델 서버(300)에 제공할 수 있다.
따라서, 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 장치는 남은 경기 길이를 예측할 수 있다. 또한, 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 장치는 예측된 남은 경기 길이를 이용하여 착수 준비 시간을 효과적으로 나눌 수 있다.
도 33은 본 발명의 또 다른 실시예에 따른 시간 관리 모델 서버의 바둑 게임 서비스 시스템에서의 신호 흐름에 대한 예시도이다.
도 33을 참조하면, 바둑서버(200)는 복수의 기보를 착수 모델 서버(300), 형세 판단 모델 서버(400) 및 시간 관리 모델 서버(500)에 송신할 수 있다(S2701). 시간 관리 보델 서버(500)는 수신한 복수의 기보의 바둑판 상태의 제1 입력 특징을 추출할 수 있다(S2702). 형세 판단 모델 서버(400)는 수신한 복수의 기보의 형세 판단 정보를 생성하고, 시간 관리 모델 서버(500)에 형세 판단 정보를 송신할 수 있다(S2703, S2704). 형세 판단 정보는 집수의 변화량 정보 및 공배수 정보일 수 있다. 시간 관리 모델 서버(500)는 집수의 변화량 정보를 제2 입력 특징으로 하고 공배수 정보를 제3 입력 특징으로 하여 시간 관리 모델의 시간 관리 제1 신경망에 입력할 수 있다(S2705). 착수 모델 서버(300)는 복수의 기보의 바둑판 상태에 따른 가치값을 생성하고, 생성된 가치값을 시간 관리 모델 서버(500)에 전송할 수 있다(S2706, S2707). 시간 관리 모델 서버(500)는 수신한 가치값을 제4 입력 특징으로 하여 시간 관리 모델의 시간 관리 제2 신경망에 입력할 수 있다(S2708). 시간 관리 모델 서버(500)는 제1 내지 제4 입력 특징의 입력 데이터와 복수의 기보의 바둑판 상태에 따른 남은 경기 길이 정보를 타겟 데이터로 하여 시간 관리 모델을 트레이닝 할 수 있다(S2709). 바둑서버(200)는 바둑 게임을 진행하며 단말기(100)와 착수 모델 서버(300)가 자신의 턴에 착수를 수행할 수 있다(S2710 내지 S2712). 형세 판단 모델 서버(400)는 현재 바둑판 상태의 입력 특징을 추출하고, 딥러닝 모델인 형세 판단 모델이 입력 특징을 이용하여 형세값을 생성하고, 바둑판 상태와 형세값을 이용하여 형세 판단을 수행할 수 있다(S2713). 시간 관리 모델 서버(500)는 현재 바둑판 상태의 입력 특징을 추출하여 제1 입력 특징으로 하고, 형세 판단 정보를 제2 및 제3 입력 특징으로 하고, 착수 모델 서버(300)에서 제공되는 가치값을 제4 입력 특징으로 하여, 딥러닝 모델인 시간 관리 모델이 게임 시간 정보를 생성할 수 있다(S2714).
도 34은 본 발명의 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법 중 게임 시간 정보 생성 방법이다.
도 34을 참조하면, 본 발명의 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 복수의 기보를 수신하는 단계(S2801)을 포함할 수 있다. 복수의 기보에 대한 설명은 도 29의 설명을 따른다.
본 발명의 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 수신한 복수의 기보의 바둑판 상태에서 제1 입력 특징을 추출하는 단계(s2802)를 포함할 수 있다. 제1 입력 특징을 추출하는 방법은 도 29의 설명을 따른다. 시간 관리 모델 서버(500)는 추출된 제1 입력 특징을 시간 관리 제1 신경망의 입력 데이터로 제공할 수 있다.
본 발명의 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)가 복수의 기보의 바둑판 상태에 따른 형세 판단 정보를 수신하는 단계(S2803)을 포함할 수 있다. 형세 판단 정보를 수신하는 방법은 도 29의 설명을 따른다. 형세 판단 정보는 집수의 변화량 정보 및 공배수 정보일 수 있다. 시간 관리 모델 서버(500)는 집수의 변화량 정보를 제2 입력 특징으로 하고 공배수 정보를 제3 입력 특징으로 할 수 있다.
본 발명의 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)는 제2 입력 특징 및 제3 입력 특징을 시간 관리 제1 신경망에 입력하는 단계(S2804)를 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)는 착수 모델 서버로부터 가치값을 수신하는 단계(S2805)를 포함할 수 있다. 시간 관리 모델 서버(500)는 가치값을 제4 입력 특징으로 할 수 있다.
본 발명의 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)는 제4 입력 특징을 시간 관리 제2 신경망에 입력하는 단계(S2806)을 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)는 제1 내지 제4 입력 특징의 입력 데이터와 복수의 기보의 바둑판 상태에 따른 남은 경기 길이 정보를 타겟 데이터로 하여 시간 관리 모델을 트레이닝하는 단계(S2807)를 포함할 수 있다. 시간 관리 모델의 트레이닝 방법은 도 29 내지 도 32의 설명을 따른다.
본 발명의 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)는 게임 대국중 바둑판 상태, 형세 판단 정보, 가치값을 수신하는 단계(S2809)를 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 시간 관리 모델 서버(500)는 수신한 바둑판 상태, 형세 판단 정보, 가치값을 이용하여 게임 시간 정보를 생성하는 단계(S2810)을 포함할 수 있다. 게임 시간 정보를 생성하는 방법은 도 29의 설명을 따른다.
따라서, 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 남은 대국 시간을 예측할 수 있다. 또한, 또 다른 실시예에 따른 딥러닝 기반의 바둑 게임 서비스 방법은 예측된 남은 대국 시간을 이용하여 착수 준비 시간을 효과적으로 나눌 수 있다.
이상 설명된 본 발명에 따른 실시예는 다양한 컴퓨터 구성요소를 통하여 실행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위하여 하나 이상의 소프트웨어 모듈로 변경될 수 있으며, 그 역도 마찬가지이다.
본 발명에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
또한 설명한 본 발명의 상세한 설명에서는 본 발명의 바람직한 실시 예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자 또는 해당 기술분야에 통상의 지식을 갖는 자라면 후술할 특허청구범위에 기재된 본 발명의 사상 및 기술 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다. 따라서, 본 발명의 기술적 범위는 명세서의 상세한 설명에 기재된 내용으로 한정되는 것이 아니라 특허청구범위에 의해 정하여져야만 할 것이다.
100 단말기
200 바둑서버
300 착수 모델 서버
310 탐색부
320 셀프 플레이부
330 착수 신경망
400 형세 판단 모델 서버
410 형세 판단 신경망
420 입력 특징 추출부
430 정답 레이블 생성부
500 시간 관리 모델 서버
510 시간 관리부
520 시간 관리 제1 신경망
530 시간 관리 제2 신경망
540 제1 입력 특징 추출부
550 시간 조정부

Claims (12)

  1. 바둑판 상태에 따른 가치값 및 상대 착수시간 중 적어도 하나를 수신하는 통신부;
    시간 조정부를 저장하는 메모리; 및
    상기 시간 조정부를 독출하여, 상기 시간 조정부가 상기 가치값 및 상대 착수시간 중 적어도 하나를 이용하여 착수 준비 시간을 결정하도록 제어하는 프로세서;를 포함하는 것을 특징으로 하는
    연산시간 관리 장치.
  2. 제1 항에 있어서,
    상기 시간 조정부는,
    상기 가치값의 변동 추세 및 변동 폭 중 적어도 하나를 판단하고, 상기 판단된 변동 추세 및 변동 폭에 따라서 상기 착수 준비 시간을 결정하는
    연산시간 관리 장치.
  3. 제2 항에 있어서,
    상기 시간 조정부는,
    상기 가치값의 변동 추세인 상기 가치값의 변화율이 소정의 수치 이하이면, 상기 착수 준비 시간을 증가시키는
    연산시간 관리 장치.
  4. 제2 항에 있어서,
    상기 시간 조정부는,
    이전 착수 단계에서의 가치값과 현재 상기 가치값의 변동 폭이 소정의 값 이상으로 하락하면, 상기 착수 준비 시간을 증가시키는
    연산시간 관리 장치.
  5. 제1 항에 있어서,
    상기 시간 조정부는,
    상기 상대 착수시간을 기초로 상대방의 직전 착수에 소요된 상대 착수시간인 직전 상대 착수시간과, 상기 상대방이 소정의 시점동안 수행한 복수의 착수에 소요된 상대 착수시간의 평균인 평균 상대 착수시간을 산출하는
    연산시간 관리 장치.
  6. 제5 항에 있어서,
    상기 시간 조정부는,
    상기 평균 상대 착수시간 보다 상기 직전 상대 착수시간이 크면, 상기 착수 준비 시간을 증가시키는
    연산시간 관리 장치.
  7. 제3 항, 제4 항 및 제6 항 중 하나의 항에 있어서,
    상기 시간 조정부는,
    상기 착수 준비 시간을 증가시키는 조건을 만족하면, 상기 착수 준비 시간을 증가시키는 기준이 되는 착수시간 증가량을 산출하는
    연산시간 관리 장치.
  8. 제7 항에 있어서,
    상기 메모리는, 기설정된 착수 준비 시간인 기초 착수시간을 제공하는 시간 관리부를 더 포함하고,
    상기 시간 조정부는,
    상기 시간 관리부에서 제공된 상기 기초 착수시간을 기초로 상기 착수시간 증가량을 결정하는
    연산시간 관리 장치.
  9. 제7 항에 있어서,
    상기 시간 조정부는,
    기설정된 초읽기 시간과 상기 기초 착수시간을 기초로 상기 착수시간 증가량을 결정하는
    연산시간 관리 장치.
  10. 제6 항에 있어서,
    상기 메모리는, 기설정된 착수 준비 시간인 기초 착수시간을 제공하는 시간 관리부를 더 포함하고,
    상기 시간 조정부는,
    상기 직전 상대 착수시간과 상기 시간 관리부에서 제공된 상기 기초 착수시간 중 더 큰 착수시간을 상기 착수 준비 시간으로 결정하는
    연산시간 관리 장치.
  11. 제6 항에 있어서,
    상기 시간 조정부는,
    상기 평균 상대 착수시간 대비 직전 상대 착수시간 비율인 상대 착수시간 비율을 산출하고,
    상기 메모리는, 기설정된 착수 준비 시간인 기초 착수시간을 제공하는 시간 관리부를 더 포함하고,
    상기 시간 조정부는,
    상기 상대 착수시간 비율이 소정의 기준을 충족하면, 상기 상대 착수시간 비율과 상기 시간 관리부에서 제공된 상기 기초 착수시간에 기반한 소정의 연산을 수행하여 상기 착수 준비 시간을 결정하는
    연산시간 관리 장치.
  12. 시간 관리 모델 서버에서 딥러닝 기반의 바둑 게임 서비스 연산시간을 관리하는 방법으로서,
    바둑판 상태에 따른 가치값 및 상대 착수시간 중 적어도 하나를 수신하는 단계; 및 상기 수신된 가치값 및 상대 착수시간 중 적어도 하나를 이용하여 착수 준비 시간을 결정하는 단계를 포함하고,
    상기 착수 준비 시간을 결정하는 단계는,
    상기 가치값의 변동 추세 및 변동 폭 중 적어도 하나를 판단하고, 상기 판단된 변동 추세 및 변동 폭에 따라서 상기 착수 준비 시간을 결정하는 단계와,
    상기 상대 착수시간을 기초로 상대방의 직전 착수에 소요된 상대 착수시간인 직전 상대 착수시간과 상기 상대방이 소정의 시점동안 수행한 복수의 착수에 소요된 상대 착수시간의 평균인 평균 상대 착수시간을 산출하고, 상기 산출된 직전 상대 착수시간과 상기 평균 상대 착수시간을 기초로 상기 착수 준비 시간을 결정하는 단계를 포함하는
    연산시간 관리 방법.
KR1020210046229A 2021-04-09 2021-04-09 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치 KR102537471B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210046229A KR102537471B1 (ko) 2021-04-09 2021-04-09 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210046229A KR102537471B1 (ko) 2021-04-09 2021-04-09 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20220140123A true KR20220140123A (ko) 2022-10-18
KR102537471B1 KR102537471B1 (ko) 2023-05-30

Family

ID=83803884

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210046229A KR102537471B1 (ko) 2021-04-09 2021-04-09 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR102537471B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4392621B2 (ja) 2007-10-22 2010-01-06 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム
KR20210009586A (ko) * 2019-07-17 2021-01-27 엔에이치엔 주식회사 딥러닝 기반의 바둑 게임 서비스 방법 및 그 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4392621B2 (ja) 2007-10-22 2010-01-06 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム
KR20210009586A (ko) * 2019-07-17 2021-01-27 엔에이치엔 주식회사 딥러닝 기반의 바둑 게임 서비스 방법 및 그 장치

Also Published As

Publication number Publication date
KR102537471B1 (ko) 2023-05-30

Similar Documents

Publication Publication Date Title
Volz et al. Evolving mario levels in the latent space of a deep convolutional generative adversarial network
KR102316930B1 (ko) 딥러닝 기반의 바둑 게임 서비스 방법 및 그 장치
CN112329948B (zh) 一种多智能体策略预测方法及装置
CN112329348A (zh) 一种面向非完全信息条件下军事对抗博弈的智能决策方法
KR102299140B1 (ko) 딥러닝을 기반으로 하는 바둑 게임 서비스 방법 및 그 장치
US20220176248A1 (en) Information processing method and apparatus, computer readable storage medium, and electronic device
Wunder et al. Using iterated reasoning to predict opponent strategies.
CN111957047B (zh) 关卡配置数据调整方法、计算机设备及存储介质
KR102299138B1 (ko) 딥러닝 기반의 바둑 게임 서비스 방법 및 그 장치
CN114404977B (zh) 行为模型的训练方法、结构扩容模型的训练方法
KR102292046B1 (ko) 딥러닝 기반의 바둑 게임 서비스 방법 및 그 장치
KR102299135B1 (ko) 딥러닝에 기초하여 바둑 게임 서비스를 제공하는 방법 및 장치
Huang et al. Bootstrap estimated uncertainty of the environment model for model-based reinforcement learning
US11738271B2 (en) Method and apparatus for predicting game difficulty by using deep-learning based game play server
Zhang et al. Image Edge Feature Extraction and Refining based on Genetic-Ant Colony Algorithm
KR20220140123A (ko) 딥러닝 기반의 바둑 게임 서비스 연산시간 관리 방법 및 그 장치
KR102572342B1 (ko) 딥러닝 기반의 바둑 게임 서비스 시뮬레이션 횟수 관리 방법 및 그 장치
KR102299141B1 (ko) 딥러닝 기반의 바둑 게임 서비스 제공 방법 및 장치
KR102591226B1 (ko) 딥러닝 기반 바둑 게임 서비스의 긴 축 방지 방법 및 그 장치
KR100913030B1 (ko) 단계별 퍼지 로직을 이용한 게임 전략 방법 및 그 시스템
KR102595656B1 (ko) 딥러닝 기반의 장기 게임 서비스 방법 및 그 장치
CN118098418A (zh) 氢氧化锂生产环境评估方法及系统
KR20220164323A (ko) 딥러닝 기반 불완전 정보 게임 서비스 제공 방법 및 그 장치
KR20210088421A (ko) 점진적 학습을 위한 기계 학습 방법 및 이를 수행하기 위한 컴퓨팅 장치
KR20220157017A (ko) 딥러닝 기반 불완전 정보 게임 서비스 제공 방법 및 그 장치

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant