Friday, June 14, 2013

설국

미국 들어가는 길에 인천공항에서 한 권이라도 한글 책을 더 읽어보자 하고 가와바타 야스나리의 <설국>을 사왔었다. 이 소설은 고등학교 때 교과서에 짤막하게 실린 걸 읽었었는데, 그 때 도대체 그 뒤로 어떻게 전개가 될 지 너무 궁금해 했었지만 아직까지 인연이 없었다. 책을 사놓고도 이전에 읽던 책을 끝내지 못해 계속 미뤄두다가 어제 오늘 저녁 시간을 투자해서 드디어 긴 우여곡절을 마무리하게 되었다.

그런데 요즘 마음의 여유가 별로 없어서인지, 이 소설의 빼어난 서정적 묘사가 그렇게 마음에 별로 들어오지 않았다. 고등학교 때에는 그렇게 설렜었는데... 이번까지는 아직도 인연이 아니었던 모양이다. 이 소설을 제대로 만끽할 수 있는 때에 또 한번 기회가 찾아오기를. 억지로 붙들고 2회독 3회독을 하기보다는 일단은 그냥 이렇게 놓아버리려 한다.

Monday, July 30, 2012

통계적 본좌론: 스타크래프트 브루드워 프로게이밍의 역사

-1. 서문

이제 곧 펼쳐칠 허영무 선수와 정명훈 선수의 결승전을 마지막으로 온게임넷에서 '스타크래프트: 브루드 워'로 진행되는 스타리그는 막을 내리게 됩니다. 스타크래프트 2 역시 좋아하는 저로서는 지금의 협회 게이머들이 스타2에서 어떤 활약을 펼칠 지 기대되는 바입니다만, 10년 넘게 즐겨봐온 브루드워 스타리그가 끝을 맺는다는 것은 여전히 아쉽고 슬픈 일이지요.

고등학교 2학년이었던 2000년도에 독서실에서 친구들과 총무실에 둘러앉아 스타리그를 보기 시작해서 (부모님, 죄송합니다...) 2012년인 지금까지, 스타크래프트 프로게이머들로부터 너무 많은 감동의 순간들을 선사받았습니다. 돈도 권력도 별다른 재주도 없는 한낱 대학원생에 불과한 제가 그들을 위해 할 수 있는 것이 무엇인지 고민하다가 문득 떠오른 것은 "그래, 전공인 통계 분석으로 스타리그 십여년의 역사를 이야기해 보자"라는 생각이었습니다. 저는 통계학과 박사과정 중이거든요 (홈페이지 링크!). 특히나 스타 커뮤니티의 만년 떡밥인 '임이최마 이후의 본좌는 누구인가?' 라는 질문에 통계적으로 대답하는 것으로, 스타리그가 끝을 맺는 지금만큼 좋은 시점이 있겠는가 하는 생각이 들었습니다.


0. 통계 모형과 데이터

자, 그럼 어떻게 통계적으로 스타크래프트 본좌론을 이야기할 수 있을지 조금의 밑바닥을 깔아 봅시다. 머리 아픈 이야기를 싫어하시는 분들은 바로 다음으로 넘어가셔도 좋습니다만, 자세한 수학 이야기를 할 것은 아니니 수학/통계를 싫어하시는 분들도 너무 걱정하실 필요는 없습니다. 그저 제가 보여드릴 숫자들이 대체 어디서 튀어나온 것인지 말씀드리기 위함입니다.

체스나 바둑과 같이 1:1로 승부를 겨루는 종목에서 선수들의 랭킹을 결정하기 위해 사용하는 시스템으로 가장 유명한 것은 물리학자 Arpad Elo가 만든 Elo rating system입니다. 랭킹 시스템 중 가장 유명한 이 Elo 시스템은 팀리퀴드라는 외국 스타크래프트 커뮤니티에서도 프로게이머들의 랭킹을 계산하기 위해 사용하고 있지요. 이 Elo 시스템을 확장해 Microsoft Research의 연구자들은 TrueSkill Through Time (TTT)이라는 모델을 제안했습니다. 이 TTT 모델은 시간의 흐름에 따라 선수의 실력이 좋아지고 나빠지는 것을 Elo 모델보다 분명하게 설명할 수 있지요. 링크한 논문에서 저자들은 체스의 역사를 분석한 바 있습니다. 스덕인 저는 당연히 이것을 보고, 스타크래프트의 역사를 분석해 보면 좋겠다고 생각한 것이구요.

