엑셀에서 딥러닝까지…게임기획자, 데이터에 빠지다

서정민 넥슨코리아 라이브개발본부 CSO2 개발유닛 기획자의 데이터 공부기

가 +
가 -

서정민 넥슨코리아 라이브개발본부 CSO2 개발유닛 기획자

서정민 넥슨코리아 라이브개발본부 CSO2 개발유닛 기획자.

“(이미 신대륙은 발견됐으니) 콜럼버스가 될 수 없더라도, 신대륙의 바다에 가서 고기는 잡아보고자 합니다.”

서정민 넥슨코리아 라이브개발본부 ‘CSO2′(카운터 스트라이크 온라인2) 개발유닛 기획자가 데이터 공부를 그만두지 못하는 이유다. 그는 10년 넘게 게임에서 작곡과 사운드 디자인을 맡았다. 해당 분야에서 10년쯤 놀다 보니 자신감이 붙었다. 세상 만물 모든 현상의 이유를 파악해, 그걸 설명할 수 있을 것 같은 기분에 사로잡혔다. 나이 마흔, 창업에 도전했고 속성으로 망했다.

“망한 이유를 되짚어보았습니다. 모든 상황에 논리적으로 행동했다고 생각했는데 함정에 빠진 이유를요. 결론은 이거였습니다. ‘한 가지 이유의 함정.’ 제가 알고 있는 게, 모든 걸 설명하는 건 아니었던 거지요. 나무에서 사과가 떨어지는 걸 만유인력으로 설명할 수 있지만, 사과가 충분히 익어야 하고, 가지 부분이 사과가 떨어질 만큼 시들어야 하고, 바람이 적당히 불어서 사과를 자극하는 등 여러 조건도 필요한데 말이죠.”

세상을 바라볼 때 다양한 시각이 필요하다는 것을 배운 셈이다. 원인을 파악할 때 여러 요소가 작용할 수 있음을 깨우쳤다. 그때부터다. 서정민 기획자는 빅데이터와 머신러닝(기계학습)에 관심을 두고 공부를 시작했다. 4월24일부터 27일까지 나흘간 열리는 ‘넥슨 개발자 컨퍼런스(NDC) 2017’에서 그가 어떻게 데이터에 관심을 가졌고, 공부하고 있는지 등 ‘데이터와 AI 시대를 맞이하는 게임기획자 이야기’라는 주제로 보따리를 풀었다.

엑셀로 걸음마를 떼다

빅데이터를 얘기할 때 빼놓지 않고 등장하는 학문이 있다. 수학과 통계다. 이 두 학문에 대한 기본 지식 없이는, 솔직히 빅데이터 분야를 공부하기 쉽지 않다.

이런 면에서 서정민 기획자는 운이 좋았다. 그는 통계학과 출신으로, 수학과 통계 분야에 좀 자신이 있었다. 수학적 지식을 좀 갖춘 상태에서 머신러닝과 딥러닝 세계에 빠졌다. 딱 2년 걸렸다. 지금은 딥러닝을 어떤 데이터에 적용할지 감을 잡았지만, 그도 처음엔 막막함을 겪었다.

“뭐가 뭔지도 모르고 시작했습니다. 뭘 해야 할지 모르겠고, 뭘 할 수 있을지도 몰라서 ‘때려치울까’ 고민 많이 했습니다. 그때 ‘알파고’ 열풍이 불더군요. 힘을 냈습니다. 다시 공부를 시작했지요.”

데이터를 공부하는 기획자 입장에서, 서정민 기획자는 가장 만만한 단계로 엑셀을 꼽았다. 익숙하고, 다뤄본 경험도 있기에 책을 사서 공부했다. 몸담고 있는 프로젝트에서 데이터를 정리하고, 테이블을 합칠 때 엑셀을 사용했다. ‘VLOOKUP’ 같은 함수 등을 이용했다. 흩어져 있는 정보를 모으고, 기호화한 데이터를 알아볼 수 있는 언어로 변환해 데이터를 바탕으로 정보를 만들어나가는 작업을 시작했다.

작업을 몇 차례 반복하며 자신감이 생겼다. 바로 액셀 심화 공부에 나섰다. 인덱스, 매치, 오프셋, VBS 등 다양한 엑셀 함수 세계에 빠졌다. 추세선을 이용해 간편한 회귀식을 유도했다. 엑셀로 못하는 게 없다는 생각에 빠질 무렵이었다.

