▲ 웹젠앤플레이 김정주

웹젠앤플레이의 김정주는 게임 로그 수집과 분석 시스템의 구축, 그리고 수집된 로그를 하둡과 파이썬을 활용한 기계학습을 통해 게임 내 어뷰징을 검출하고 서비스를 개선한 사례를 소개했다.


어뷰징이란 '기획으로 의도하지 않은 방식으로 게임 정보를 대량 획득하거나 도움을 주는 행위'를 뜻한다. 서비스 구현상의 허점을 이용한 플레이나 해킹 툴을 사용한 비정상 플레이, 전체 채팅창에 광고로 도배하는 행위가 이에 해당한다. 이러한 행위는 유저신고나 GM 모니터링, 패턴 찾기로는 한계가 있다. 그래서 사람의 개입이 최소화된 탐지 시스템을 만들 필요성이 대두된다.

기계 학습에 대해 설명하기 전에 통계학에 대해 알아야 한다. 통계학은 열악한 상황에서 발전해왔기 때문에 통계학자들은 데이터와 계산을 줄이는 방법을 연구하며 발전했다. 또한, 학문적 영역뿐만 아니라 기본적인 통계지식은 개발, 기획, 서비스 등에도 큰 도움이 된다.

현대는 빅데이터의 시대다. 컴퓨터와 인터넷의 발달로 데이터 수집과 분석이 쉬워졌고 통계적 이론을 통한 근사화의 중요도가 낮아졌다. 그로 인해 다양한 데이터 분석 방법과 툴이 출현하게 된다. 더는 표본이 중요하지 않아졌다. 모든 데이터를 분석할 수 있으니까 말이다.


데이터 분석은 우선 도메인과 데이터의 구조를 파악하는 데서 시작한다. 그리고 데이터를 수집하고, 분석모델을 설계 후 적용한다. 전통적으로 사용한 엑셀이나 SQL 같은 데이터 틀은 아직도 잘 활용되고 있으나 분석의 자유도와 고도화 측면에서 한계가 있다. 그래서 요즘은 다양한 비정형 데이터를 파이썬(Python) 또는 하둡(Hadoop)환경에서 분석하는 경향이 있다.


탐색적 데이터 분석(Exploratory Data Analysis)은 데이터에 숨어있는 정보를 다양한 각도로 요약, 시각화해보며 찾는 과정이다. 처음 접하는 데이터는 이 과정을 겪는 게 보통이다.

[사례 1: 간단한 통계적 아이디어로 스팸 검출]

상황: 신규 오픈한 게임의 채팅창이 광고글로 가득 - 빠른 제재가 필요함. 그러나 기계학습을 진행하기에는 시간이 부족

해결책: 어뷰저는 프로그램적 판별을 막기 위해 메시지를 난독화한다. 일반적으로 채팅 로그 길이는 정규분포를 따른다고 알려져 있으므로 NPS Chart Corpus의 메시지 길이 분포를 조사해 스팸 메시지를 검출한다. 자연어 처리나 기계학습 같은 고급 접근보다 간단한 통계적 아이디어로 시도하는 게 더 좋을 때도 있다. Spam_ratio가 기준 값 이상인 것을 스패머로 간주해 분류된 캐릭터 메시지 확인으로 값을 조절했다. 분류 후 메시지 길이 분포로 특정 길이의 메시지를 분리할 수 있었다.

결과: 구현이 간단했지만, 오탐의 가능성이 존재했다.

개선방향: 자연어 처리기술(NLP)을 도입해 단어별 빈도와 중요도를 고려할 필요가 있다. 또한, 분포와 관측값의 거리를 계산하여 기준값을 선정하면 더 좋게 개선할 수 있다.




기계학습 소개

기계학습을 적용하면 적은 노력으로 괜찮은 결과물을 얻을 수있다. 다양한 문제에 대한 일반적인 솔루션으로 다수의 특성을 동시에 고려할 수 있다. 또한 데이터 변동에 강하다. 조금만 특성을 변경하면 어뷰저가 대응할 수 없다.

기계학습은 회귀와 분류로 나눌 수 있는데 어뷰징 검출은 분류에 속한다. 분류는 종류를 예측하는 행위를 뜻한다. 또한, 지도 학습과 자율 학습으로도 나눌 수 있는데 지도학습은 기존 경험에 의해 분류된 데이터가 있을 때 사용하고 자율 학습은 분류된 샘플 데이터가 없을 때 사용한다. 그런데 현실적으로 데이터는 적절히 나누어져있지 않은 경우가 많다.

기계학습 알고리즘은 기본 알고리즘과 고급 알고리즘으로 나뉜다. 일반적으로 고급 알고리즘은 더 복잡한 모델 학습이 가능하나 고급 알고리즘이 무조건 좋은 것은 아니다. 학습의 결과를 사람이 이해하기에는 기본 알고리즘이 더 좋다.