본 분석에 있어 저는 이 TTT 모델을 거의 그대로 적용했습니다. 다시 말해 모델은 제가 만든 것이 아니어요 ;ㅁ; 물론 완벽한 통계적 모델은 존재하지 않고, TTT 모델 또한 마찬가지입니다. 사실 선수들의 실력을 1차원적인 '값'으로 표현한다는 것 자체가 불가능한 목표라고 할 수 있지요. 하지만 단순히 월별/연도별 승률과 같이 단순화되어 데이터의 일면만을 전달하는 통계치보다는, Elo나 TTT와 같은 통계적 모델들이 데이터에 내재된 정보 전체를 사용하는 데 있어 좀 더 효과적입니다. 이들 모델들은 통계학 내에서의 검증을 어느 정도 거친 것들이기도 하구요. 이 글을 올리고 나면 '통계학자들은 거짓말쟁이다'같은 댓글이 많이 달릴 것이 예상되기에 미리 포석을 달아두는 겁니다 ;ㅁ;

분석에 사용할 데이터는 TeamLiquid의 데이터베이스로부터 그 동안 한국 선수들의 브루드워 경기 결과들을 몽땅 긁어왔습니다. 죄송해요 팀리퀴드 ㅠㅜ 1999년 9월 25일의 PKO로부터 2012년 7월 24일의 프로리그 경기까지가 분석에 포함되었습니다. 원 TTT 논문은 연 단위로 데이터를 묶어 window를 만들어 분석했습니다만, 저는 월 단위로 window를 형성했습니다.



자 그럼 이제부터 진짜로 스타크래프트 이야기를 해 봅시다!



1. 황제의 등장, 그러나 천재가 곧 그를 넘어서다.

앞서 말씀드렸다시피 TTT모델은 각 시점 각 선수의 실력을 정량화된 숫자로 표현합니다. 앞으로 이를 간단히 rating이라 부르겠습니다. 정확히 말하면 이 모델은 월별로 각 선수 실력의 평균과 표준편차를 추정하는데, 둘 다 동시에 표현하다 보면 그래프가 지저분해지는 관계로 간단히 rating = 평균 - 표준편차 * 3이라는 보수적인 추정치를 사용했습니다. 그냥 평균을 사용해도 선수 랭킹에 별 차이는 없습니다. 다만 평균을 사용할 경우는 은퇴하고 게임을 하지 않아도 rating이 유지되지만, 제 경우에는 게임이 없어도 불확실성은 증가하기 때문에 rating이 점점 떨어집니다.


자, 그럼 2000년부터 2003년까지 랭크 1위부터 5위에 등장한 선수들의 TTT rating을 봅시다.

사실 이 TTT 모델은 선수들의 실력이 천천히 변화한다고 가정하기 때문에, 아직 데뷔하지 않은 선수들은 보이지 않는 곳에서 열심히 실력을 쌓아 온 것으로 나타난다는 점을 미리 말씀드립니다. 선수가 데뷔한 이후부터의 rating만 보여줘도 좋았겠지만 솔직히 좀 귀찮았습니다... 그런 이유로 초기의 고수였던 기욤같은 선수들은 한번도 1위를 차지하지 못하고 이들에게는 미안하지만 재야의 임요환이 처음부터 1위었던 것으로 나타나게 됩니다. 이런 문제는 데이터가 좀 더 많이 쌓이는 이후 시기에는 발생하지 않으니 너무 걱정하지 말아주세요.


일단 BoxeR 임요환 선수가 매섭게 실력을 향상시키며 치고 올라옵니다. 그리고 그 뒤를 YellOw 홍진호 선수가 뒤쫓고 있군요. 홍진호 선수가 임요환 선수를 넘어서려는 찰나 NaDa 이윤열 선수가 화려하게 등장해 홍진호 선수 대신 2대 본좌 자리를 가로채 버립니다. 아아... 콩까지마... ChRh 최인규 선수, 지금은 해설자인 TheMarine 김정민 선수, Sync 변길섭 선수, 그리고 H라고 쓰여진 것은 사실 H.O.T. Forever 강도경 선수입니다. 제가 크롤링할 때 선수 id에 마침표가 들어갈 수 있는 것을 생각하지 못하고 정규식을 짰다가 지금에서야 확인하게 되었다는요 ㅠㅠ