“한계가 빨리 왔습니다. 생각외로 엑셀에서 뭔가 작업을 하면, 특히 데이터 용량이 늘어나면 갑자기 프로그램이 ‘얼음’이 되는 프리징 현상이 생기더군요. 한 번에 100만 라인 이상 읽지 못하는 한계도 도드라졌고요. 물론 파워쿼리나 파워피봇 같은 플러그인을 이용하면 해결할 수 있는데, 어려웠어요. 엑셀이 만능열쇠처럼 해결사 역할을 할 줄 알았는데, 안되더군요.”

‘엑셀로 안된다니… 때려치울까?’란 생각이 다시 고개를 들었다. 그가 공부하는 엑셀 책 마지막 장에 R에 대한 설명이 나와 있었다. 그리곤 다음의 한 문장이 그를 다시 일으켰다.

엑셀로 데이터를 분석하는 데 한계가 있다.

엑셀로 데이터를 분석하는 데는 한계가 있다.

“그냥 R로 하세요.”

‘그냥 R로 하세요.’

앞에선 엑셀로 데이터 다루는 법을 자세히 소개한 책이 끝에선 ‘그냥 R로 하세요’라고 설명을 달았다. 서정민 기획자는 속는 셈 치고 다시 공부를 시작했다. R은 함수형 언어다. 로직을 만들어서 돌리는 게 아니라 함수 인자를 전달하는 식으로 작업이 이뤄진다. 특정 기능을 발휘하는 함수에 인자를 전달하면 작업이 실행된다. 마치 리눅스에서 명령어 입력하는 느낌과 같다고 할까.

R을 시작하고 2주 만에 엑셀에서 보기 힘든 히트맵 결과를 만들었다. R에서 간단한 코드로 DB에서 데이터를 긁어왔다. 도수분포표 테이블 함수도 R에선 금방이었다. 게임에서 활용하는 맵 배경 읽어오는 작업도 쉬웠다. 맵 안에서 ‘킬(Kill)’이 더 많이 발생하는 지역을 표시하는 시각화 작업도 뚝딱 이뤄졌다.

“R의 특징 중 하나는 모든 변수를 벡터로 취급하기에, 반복문 연산과 비교해서 빠른 처리 속도를 가지더군요. 약간 엑셀에서 드래그앤드롭으로 컬럼값 계산 주욱 할 때 드는 기분이랄까요. 그리고 오픈소스 기반이라는 걸 빼놓을 수 없습니다. 제가 필요한 기능은 누군가 이미 만들었더라고요.”

서정민 기획자 표현에 따르면, R과 엑셀 중 접근성이 낮은 건 엑셀이 확실하다. 그러나 다뤄야 할 데이터가 복잡해지면, 액셀은 이를 처리하기 위한 해결 난이도가 급격하게 올라간다. R은 처음엔 어렵지만, 문제가 복잡해지더라도 난이도가 엑셀과 비교해 많이 올라가는 편은 아니다. 심지어 R에선 필요한 기능은 누군가 이미 구현해 놓았기에 검색만 잘해서 쓰면 된다.

엑셀은 시작하긴 쉽지만, 문제 해결 능력은 R이 좀 더 낫다.

엑셀은 시작하긴 쉽지만, 문제 해결 능력은 R이 좀 더 낫다.

“내가 하고자 하는 복잡한 작업 상당수가 누군가 잘 돌아가는 단 한 개의 함수로 만들어놓았을 것이라고 기대하고 R을 배우니까 좋더군요.”

엑셀에서 R로 마음이 완전히 넘어온 뒤엔, 머신러닝도 R로 하기 시작했다. 그가 몸담은 ‘CSO'(카운터 스트라이크 온라인)는 FPS 게임으로, 게임 이용자에게 여러 모드를 제공한다. 이용자가 어떤 모드, 어떤 게임 전략을 펼치느냐에 따라 서로 다른 게임 경험을 제공한다. 그만큼 사례가 천차만별이다. 이용자마다 요구사항이나 성향도 확연히 달라진다. 이 데이터를 수집해서 어떻게 대응하고 분석할지가 서정민 기획자 과제였다.

게임봇을 인간답게 만들지 않을까

