[NDC 18] AI는 "갈빗대 순서가 바뀌고 싶니?"를 욕으로 인식할까

조회수 2018. 4. 25. 10:41 수정
번역beta Translated by kaka i
번역중 Now in translation
글자크기 설정 파란원을 좌우로 움직이시면 글자크기가 변경 됩니다.

이 글자크기로 변경됩니다.

(예시) 다양한 분야의 재밌고 유익한 콘텐츠를 카카오 플랫폼 곳곳에서 발견하고, 공감하고, 공유해보세요.

인텔리전스랩스 조승래 데이터분석가 NDC 강연

게임 채팅방은 혼란의 도가니다. '별'로 가려진 각종 육두문자부터, 비속어를 쓰지 않을 뿐이지 욕이나 마찬가지인 표현들과 부모님의 안부를 묻는 이야기까지. 멀티플레이가 활성화된 게임이 인기를 모을수록 채팅 필터링에 대한 개발자들의 고민은 커진다.

 

과연 자동 필터링, 인공지능 필터링으로 욕을 얼마나 막을 수 있을까? 넥슨 인텔리전스랩스 어뷰징탐지팀에서 활약하고 있는 조용래 데이터분석가의 이야기를 들어보자.

넥슨 인텔리전스랩스 조용래 데이터분석가


# 왜 인공지능이 욕을 배워야 할까?

 

기존의 금칙어 기반 욕설 탐지 시스템은 특정 단어를 블랙리스트에 등재해서 채팅에 그 단어가 올라올 때 가리거나 제재를 한다. 많은 게임이 일반적으로 채용하는 시스템이지만 문제가 세 가지 있다. 

 

가장 큰 문제로 우회가 쉽다. 단어 가운데 '1'을 섞거나 파자하는 식으로 욕을 표현하는 것은 인터넷을 조금만 해봤다면 쉽게 접할 수 있는 표현이다. 그만큼 쉽고 익숙한 회피 방법이다. 이걸 막기 위해 단어를 늘리면? 욕설이 아님에도 욕으로 인식하고 가려버린다. 

 

가장 흔한 오탐의 사례로는 "(18번) 채널로 와" 가 있다. 일상적인 대화에도 제재를 하는 것은 유저의 쾌적한 게임 경험을 해치는 큰 문제다.

 

또한 비속어를 사용하지 않은 공격적 표현을 구분할 수가 없다. 각각의 단어는 일상적인 대회에서 쉽게 쓰이지만, 조합이 됐을 때 공격적인 표현이 되는 경우가 많다. 부모님의 안부를 묻는 경우가 그렇다. 기존의 금칙어 시스템으로는 이런 것을 잡아내기가 어렵다.

 

이런 상황이기 때문에 결국 욕설 신고가 들어오면 운영자가 직접 읽고 판단을 해야 한다. 시간적인 부담과 더불어 업무의 많은 시간을 욕설 구분에 들여야 하기 때문에 정신적인 스트레스도 이만저만이 아니다. 그래서 조 분석가는 자연어를 이해하는 딥러닝 '욕설탐지기'를 개발하게 됐다고 밝혔다.


# 그래서 욕을 가르쳐봤습니다. 어떻게?

 

프로젝트는 정밀한 언어적 고증을 거쳐 욕설을 걸러내는 행위보다 운영자의 수고를 덜어주는 방향으로 개발됐다. 그래서 신고가 들어온 표현을 1차적으로 인공지능이 자동 분류한 다음 운영자에게 제재 확률이 높은 표현을 추출, 정의하고 분류해 표시해주는 시스템으로 개발됐다. 

 

먼저 인공지능이 많은 욕을 분석하기 위해 배워야 할 기초 지식, 기반이 되는 데이터의 확보가 필요했다. 비유하자면 어떤 말은 정상적인 표현이고 어떤 말은 욕인지 꼬리표를 달아 구분해주는 '라벨링'을 해주는 것. 이 데이터는 게임 등 여러 데이터에서 자동으로 크롤링하는 것은 물론, 10여 명의 팀원들이 '자체 제작'해서 입력헀다.