2. 괴물 최연성의 등장

이윤열 다음의 본좌 자리는 다들 잘 알다시피 괴물 최연성이 차지하게 됩니다. 흥미로운 것은 최연성이 독보적인 1위를 차지하던 시기는 생각보다 그리 길지 않고 이내 하향세를 겪으며 이윤열과 엎치락 뒤치락 하게 되는군요. 앞서 그래프에서 이윤열이 얼마나 압도적인 rating을 보여주었는지 생각해 볼 때 그가 얼마나 전무후무한 게이머였는지를 알 수 있지 않은가 합니다.

이 시기는 혜성같이 정상급으로 등장했다가 이내 수그러든 게이머들이 너무 많아서 해당 시기 1위부터 5위 내에 들었던 게이머들을 모두 포함하다 보니 그래프가 너무 복잡해졌네요. 그래도 자신이 좋아하는 게이머들을 찾아보고 싶으신 분들이 있을 것 같아서 그냥 넣어두었습니다. 더 많은 게이머들을 넣지 못한 게 아쉽군요...


3. 이름을 말할 수 없는... 그...

참고로 각 그림 별로 선 색과 형태는 선수들에게 일관되게 적용되어 있지 않고 이 색이 되었다 저 색이 되었다 하니 감안해 주세요. 디테일까지 신경쓰지 못하는 것이 제 그릇이라... 미국은 지금 새벽이고 저는 내일 출근해야 합니다 ;ㅁ;
그 다음 본좌를 차지한 것은 이름을 말할 수 없는 자입니다만 귀찮으니까 마재윤이라고 불러줍시다. 이윤열과 최연성 선수가 조금씩 주춤해가는 가운데 Midas 전상욱 선수가 잠시 1위를 차지합니다만 얼마 가지 못해 sAviOr 마재윤 선수가 압도적으로 치고 올라오는군요. 이 때는 정말 대단했었죠... 2007년 3월 3일의 3.3은 아직 나오지 않은 것 같군요. 사실 저는 당연히 마재윤이 이기겠지란 생각에 본방사수를 안하고 스포일링도 신경쓰지 않고 있다가 이 명경기의 흥분을 놓치고 맙니다...


4. 치고 올라오는 택뱅리쌍

3.3에서 패배한 후 거짓말처럼 기량이 떨어져가는 마재윤과 대조적으로 Jaedong 이제동, Flash 이영호, Stork 송병구, Bisu 김택용 택뱅리쌍이 치고 올라옵니다. Sea 염보성 선수도 상당 기간 정상급에 머물렀지만 이내 페이스가 떨어지고 마는 것 같습니다. rating 1위를 기록한 시기만 본다면 이제동 선수가 마재윤을 이은 본좌라고도 얘기할 수 있겠습니다만 이영호 선수가 금방 가까이 따라붙어 조금 애매한 점이 있네요. 이런 이유로 5대 본좌를 분명히 얘기할 수 없었기에 오히려 '본좌론'에 불이 붙었던 것이 아닌가 합니다. 이 시기부터는 택뱅리쌍의 강세가 두드러져서 1위부터 5위까지를 모두 표시하는 데 별로 선이 많이 필요하지 않네요!



5. 최종병기 이영호의 전성시대

이제동 선수의 페이스가 떨어지면서 이영호 선수가 압도적인 우위를 확보하게 됩니다. 이 정도면 이윤열 선수나 마재윤 선수가 본좌이던 시절에 못지 않게 독보적인 것 같네요. 김택용 선수는 잘할락 말락 하면서 팬들을 희망고문 하고 있고 Fantasy 정명훈 선수가 천천히 하지만 꾸준하게 치고 올라옵니다. JangBi 허영무 선수는 '겜알못' 시기를 겪고 있는 것 같군요...


6. 그리고, 대단원...