“결국 머신러닝을 통해서 하고자 하는 건 분류이자 예측입니다. 어떤 이용자가 이탈한 케이스와 이탈하지 않는 케이스를 분류했다면, 그 케이스에 맞는 예측을 할 수 있지요. 좋은 판단력, 데이터만 잘 다루어 넣으면 훈련은 라이브러리가 알아서 해주기에, 머신러닝은 어렵지 않다고 말할 순 없지만, 생각보다 결과를 쉽게 끌어낼 수 있습니다.”

머신러닝에서 좋은 결과를 얻으려면, 데이터를 잘 선택해야 한다. 서정민 기획자는 이 과정이 제일 중요하다고 강조했다. 데이터에 적합한 알고리즘을 선택하는 것 못지 않게 훈련에 적합한 데이터를 선택하는 것도 중요하다. 데이터를 잘 분류해서 학습 과정을 거쳐야 좋은 결과를 얻어낼 수 있다.

과거 방식에서는 이해하고 판단하는게 인간의 영역으로, 인간이 자기 지식이나 경험을 통해서 가설을 세우고, 통계적 알고리즘이 이를 검정한다. 이 방식에서 추구하는 것은 '인간이 세운 가설이 정말 맞는가' 정교함을 따진다. 머신러닝은 이해와 판단을 기계가 맡아서 처리하며, 분류와 평가를 통해 예측한다. 머신러닝에서 중요한건 일반화다.

과거에는 이해와 판단은 인간의 영역으로, 인간이 자기 지식이나 경험을 통해 가설을 세우고 통계 알고리즘이 이를 검증했다. 이 방식에서는 ‘인간이 세운 가설이 정말 맞는가’라는 정교함을 추구한다. 머신러닝은 이해와 판단을 기계가 맡는다. 분류와 평가를 거듭해 예측한다. 머신러닝에서 중요한 건 일반화다.

서정민 기획자는 주로 랜덤 포레스트와 서포트 벡터머신 알고리즘을 사용한다. 서로 상관관계가 없는, 독립적인 원인일 때 성능이 잘 나오기 때문이다. 특히 랜덤 포레스트 알고리즘의 장점으로 비교적 짧은 훈련 시간을 꼽았다. 게임 이용자 이탈 원인을 분석할 때, LVQ(Learning Vector Quantization) 알고리즘은 12코어 CPU에서 약 48일간 훈련을 거쳤다. 같은 데이터로 랜덤 포레스트 알고리즘을 이용하니 약 5시간 만에 훈련이 이뤄졌다.

“물론 이 알고리즘을 잘 활용하려면, 선택하는 데이터 도메인에 대한 지식을 바탕으로 훈련에 적합한 데이터를 골라야 합니다. 단순히 데이터를 많이 넣는다고 해서 학습이 잘 이뤄지는 건 아닙니다.”

머신러닝의 목적은 정교함이 아니라 일반화이다. 어떤 변수끼리 영향을 미쳐서 결과를 끌어내는지, 서로 상관관계가 어떻게 이뤄내는지 가장 일반적인 상황을 추론해야 한다.

“데이터 학습을 많이 해보는 것도 필요합니다. 가령 집을 살 건데 지금 사야 하나 말아야 하냐는 것부터 시작해, 다이어트를 할 땐 어떤 식단이 도움되는가 등 다양한 원인에 의한 다양한 결과를 예측하고자 한다면, 적합한 데이터를 갖고 머신러닝을 통해 학습하는 과정이 필요합니다.”

서정민 기획자는 요즘 딥러닝을 공부하고 있다. 파스타 안에 스파게티가 있는 것처럼, AI 안에 머신러닝이, 머신러닝 안에 딥러닝이 있다. 점점 공부하는 범위를 좁히며 구체화하는 중이다.

“딥러닝을 이용하면 ‘CSO2’에 나오는 봇을 인간답게 만들 수 있지 않을까 생각합니다. 기존 AI 로직과 융합하면 더 좋은 게임 환경을 제공할 수 있겠지요. 다음에는 이 자리에서 어떻게 활용할지를 소개하는 게 목표입니다.”

업무가 100배 빨라지는 엑셀 데이터 활용과 분석 노하우

블로터 독자를 위한 특별 할인쿠폰이 발행되었습니다.

네티즌의견(총 0개)