로그인

회원가입 | ID/PW 찾기

취재

[NDC 16] 신경망은 자동 콘텐츠 생성의 꿈을 꾸는가

우정혁(야토로) 2016-04-28 00:18:35

  

게임에 필요한 콘텐츠를 자동으로 분석하고, 생산해주는 프로그램이 있다면 어떨까? 마치 꿈과 같은 이야기다. 하지만 안타깝게도, 자동 콘텐츠 생산은 결과물의 품질을 보증할 수 없단 치명적인 단점이 있었다. 때문에 개발자들이 직접 콘텐츠를 제작해 게임에 투입하는 일이 당연시되어왔다.

 

김환희 강연자의 연구는 이런 방식에 대한 의문에서 시작됐다. 그는 컴퓨터 신경망과 딥러닝 기술을 활용하면 콘텐츠 자동 생산이란 꿈을 이룰 수 있을지 모른다고 이야기했다. / 디스이즈게임 우정혁 기자

 

 

 


■ 절차적, 자동적 콘텐츠 생산의 단점

 

절차적 콘텐츠 생성은 대량의 데이터를 자동으로 만들 때 유용한 방식이다. 만들 수 있는 콘텐츠의 종류는 제한이 없다. 다만, 이렇게 만들어진 완성품의 퀄리티에 대해선 보장할 수 없다는 것이 단점이다. 이는 손으로 하나하나 튜닝해 만드는 방식과 격차를 보이는 부분이다.


맵과 몬스터가 무작위로 생성되는 "디아블로" 시리즈를 예로 들어보겠다. 절차적, 자동적 방식으로 디아블로의 콘텐츠를 생성했다 가정 시, 만들어진 몬스터가 디아블로보다 강하게 느껴지는 문제, 던전의 맵 조각이 의도치 않게 이어 붙여져 동선이 망가지는 문제 등이 발생할 수 있다.

이런 문제는 결국 콘텐츠를 만든 뒤, 그것을 어떻게 평가해야 할지에 대한 이슈로 발전한다. 이 강연에선 자동적으로 만들어진 콘텐츠를 평가하기 위해 딥러닝을 사용한 연구 결과를 발표하려 한다.




​ 신경망과 레이어, 딥러닝의 개념에 대해

신경망은 전통적인 문제 해결법으로 해결할 수 없거나, 성능을 개선하기 위한 문제들에 사용된다. 이런 방식을 사용한 것으론 기존 바둑 프로그램의 한계를 뛰어넘은 "알파고", 페이스북에서 발표한 얼굴 인식 프로그램 "딥페이스", MIT와 카이스트에서 공동으로 발표한 "보행자 위험성에 대한 연구" 등이 있다.

뉴런을 입력층과 출력층에 배치, 입력층이 받아온 정보를 가공해 출력층에게 전달하게 한다. 이런 뉴런이 여러 개 모이면 레이어가 되고, 입력층에 어떤 값을 넣었을 때 출력층이 유의미한 값을 뽑아내는 것으로 신경망을 구성한다.

입력층과 출력층 사이에 은닉층이란 것을 넣어 좀 더 복잡한 문제를 풀 수 있게 만들 수도 있다. 2006년까진 은닉층의 개수를 늘리는 것이 주된 방식이었지만, 이는 신경망이 학습을 잘하지 못한다는 문제가 있었다. 이러한 상황을 계기로 딥러닝 기법이 소개되게 된다.

작년 가을에 화제가 되었던 고흐 스타일의 사진을 만드는 프로그램이나, 구글 딥마인드에서 발표한 하스스톤 카드 제작 프로그램 역시 딥러닝을 활용해 제작한 것이다.



딥 네트워크의 가장 큰 특징은 피쳐 러닝(Feature Learning)을 한다는 것이다. 피쳐(Feature)란, 단어가 가진 뜻 그대로 데이터가 가진 특징을 의미한다.

컴퓨터에게 낮밤을 구별하는 문제를 던졌다 가정하자. 우리는 사진을 직접 보고 어떤 사진이 낮이고 밤인지 구분할 수 있다. 하지만 컴퓨터는 그렇지 않다. 컴퓨터는 낮과 밤을 구별하기 위해 픽셀을 세고, 동그란 광원이 얼마나 있는지 계산한다.

이런 전통적인 기법들은 문제점이 있다. 전문적인 지식이 필요하고, 작업을 수행하 는데 오랜 시간이 걸린다. 다른 상황에 적용시키는 것도 힘들다. 이미지 처리에 사용하는 기법을 음성 인식에 사용하거나, 자연어 처리에 사용하는 기법을 이미지 처리에 사용하는 것은 불가능하다.

딥러닝은 미리 정해진 특징을 따라 정보를 처리하는 것이 아닌, 스스로 특징을 찾아 학습할 수 있게 만드는 방식이다. 이는 범용적인 문제 해결법이 될 수 있다. 음성 인식, 이미지 처리, 자연어 처리 모두 딥 네트워크와 피쳐 러닝을 통해 의미 있는 결과를 뽑아내게 된다.




​ SRPG 맵과 승률 계산에 대한 설정

SRPG는 전략적인 면이 강조된 턴제 RPG다. 맵의 형태가 전략성의 핵심이기에 맵을 평가하는 작업은 굉장히 유의미하다. SRPG 맵의 평가를 전통적 알고리즘으로 한다면 승률이나 유닛 성능을 예측하기 힘들다. 그렇기에 보통은 시뮬레이션을 수백에서 수천 번 반복하고 평균값을 내는 방식을 사용한다. 

이 과정에서, 시뮬레이션만으로 평가가 가능해질지가 의문점으로 작용했다. 연구를 위해 SRPG 맵의 생성은 절차적 콘텐츠 생산 방식을 사용했고, 만들어진 맵의 평가는 딥러닝 방식을 사용했다.



문제 공간은 20x20의 2D 타일 맵으로 정했다. 지형은 잔디/절벽/물가로 설정했다. 잔디 지형은 이동이 가능하나, 절벽과 물가 지형은 이동이 불가능하다. 유닛은 보병/궁병/기병/타워의 4종을 사용했다. 게임의 룰은 상대편 타워의 HP를 0으로 만드는 것으로 했다.

보병은 HP, 궁병은 공격력, 기병은 이동력이 제일 높게 설정했다. 타워는 공격과 이동이 가능하지 않고 HP를 10으로 설정했다. 유닛의 공격 범위는 전통적인 SRPG처럼 설정했다. 각 팀의 병종 구성을 다르게 했다. 병종별로 유리한 지형이 어떤 것인지 찾기 위해서였다.




​ 연구 결과와 앞으로의 콘텐츠 생산에 대한 예측

피쳐 러닝과 딥러닝 방식으로 약 11만 5천개의 맵을 만들어 총 200회를 학습시켰다. 데이터 중의 80%는 연속 데이터로 사용했고, 20%는 한 번도 보지 못한 테스트 데이터로 사용했다. 

결과값이라 할 수 있는 승률을 0.0에서 1.0 사이로 출력했는 데 결과값은 약 0.75 정도가 나왔다. 0.7 이상이면 유의미한 데이터라고 할 수 있다. 각 요소의 경향성을 예측 데이터와 테스트 데이터가 가지고 있는 것으로 학습이 잘 이루어졌음을 확인할 수 있었다.

이번 연구에선 맵과 유닛 구성에 따른 승률을 예측하는 것을 진행했다. 이를 바탕으로 이후에 맵을 보고 또 다른 인자를 예측, 얻어낸 승률 데이터와 딥 네트워크를 이용해 새로운 맵을 만드는 것이 가능하지 않을까 예상한다.