이제 지금 시점까지의 그래프를 그려 보았습니다. 이영호 선수의 압도적인 포스도 조금씩 주춤해오고 있었다는 것이 드러나네요. 그리고 마침내 정명훈 선수가 이영호 선수의 rating을 간신히 넘어서고 맙니다. 꾸준히 성장해 온 정명훈 선수의 끈기가 빛을 발하네요. 정명훈, 이영호, 김택용 세 선수가 독보적인 가운데 나머지 이제동, 송병구, 김명운, 허영무 선수가 스타1이 끝나가는 시점까지 비슷비슷하게 엎치락 뒤치락 하고 있습니다. 이 기세대로라면 정명훈 선수가 분명한 본좌로 등극할 가능성도 보입니다만 애석하게도 그건 좀 늦었군요.



7. 맺음말

'통계적 본좌론'이란 제목을 단 이 글이 마무리지어져 가는 이 시점에서 어떤 분들은 '그래서 임이최마 다음의 본좌가 누군데? 임이최마동 맞지맞지맞지맞지!?!?' 라고 제게 물으실지도 모르겠습니다. 글쎄요. 저는 숫자와 그래프를 보여드렸습니다! :-D 본좌의 자격이 무엇인지, 그래서 누가 '스타크래프트: 브루드 워'의 본좌들이었는지를 판단하는 것은 여러분의 몫입니다.

이 글을 쓰며 아쉬운 점은 각 시기 별로 상위 5명의 프로게이머들을 중심으로 그래프를 그리다 보니 좀 더 많은 게이머들을 추억하지 못한 점이네요. 이 글에서 소개한 게이머들 뿐만 아니라 정말 많은 선수들이 인상적인 경기들을 보여주며 우리들을 울리고 웃겼습니다. 이 자리를 통해 이 모든 선수들에게 그동안 정말 감사했다는 말씀을 드리고 싶네요.

그리고 팀리퀴드에서 완벽한 데이터베이스를 구축해주지 않았다면 이 분석은 애초에 생각할 수도 없었겠죠. 멋대로 데이터를 긁어가서 정말 죄송하고요... Teamliquid Hwaiting!

마지막으로 이 글에서 제시된 의견은 제 개인적인 것으로 Blizzard Entertainment의 공식 입장과 전혀 무관합니다. 하지만 멋진 게임을 출시한 것에 멈추지 않고 꾸준히 게임을 패치하고 배틀넷 서버를 유지하며 여러 방면으로 eSports를 지원해 우리들에게 멋진 추억을 선물한 블리자드에게도 박수를 보내며, 스타크래프트 2에서도 전작 못지 않은 감동을 얻을 수 있기를 기대합니다.



p.s. 그리고 사족이지만 스타1의 팬 여러분, 같은 스덕으로서 여러분의 아쉬운 마음은 충분히 이해합니다만... 스타크래프트 2에 조금 더 힘을 실어주셨으면, 적어도 게임과 그 게이머들을 무분별하게 깎아내리지는 말아주셨으면 합니다. 스타1 리그는 이미 우리 손으로 지켜낼 수 있는 선을 넘어선 지 적잖이 시간이 지났다고 생각합니다. 더이상 새로운 게이머가 유입되지 않는, 2군을 제대로 유지하지 못하는 상황이 오래 되었지요... 엄전김을 비롯한 온게임넷 관계자나, 과거 MBC게임이나, 협회나, 블리자드나, 스타1을 살리고 싶은 생각이 우리보다 못해서 이러한 결정을 내렸으리라고는 생각하지 않습니다. 스타2 역시 나름의 매력을 갖고 있는 훌륭한 게임이고, 또 지금 8개 게임단의 선수들이 선수 생활을 유지하며 새로운 출발을 꿈꿔볼 수 있는 유일한 기회는 스타2 뿐이라고 생각합니다. 팬이 될 수 없다면, 안티가 되지는 말아주세요.

p.s.2. 조만간 영어로 번역해 팀리퀴드에도 올릴 생각입니다 :-)



8. 그림 몇 개 더...

임이최마 + 이제동, 이영호의 전체 rating

택뱅리쌍
6룡!




Monday, April 2, 2012

통계학자들이 코끼리를 냉장고에 넣는 방법



frequentist 통계학자: 코끼리의 다리만 떼어 냉장고에 집어넣은 후 1% 신뢰 수준에서 유의한 부분이 냉장고에 들어있다고 주장한다.

