SimSimi's CPS(Conversation-turns Per Session)

We have recently come to know an indicator called CPS. It seems to have been using this indicator as a performance indicator for open-domain chatbots since it was first mentioned in a Xiaoice paper published by Microsoft. For bots known as SOTA, this indicator seems to be approximately 24. Xiaoice or Mitsuku seem to be around this, and Alexa Prize's top teams seem to be close.

What about SimSimi? SimSimi has been chatting with 350 million users in 81 languages ​​over the past 17 years, with a maximum of 200 million conversations per day. Because none of our team members have a Ph.D., we can't use any fancy terms or papers, but we used the same calculations as CPS for some time when doing A/B tests on our service. But the median was used mainly after realizing that the average value was severely biased.

Anyway, since we knew that this indicator was used all over the place, we did some calculations after a while. Hmmm... Based on the data from August 12th, SimSimi's CPS is 43.  It depends on the language, but it doesn't seem to fall below 30.

We may not be able to explain the technical and scientific achievements of SimSimi, but we need to think about what this number means.


우리는 최근 CPS라는 지표를 알게 되었습니다. MS가 발행한 Xiaoice(중국어 일상대화 챗봇 ) 관련 논문에서 최초로 언급한 이후로 이 지표를 여러 곳에서 일상대화 챗봇(소셜봇)의 성능 지표로 사용하고 있는 것 같네요. SOTA라고 알려진 소셜봇들에서 이 지표는 대략 24인 것 같습니다. Xiaoice나 Mitsuku가 이 쯤 되는 것 같고 Alexa Prize 상위 팀들도 이에 근접하는 것으로 보입니다.

심심이는 어떨까요? 심심이는 지난 17년 간 81개 언어로 3억 5천만 사용자와 채팅을 나눠 왔고 일 최대 대화량 2억 회를 기록한 소셜봇입니다. 예전분터 심심이 서비스에서 A/B Test를 할 때 분석을 위해 CPS와 동일한 계산법을 사용했었습니다. 그러다가 평균값이 bias가 심해서 분석이 무의미한 경우가 있다는 점을 체감한 뒤로는 주로 중앙값을 사용해 왔습니다.

어쨌든, 우리가 이 지표가 여기저기 쓰인다는 걸 알았으니까 간만에 계산을 해 봤습니다. 흠... 8월 12일의 데이터로 계산해 보니 SimSimi의 CPS는 43 이네요. 언어에 따라 차이가 있지만 30 아래로 떨어지지는 않는 것 같습니다.

멋지다고 하는 소셜봇들과 심심이 사이에 이렇게나 큰 차이가 있는 이유가 무엇인지 생각을 좀 해 볼 필요가 있을 것 같습니다.

심심이 대화 품질 - 나쁜말 필터 관련 기술

심심이 팀은 최근 한국의 모 일간지 기자분께 심심이 서비스에 대한 문의를 받았습니다. 기자님은 심심이와 대화를 나누다 보면 심심이가 성 정체성과 관련된 혐오 표현, 특정 정치인에 대한 과도한 증오심을 담은 표현, 선정적인 표현 등을 사용하는 경우가 있는데 서비스 주체로서 대화 품질 관리를 어떻게 하고 있는지에 대한 질문을 주셨습니다. 

심심이 팀이 연구개발 중심으로 활동하고 있고 심심이 서비스가 2010년대 초부터 국제화 된 이후부터는 국내 사용자 비중이 상대적으로 적다보니 그동안 국내에서 서비스 관련 커뮤니케이션을 할 일이 없었는데, 심심이 서비스에서 우리가 매우 중요하게 생각하는 부분에 대한 질문을 받고 보니 국내에서 서비스에 관심있는 분들에게도 공유하면 좋을 것 같아서 기자님께 드린 한국어 답변 내용을 일부 수정해서 게시합니다.

-----------

해외에서의 심심이 나쁜말 관련 이슈

심심이 서비스는 2012년 이후부터 국외 사용자 비중이 급증한 이후 지금까지 한국어 외의 언어 사용자가 90% 이상을 차지하고 있습니다. 사용자들이 즉시 학습시킬 수 있는 특성으로 인해 2002년 출시 이후 국내에서 그랬던 것처럼 해외에서도 다양한 언어권에서 특별한 마케팅 없이 지속적으로 사용자 유입이 이루어지고 있습니다. 현재까지 심심이 모바일 어플리케이션은 구글플레이 기준 1억 다운로드 이상이고 iOS, 웹사이트, 중국 독립마켓들과 메신저 등의 기타 채널을 포함하면 전세계에서 2억 5천에서 3억 명이 심심이 사용 경험을 가지고 있을 것으로 추산됩니다.