[기계학습 알고리즘들]

-기본
리니어/로지스틱 리그레션(Linear/Logistic Regression)
결정 트리(Decision Tree)

-고급
랜덤 포레스트(Random Forest)
SVM(Support Vector Machine)
인공신경망(Neural Network)

▲ 기계 학습 구성도

기계 학습은 정확성에 대한 정의가 필요하다. 재현율(Recall)과 정밀도(Precision) 등 다양한 측정 단위를 사용한다. 재현율을 전체 어뷰저 중 얼마나 어뷰저를 찾았는지를 뜻하는 비율이고 정밀도는 찾은 것 중 얼마나 진짜 어뷰저가 있는지의 비율이다.

[사례2: 기계학습으로 어뷰징 검출]

상황: 라이브 게임에서 각종 해킹툴을 사용하여 어뷰징(파밍) 부정 플레이가 만연. 봇의 특성을 하나, 둘로 특정하기 어려움.

해결책: 특성을 특정하기 어려워 기계학습을 도입했다. 운영 측에서 제공한 기존 어뷰저 캐릭터 리스트를 활용한 지도 학습이 가능했다. 디시젼 트리(Decion Tree, 이하 DT)방식으로 지도 학습을 진행했다. 본격적인 학습에 앞서 로그 수집 상태를 확인하고 로그의 구조와 의미를 파악해 학습을 위한 피쳐(Feature)를 추출했다. 사실 로그를 체계적으로 모으는 것은 쉽지 않다. 이 때문에 데이터를 모으고 가공하는데 대부분 시간이 걸린다. 데이터를 수집한 후에는 피쳐를 만들었다. 피쳐는 학습 대상의 특징을 설명해 주는 값이다. 이를 활용해 DT를 진행했다.

결론: 평균 80% 정도의 정확도 값을 얻을 수 있었다. 나쁘지 않았지만, 예측의 결과가 제재의 근거로 쓰인다는 점에서 많이 부족한 값이었다. 그래서 정확도를 올리기 위해 데이터 셋을 분리하고 그리드서치를 통해 최적의 하이퍼 패러미터를 찾았다. 이 결과 정확도는 91%로 상승했다.

발전: 그러나 DT의 고질적인 과적합 문제가 나타났다. 이를 해결하기 위해 랜덤 포레스트(Random Forest)로 교체했다. 정확도는 조금 낮지만, 안정적인 결과를 도출할 수 있기 때문이다. 무엇보다 100%의 정밀도 결과를 얻을 수 있다.

개선방향: 검출된 결과를 이용해 학습 모델을 개선하고 봇 계정에 대한 PII를 수집해두면 신규 봇 학습에 용이할 것이라는 생각을 했다. 그리고 제재 후 변종 봇 모니터링이 필요하다.





▲ 어뷰징 감소 트렌드를 확인할 수 있다.

▲ 붉은 색이 중요한 피쳐다.

데이터 분석을 통해 정상적이지 않은 경우를 밝혀내는 것을 이상 탐지라고 한다. 주로 결제 관련 서비스에서 활용하고 있으며 자율 학습이 적절한 분야다. 이 부분은 특이치 검출과 이상치 검출이 있는데 특이치 검출은 데이터가 오염되지 않았고, 자주 발생하지 않는 이상을 탐지하는 데 유용하다. 이상치 검출은 데이터가 오염되었을 가능성이 있고 표준 분포를 따를 때 사용한다.

게임머니 이상치 검출 같은 경우 특정한 캐릭터를 발견할 수 있었지만, 이들이 부정 플레이를 했다는 명확한 증거는 없기 때문에 제재는 힘들다. 그래서 이들의 명단을 운영 측에 알려 지켜보도록 하고 있다.




느낀점

깊이 있는 기계 학습 활용을 위해 기본 이론을 더 공부할 필요가 있다. 좋은 하이포네시스를 만들 수 있게 되며 최적화를 할 수 있게 된다. 또한, 하나 이상의 알고리즘을 사용해 보고 비교할 필요가 있다. 앞으로 기계 학습은 어뷰징 검출 외 다양한 분야에 사용될 수 있을 것으로 보인다.

어뷰징을 탐색하려고 할 때 기계학습이 적합한지 판단부터 해야 한다. 어뷰징의 특성이 단순하면 전통적인 방법으로 가능하다. 탐색적 데이터 분석을 통해 특성을 먼저 파악할 필요가 있다. 학습 모델에 따라 피쳐 정규화 혹은 직교화가 필요할 수 있으니 이를 체크하고 클래스간 데이터양의 균형이 맞지 않는 문제를 경계해야 한다.


연관성이 전혀 없는 데이터라도 그래프 상에서는 관련성이 있어 보이기도 한다. 데이터에만 집착하지 말고, 게임이면 게임, 사업이면 사업 등 도메인을 이해할 필요가 있다.