베이지안 통계학자: 코끼리의 몸을 MCMC 샘플링하여 냉장고에 집어넣으면 언젠가 냉장고에 다 들어갈 것이다.

머신러닝 통계학자: 코끼리의 다리만 모두 떼어 냉장고에 집어넣은 후 코끼리의 Support Vector가 모두 냉장고에 들어있다고 주장한다.

복잡계 물리학자: 일단 코끼리의 신경망 그래프를 그려 사이언스에 논문을 낸다. 유명해져 NSF 그랜트를 따서 코끼리를 넣을 수 있는 냉장고를 주문한다.

Monday, March 19, 2012

논문에 담긴 추억

옛날에 읽던 논문을 다시 꺼내 읽자니 그 때 생각이 모락모락 난다. 병특은 금요일에 끝났는데 그 주말에 바로 포항으로 내려가 그 다음 월요일부터 계절학기 수업 듣고 연구참여 하며 늦깎이 복학생 생활을 했었다. 3년간 병특을 하는 동안 추억이 깃든 포항에 다시 내려가면 얼마나 좋을까 하고 늘 그려왔는데, 막상 빈 기숙사에 짐을 풀자 쓸쓸함부터 몰려왔었지. 장소는 거의 그대로인데 그 공간을 채우던 친구들은 대부분 떠나고 없는 것, 어딜 가나 내가 까마득한 선배이고 불편한 사람이 되는 것이 더욱 쓸쓸했었다. 지나갈 사람은 지나가야 하는 것이 당연한데 막상 그것을 직접 확인하기 전까지는 와닿지 않더라고... 그래도 도서관에 가는 것은 좋았다. 내가 저학번일 때에도 도서관은 원래 혼자 가는 곳이었으니까, 원래 공부는 외롭게 하는 것이었으니까; 누구의 방해도 받지 않고 선형대수학이며 SVM이며를 처음 공부하던 그 때로 돌아갈 수 있었다. 통계학의 기초 개념도 모르면서 테크니컬한 통계 논문이며 기계학습 논문들을 읽는다고 도서관에서 머리를 끙끙 싸매고 있다가 옥상에 올라가 바람을 쐬며 누구누구가 도서관 옥상에서 뽀뽀하는 걸 목격한 추억을 회상하며 피식피식 웃고 방에 들어가면 또다시 정처없이 혼자고 그랬었다. 그렇게 읽던 논문이다... EM도 모르면서 variational inference를 보고 있었구나. 나이만큼 성숙하지 못했지만 나이에 대한 책임을 져야 한다는 것을 뒤늦게야 깨닫고 방황하던 시절들, 그 때의 먹먹함이 이따위 JMLR 논문에 가득 담겨 있다는 것이 참 뜬금없고 웃기지만 내 삶이고 추억이라는 것들이 대체로 그런 것들로 이루어져 있다.

Friday, September 9, 2011

허영무 이야기


스타1이나 2이나 게임 플레이를 멈춘 것은 물론이고 리그 중계도 그만 보기 시작한지 꽤 되었고, 개강 초부터 이런 저런 데드라인에 치여 정신 없는 와중이지만... 정말 보지 않으면 안 될 것 같아서 스타리그 4강 허영무 vs 어윤수를 보았다. 오랜만에 보는 것임에도 감동에 눈물이 찔끔;

허영무가 가장 물이 올라 MSL 4강에 올랐을 때, 지금까지도 프로토스 최강자 중 하나인 송병구를 같은 수 같은 유닛 컨트롤 싸움에서부터 압도하며 씹어삼키는 것을 보고, 이제 손 느린 게이머의 시대는 여기서 끝이로구나 하며 개탄했던 기억이 난다. 그 때의 허영무는 별명처럼 정말 '올마이티' 해 보였다.

허나 내 설레발과는 달리 손 느린 게이머의 대명사인 송병구는 그 이후로도 꾸준한 성적을 낸 반면 허영무는 그렇게 올라간 결승에서 박찬수에게 3:1로 패하고 나서는 언제 그렇게 잘했냐는 듯이 바로 기나긴 슬럼프에 빠지고 말아 나를 아연실색하게 했다. 사람들은 '허필패' '패왕사신기'라며 조롱하기 시작했고, 이미 거듭된 패배로 상심했던 어린 게이머는 인터넷 상에서 네티즌들과 설전을 벌이는 등 심적으로 크게 흔들리는 모습을 보였다.