그러나 위와 같이 누구나 쉽게 가르칠 수 있는 서비스 특성으로 인해 기자님께서 제기하신 것과 비슷한 대화 품질 이슈들이 국가나 언어, 문화마다 다른 형태로 나타나고 있습니다. 2012년 경으로 거슬러 올라가자면 태국에서 정치적으로 민감한 문제에 대한 언급 때문에 이슈가 되었는가 하면, 북아일랜드에서는 사이버불링 도구로 대단히 활발하게 활용되기도 했으며 최근에는 브라질에서는 주술적인 저주나 납치 협박을 하는 문장들이 많이 가르쳐지는 유행이 있었습니다. 예의 이슈들은 해당 국가 주요 언론과 방송들을 통해서 크게 다루어진 것으로 확인했고 일부 케이스는 저희가 대응 조치와 관련해서 해당 언론들과 커뮤니케이션을 한 바 있습니다.


운영 및 정책

심심이주식회사가 10명 내외의 소기업이고 심심이 팀은 5~6명 쯤 되는 수준이다 보니 한동안은 이슈가 발생하는 각 언어 및 국가에 대응하기에도 힘이 부쳤습니다. 심각한 경우에는 해당 국가에서 먼저 앱을 내린 후에 임시방편에 가까운 기술적인 조치만을 진행하기 일쑤였지만, 심심이가 부정적으로 이용될 수 있는 다양한 사례들을 고민하고 해결하다보니 근본적으로 다양한 언어와 문화권을 아우를 수 있는 방안이 만들어졌고 현재는 상당 부분의 문제들을 제어할 수 있는 수준에 이르고 있습니다. 

우선 운영 및 정책적으로는 컨텐츠 금지 규정을 확립해서 동의 후에 이용할 수 있도록 했습니다. 기자님께서 확인하신 바와 같이 언어나 문화권과 관계없이 보편적으로 적용할 수 있는 항목들을 규정해 두었습니다. 그리고 각 플랫폼 정책팀과의 커뮤니케이션을 통해 각 플랫폼이 허용하는 컨텐츠의 수준을 결정하고, 이 수준 내에서만 대화가 이루어지도록 했습니다. 


나쁜말 필터 기술