작동 모델은 CNN(Convolutional Neural Network)를 사용했다. 흔히 이미지 학습과 처리에 사용되는 모델. 작동 방식은 다음과 같다. 고양이 사진을 학습해 구분하는 인공지능을 만든다고 하면, '고양이 귀', '고양이 눈', '고양이 코' 같은 지엽적인 부분을 인식하는 필터를 만들어 '특성'으로 추출한다. 이렇게 만든 필터를 통해 다른 고양이 사진도 특성을 찾아 '고양이'라고 인식하는 방식이다. 

 

이 모델을 사람이 사용하는 자연어 처리에 활용하는 것이 1D CNN이다. 중요한 점은 특정 단어가 아니라 '자모음'으로 파자해 입력시켰다는 것. '채팅'이라는 환경에서 비롯된 결정으로, 많은 게임 채팅이 '제발'을 '젭라' 혹은 'ㅈㅔㅂㄹㅏ' 등으로 쓰는 등  띄어쓰기를 하지 않거나 오타가 많다. 

 

인간의 인식으로는 '제발'과 '젭라' 모두 같은 뜻이지만 데이터로 입력할 때는 그렇지 않기 때문에 자모 단위로 쪼갰다. 이렇게 하면 순서를 바꾸거나 비슷한 표현도 같은 뜻으로 분류할 수 있다.

이 모델이 적용된 상황에서 'ㅈㅣㄹㅏㄹㅎㅏㄴㅔ'라는 단어를 입력하면 어떻게 될까? 

 

인공지능은 자모음을 수백 개의 필터로 추출한다. 그래서 가장 특징적인 부분만 남기고 나머지는 버리는데 이는 불필요한 부분을 줄여 오탐 가능성을 낮추고, 차후 비슷한 특성의 텍스트가 입력됐을 때 동일한 특성을 찾아내기 위해서다. 추출 후 남은 특성을 비교해서 해당 텍스트가 욕설일 확률을 계산한다. 이런 과정을 거쳐 인공지능은 'ㅈㅣㄹㅏㄹㅎㅏㄴㅔ'를 욕으로 인식한다.

 

실제로 테스팅 결과 금칙어 기반 시스템의 욕설 탐지 정확도는 56%에 불과한 반면 1D CNN 모델의 정확도는 88%에 달했다. 금칙어 기반 시스템은 사전에 입력된 단어만을 정확하게 탐지하기 때문에 파자나 가운데에 다른 문자를 끼워넣는 우회책을 탐지하지 못하지만 1D CNN은 이를 탐지할 수 있기 때문이다.

훌륭한 성과지만 여기서 끝이 아니다. 이 출력이 정확한지, 모델의 판단 근거가 믿을 만한지 신뢰성을 판단하는 검증 과정이 필요하다. 만약 모델이 잘못된 판단을 했다면 왜 그랬는지, 그리고 검증을 마친 단어를 학습시키는 과정도 이 단계에서 다시 이루어진다. 욕설 탐지기가 정확한지 검증하는 방법은? 

 

"딥러닝 모델은 블랙박스라고 흔히들 이야기하죠. 왜 이 결과가 나오는지 가끔 만든 사람도 알 수 없는 경우가 있어요. 그럴 땐 가장 무식한 방법을 취하죠. 글자를 하나하나 빼보면서 어디서 정상, 어디서 욕설 판단을 하는지 점검하는 거에요."

 

그런 이유로 욕설 판단을 마친 후에는 LIME(Local Interpretable Model-agnostic Explanations) 이라고 하는 추가 알고리즘이 작동한다. 예를 들어 인공지능이 '개구리'라고 판단한 이미지에서 눈이나 몸통, 다리, 배경 등을 빼보면서 어디까지 개구리로 인식하는지 검증하는 알고리즘이다. 

 

그래서 욕설탐지기 프로토모델은 1D CNN+LIME의 형태가 됐다. 이를 통해 파자, 1 끼워넣기 등 변형된 욕설에서도 모델이 정확하게 작용하는지, 어떤 단어 때문에 욕으로 판단했는지 확인할 수 있게 됐다. 이 과정을 통해 만들어진 프로토 타입 데모 버전은 지난해 10월에 열린 '데이터야 놀자' 행사에서  공개된 바 있다.


# 욕 기초 교육 끝냈으니 이제 심화 교육을 하자

 