그러던 허영무가 MBC 게임 방송이 없어지고 3개의 프로팀이 해체되는 스타리그 최악의 지금 이 순간 과거의 상처들을 극복하며 '예선 와일드 카드 - 16강 재경기 - 8강 독보적 랭킹 1위 이영호와의 대결 - 4강 대 토스전 승률 1위 어윤수와의 대결' 을 걸쳐 다시금 결승에 오른 모습을 보니 가슴 한켠이 뭉클하다.

드라마틱하게도 허영무가 결승에서 만나는 상대는 SKT1의 정명훈. 최근 경기는 별로 보지 못했지만 프로토스전에 있어서라면 이영호에게도 둘째 가라면 서러운 그가, 군 입대를 앞둔 최연성 코치와 정명훈-최연성 콤비의 마지막 결승으로서의 투지를 불태우고 있으니 나는 여전히 허영무가 이길 거라는 예상이 되지 않는다.

하지만 허영무가 다시 한 번 결승에서 패하더라도 나는 그를 크게 걱정하지 않는다. 그는 이미 아무리 절망적인 슬럼프에 빠지고 나서도 희망의 끈을 놓지 않고 꾸준히 노력하면 몇 번이고 회복할 기회는 다시 찾아온다는 것을 보여주었다. 그래, 언제든 다시 일어서고 내가 있던 그 위치로 돌아갈 수 있다는 것만 믿으면 된다. 그렇게 몇 번이고 노력하면 언젠가는 한 발걸음을 더 내딛을 수 있을 테니까.

대학원 생활이 생각보다는 쉽지 않다. 한국을 나와 보니 세상이 참 넓고 잘 하는 사람이 너무나도 많다, 그리고 그런 사람들과 어깨를 나란히 하기엔 나의 심성이 너무나도 유약하다, 이런 좌절감들에 자꾸만 마음이 흔들린다. 하지만 간만에 튼 스타리그에서 허영무가 럴커 밭에 스톰 뿌리는 모습을 보며 '그래, 나도 스스로에 대한 믿음을 잃지 않으면 다시 저렇게 할 수 있겠구나', 이런 생각을 한다는 게 나도 좀 쑥스럽고 우습긴 한데, 정말 그런 위안을 받았다.

Sunday, July 31, 2011

Considered Harmful

전산에는 Considered Harmful이라는 이제는 재미삼아서도 많이 쓰는 문구가 있는데, 에드거 다익스크라의 'Go to statement considered harmful'이라는 논문에서 기인한 것. 여기에 ' 'GOTO Considered Harmful' Considered Harmful'이란 반박 논문과  '"GOTO Considered Harmful" Considered Harmful' Considered Harmful?'이 나오면서 난장판이 되고 두고두고 사람들이 써먹는 문구가 됨. 자세한 것은 위키 참조 http://en.wikipedia.org/wiki/Considered_harmful

그런데 내가 더 재미있고 인상적으로 본 것은 다익스트라의 답변 'On a somewhat disappointing correspondence'인데, http://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EWD1009.html 에 나타난 자신감 넘치는 태도. "에휴 이쯤 얘기하면 알아들을 줄 알았는데, 너희는 왜 아직도 이 모양 이 꼴이니? 할 수 없지, 내 자세히 설명해 줄께!" 하는 것 같달까...

덧붙여 '지금쯤 프로그래머라면 당연히 인덱스는 0부터 시작하는 것이 좋다는 것을 다들 알 줄 알았는데...'라는 다익스트라 느님의 말씀! 인덱스는 자고로 0부터 시작하는 것이 대세요 진리이니, MATLAB이나 R 개발자들은 반성하시고...

저번에 트위터에 올렸던 것 같은데 Infinity Kim 에게 보여줄 겸사겸사 해서; 예전에는 페이스북에 긴 글을 올리면 알아서 Note로 바꿔줬던 것 같은데 이제는 또 없어졌나 보네? 얘네들도 은근히 기능을 만들었다 없앴다 하고 있구만...

Friday, July 1, 2011

수식 사용 연습



<img src="http://www.codecogs.com/gif.latex?e^x = \sum_{i=1}^n 2^i" /> 이런 식으로 쓰면 됨!