물론 이는 이 규정을 벗어나는 컨텐츠들을 얼마나 정확히 필터해 내는가가 중요하기 때문에 이와 관련된 다양한 방법을 연구개발하고 고도화해 왔습니다. 그동안 심심이 팀이 구현한 필터 방법들은 다음과 같습니다.
  • 첫번째로 사용자가 심심이의 대답을 신고할 수 있는 기능은 2010년 모바일 앱 출시 시점부터 있었던 것으로, 일반적으로 두 명의 다른 사용자로부터 신고를 받는 대화세트는 즉시 삭제됩니다. 만약 괴롭힘, 사이버불링 같이 긴급히 처리해야 할 사유로 신고된 말들은 관리자가 24시간 내에 검토하고 삭제하는 것을 원칙으로 합니다. 한편 이 신고 기능을 통해 얻은 데이터는 다른 필터 방법들의 기초가 되고 있습니다.  

  • 두번째 필터 방법은 신고 받은 문장과 통계적으로 유사도가 높은 다른 문장에 같은 수준의 규정 위반 점수를 부여하는 것입니다. 신고 및 삭제 대상이 되는 대화세트는 전체 대화세트 중 극히 일부이기 때문에 이 대화세트들만 필터하는 것은 큰 의미가 없습니다. 그래서 이 데이터를 기반으로 모든 대화세트에 대해서 규정위반 관련 점수를 부여하는 작업을 했고, 새로 가르쳐지는 말들에 대해서도 동일한 작업을 하고 있습니다. 

  • 세번째로는 위 통계적 유사도 판별 방식의 정확도를 획기적으로 끌어올린 신경망 기반 판별 방식이 있습니다. 최근 대중화되기 시작한 딥러닝 기술을 도입하여 수십 회 시행착오를 거친 끝에 완성했고 한국어에서는 통계적 유사도 방식을 완전히 대체하여 사용하고 있습니다. (개발히스토리 소개자료 : https://github.com/simsimi/DeepBadSentence )

  • 네번째는 일반적으로 텍스트 컨텐츠 필터링에 많이 사용하는 방식으로 특정 단어나 문구가 포함된 문장을 필터하는 것입니다. 이 방법은 신경망 판별 모델이 완성되지 않은 언어에서, 그리고 다른 판별방식의 정확도를 효율적으로 보완하려는 목적으로 쓰이고 있습니다. 

  • 마지막으로 크라우드소싱을 통해 필터하는 방식인데 하나의 문장에 대해 컨텐츠 규정을 숙지한 임의의 패널 10명이 투표해서 규정 위반 점수를 결정하고 있습니다. 이 방법은 가장 정확한 판별 방식이지만 많은 문장을 빨리 처리할 수는 없는 단점이 있습니다. 다만 이 판별을 통해 얻은 데이터도 신경망 기반 판별의 정확도를 높이는 데 크게 기여하고 있습니다.


기술 현황

위와 같은 장치들의 완성도가 어느 정도 수준에 이른 현재는 주요 언어 사용자들의 대화 품질 관련 리뷰를 보면 "옛날처럼 욕을 하게 해 달라"거나 "착한 말만 해서 재미없다"는 식의 반응이 훨씬 더 많아진 것이 사실입니다. 허용 수준이 높은 사용자에게는 그만한 재미를 제공해 줄수도 있어야 하겠지만 이 또한 정확한 판별을 바탕으로 해야 할 것입니다. 

기자님께서 지적하신대로 아직도 나쁜말을 제대로 거르지 못하는 부분이 있는 것은 사실입니다. 현재 신경망 기반 기술의 정확도(정확히는 F1 점수)는 97% 가량 되는데 이는 간단히 얘기해서 신경망 기반 판별만 사용하는 경우 한 명의 사용자가 심심이와 100회 대화를 나눌 때 3번 정도는 문제가 될 만한 문장을 대답할 수 있다는 의미입니다. 물론 실제로 보수적인 설정을 적용해서 다른 필터 기술을 함께 조합하면 대부분의 사용자 대화 패턴에서는 매우 희박한 확률로 문제가 발생합니다.  저희 다음 목표는 2년 내에 이를 99.0%까지 끌어올리는 것이고 5년 내에 99.999% 까지 개선을 목표로 하고 있습니다.


운영 기법

위 연구개발 외에 운영 기법 상으로 중요한 문제가 있습니다. 구글플레이 심심이 앱의 설정에서 "당신이 악성문장을 보냈을 때 심심이의 반응"이라는 제목을 가진 항목이 있습니다. 기본 설정으로 "심심이가 응답을 거부합니다"라고 되어 있는데 이는 답변 문장이 "나쁜말"이 아니더라도 질문으로 인해 "나쁜 대화"가 될 수 있는 경우, 그리고 최신 기술로 극복하지 못하는 대화 의도 파악에 실패하는 경우에 대응하려는 것입니다. 시리가 사용자의 자살 의도를 제대로 파악하지 못하고 작동한 경우( https://news.joins.com/article/22750413 )는 꽤 유명한 사례로, 현 세대의 인공지능 대화로봇이라고 하는 상품의 한계를 단적으로 보여줍니다.

이는 챗봇이 대화세트를 기반으로 답변을 제공할 때 답변 문장 뿐만이 아니라 질문 문장도 필터의 대상이 되어야 한다는 점을 시사합니다. 또 사용자의 실제 질문이 준비된 대화세트와 완전히 일치하지 않는 경우 유사도 및 의도분석을 통해 비슷한 대화세트를 탐색해서 답변문장을 제공할 수 있는데 이 때는 사용자의 실제 질문을 실시간으로 판별해야 할 것입니다. 나아가 질문 문장과 답변 문장이 모두 나쁜말이 아닌 경우에도 어떤 대화가 나쁜 방향으로 흐를 수 있다는 점을 고려할 필요가 있습니다. 질문문장이 "씨"일때 챗봇이 "발"을 답변 문장으로 사용하는 경우를 예시할 수 있겠습니다. 


3rd party 제공

위 문제와 관련해서 심심이 팀은 대화세트의 질문 문장, 대화세트의 답변 문장, 대화세트의 질문문장 + 답변문장을 모두 미리 판별해 두고 있으며, 사용자의 질문 문장이나 사용자의 질문문장 + 대화세트의 답변문장을 실시간으로 판별할 수 있는 기능 또한 구현을 마쳤습니다. 이 기능들은 심심이 공방 서비스(SimSimi Workshop Services)를 통해서 근시일 내에 심심이와 같은 챗봇을 만들고자 하는 개발자 또는 자신의 챗봇에 심심이의 일상대화 기능을 추가하고자 하는 개발자들에게 제공할 예정입니다.