데모 시연 후에는 모델을 더욱 고도화하는 과정에 들어갔다. 학습에 필요한 데이터를 선정하는 기준을 만들었다. 이미 탐지가 잘 되는 단어를 또 학습시키는 것은 여러모로 낭비이므로, 모델의 탐지율이 50%를 기록하는 '애매한' 욕설의 데이터를 뽑았다. 이 과정은 '액티브 러닝 시뮬레이션'을 통해 모델이 비슷한 데이터를 선택하는 기준이 되어 더 잘 학습하도록 이루어졌다.

 

다음으로 1D CNN에 이어 VDCNN이라는 모델을 새로 적용했다. CNN 과정을 보다 깊게 한다는 뜻으로(Very Deep), 입력된 데이터의 특성을 추출하는 레이어를 늘려 정확도를 올리는 것이다. 그러나 레이어가 너무 많아 학습이 어려워지는 문제가 있었다. 이를 보완하기 위해 특정 레이어를 건너뛰는 지름길 개념의 '숏컷 커넥션'이 등장했다. 이리하여 레이어를 여러 겹 쌓는 한편 숏컷을 중간에 심어 학습 속도를 개선했다.

 

고도화한 모델의 욕설 탐지 정확도는 90%로, 프로토 모델보다는 많이 오르지 않았다. 이는 정확도의 차이로, 검증 모델인 LIME의 느린 속도도 한 몫 했다. 자연어 처리라는 모델 특성상 수십 개의 변형을 만들고 해석해야 하기 때문에, 입력과 해석을 동시에 처리 가능한 모델이 필요한 시점이다.

 

조 분석가는 '어탠션'이라는 방법을 사용했다. 어탠션을 적용해 인공지능이 어느 부분 처리에 시간을 많이 들이는지 확인하고, 집중한 곳의 정보가 결과에 더 많이 반영되도록 했다. 덕분에 여러 문장을 동시에 탐지하고 해석할 수 있는 모델이 만들어졌다.


# 서든어택에 적용해봤습니다

 

이렇게 만든 욕설 탐지기 솔루션이 시험된 곳은 <서든어택>이다. 

 

FPS 게임은 팀플레이가 많은데, 하다 보면 유저 입장에서는 상대를 욕할 이유가 생긴다. 특히 서든어택은 플레이 중 사망하면 조작이 불가능한데 채팅은 가능하다. 곧 욕을 하게 된다. 그래서 많은 욕설 신고가 들어오는 게임 중 하나다. 현재 <서든어택>의 욕설 처리 시스템은 운영진의 수동 검토로, 조 분석가는 욕설탐지기 솔루션을 시험하고 시스템 도입 전후 결과를 비교했다. 

우선 솔루션은 두 가지 기능을 제공했다. 먼저 신고가 들어온 채팅 내용 중 욕설 부분을 추려내고, 운영 원칙에 위배돼 제재 확률이 높은 채팅을 제일 위쪽으로 놓아 정렬한다. 물론 오탐도 있기에 사람이 직접 확인하고 오탐을 제보하게 된다. 

 

테스트 결과 탐지기를 적용하지 않았을 때 1분에 23건의 욕설을 확인하고 이중 41%가 제재 대상이었지만, 탐지기 적용 후에는 1분에 35건의 욕설을 적발하고 96%가 제재 대상으로 나왔다. 빠르게 신고를 처리할 수 있음은 물론 데이터가 쌓임에 따라 새로이 발생하는 욕설 뿐 아니라 차별과 비하 표현, 외국어까지 탐지할 수 있는 가능성이 엿보였다.

 

"많은 사람이 인공지능을 보고 사람을 대체할 '스카이넷'이라고  생각하는데, 100%의 정확도를 확보할 수 없으면 인간을 대체할 수가 없어요. 특히 어뷰징 탐지 업무는 정확도가 관건입니다. 무고한 사람을 어뷰저로 제재하면 안되니까요. 저는 인공지능을 '저비스' 같은 존재로, 업무가 더욱 편리해지도록 돕는 비서 같은 존재라고 생각합니다. 게임 개발과 운영에 있어 데이터를 분석하고 인공지능 연구와 협업하고 소통하면 더 좋은 결과가 나올 것이라 생각합니다."​ 

이 콘텐츠에 대해 어떻게 생각하시나요?