나는 이번 한국콘텐츠 진흥원에서 열리는 AI챗봇 만들기 프로젝트에 참여하게 되었다. MindsLAB 이라는 국내 전문 AI 컨설팅 회사에서 나와 직접 교육을 받고 프로젝트를 진행하였다. 거기서 수업듣거나 프로젝트 하며 배운 내용들을 정리하여 작성해 보고자 한다.
출처 : MindsLAB Academy
작성 : jckim
영화나 공상에니메션에서 사람들은 이제 컴퓨터와 대화하기 시작한다. 마블사의 인기 영화인 아이언맨 시리즈에서도 주인공 토니가 그가 개발한 컴퓨터인 자비스와 대화하는 장면을 자주 볼 수 있다. 이렇듯 최근 4차 산업혁명의 여파로 A.I 인공지능이 발달하면서, 그 중 사용자와 시스템이 대화하는 'ChatBot' 이 각광을 받고있다. 우리 주변에서도 애플사의 Siri나 지니 같은 대화형 인공지능 제품들이 많이 나오고 있다. 또한 금융사나 보험사 등에서 고객관리시스템을 챗봇을 이용하는 곳도 등장하기 시작했다. 그럼 Chatbot이란 무엇이며, 어떤 기능을 가지고 사용자 또는 고객과 대화하는지 알아보자.
ChatBot은 말 그대로 Chat Robots의 줄임말 이다. 챗봇은 Conversational System(대화형 시스템)에서 발전하여 서비스와 기술의 결합으로 발전해 왔다. 챗봇은 기본적으로 사람의 인터페이스롤 모방하여 사람과 컴퓨터간 대화를 다양한 방식으로 한다. 우리가 문자를 직접 키보드에 입력해서 대화하는 경우도 있지만, 사용자의 음성을 인식하고 분류하여 대화를 진행하기도 하고 동작인식 System을 사용하기도 한다.
Chatbot은 여러가지 장/단 점이 있는데, 먼저 장점은 첫번째로, 익숙한 인터페이스와 쉬운 접근성을 가지고 있다는것이다. 최근 서비스마다 각기의 UI가 따로 필요 없어짐에 따라 기존에 있던 채팅 어플리케이션에 Chatbot을 붙여쓰는 사례가 많다. 가장 좋은 예로는 카카오톡에 플러스 친구 같은 서비스이다. 따로 UI를 제작할 필요가 없어 사용자들은 기존에 사용하던 UI를 이용하여 Chatbot에 쉽게 접근할 수 있다. 두번째로, 데이터베이스의 활용으로 검색및 데이터수집을 할 수 있다는 점이다. SQL같은 외부데이터 베이스 활용이 사용자와 챗봇간 대화중 검색을 가능하게 하여, 검색엔진을 대처하여 사용할 수 있는 대안으로 떠오르고 있다. 또한 사용자가 입력하는 텍스트나 음성데이터를 자동으로 저장 할 수 있다. 세번째로, 고객서비스 채널로 이용한다면, 고객대응에대한 비용이 절감하게 된다. 기존의 FAQ같은 단순처리 업무를 챗봇이 하나로 통합해 사용자들 또는 회사가 쉽게 제품이나 서비스에 대한 피드백을 받을 수 있다. 그리고 고객에게 다양한 서비스를 제공할 수있다. 직접적으로는 사진이나 동영상, 검색결과등 여러 정보를 제공할 수 있고, 기업에게는 고객들의 특징이나 대화반응에 따른 고객 군집분석을 실시할 수도 있다.
여러가지 장점을 가지고 있는 챗봇은 또한 여러가지 한계를 갖는다. 먼저 학습의 한계가 있다. 2016년에 마이크로소프트 사의 Tay라는 챗봇은 16시간만에 서비스가 중단되었다. 이유는 불명확한 다수의 사용자가 Tay 챗봇과의 대화에서 비윤리적이거나 부적합한 대화를 진행했기 때문이다. 기계학습을 기반으로 하기때문에, 챗봇도 학습데이터가 중요한 역할을 하게되는데, 이 학습단계에서 잘못된 데이터를 학습해 버린것이다. 즉 학습에 따라 챗봇의 기능이 결정된다는 것이다. 두번째로 정밀도의 한계가 있다. 우리가 상상하는 자비스 같은 General AI기반의 대화형 인공지능 아직 불가능 하다는 것이다. NLU나 워드임베딩(Word-Embeding)기술들이 발되었지만, 아직도 챗봇에 좀더 다양한 기능이나 넓은 대화범위를 주게되면 학습과정이나 처리과정에서 대화의도가 충돌하게 된다. 그리고 사용자들이 기계학습에 대한 개념이 부족하여 위의 Tay의 사례가 발생하기도 한다. 고객이 어떤의도로 챗봇을 사용하느냐와 제작자가 어떤기능을 위해 챗봇을 제작할지에 대한 한계가 아직 명확한 것이다. 세번째로 챗봇채널의 보안의 문제가 있다. 챗봇을 통해 고객의 정보나 특징을 분석하려면 챗봇과 사용자간 대화에서 고객의 개인정보가 올려지는데, 그 개인정보를 어떻게 보호하고 암호화된 정보로 저장할 것인지에 대한 문제들이 아직 남아있다.
이러한 한계들을 극복하고 챗봇이 가진 장점들을 살리기 위해 챗봇은 새로운형태로 계속 진화되어 왔다. 초기에는 정보검생형 챗봇, 단순히 단어에 대해 검색 또는 매칭만 하고 사용자가 원하는 정보를 안내하는 기능만 있었으나. 현재는 버튼형 봇과 Web봇을 이용하여 상담형 챗봇 까지 발전하였다. 버튼형 챗봇의 경우 사용자의 응답을 미리 정해놓아 제작자가 원하는 시나리오대로 대화를 이끌어갈 수있다. 네이버 톡톡이라는 챗봇의 경우 순수대화형에서 버튼형으로 바꿨을때, 사용율이 약 14%정도 증가했다고 발표했다. 제작자가 원하는 목적을 수행하는 챗봇을 사용자가 누군지의 상관없이 구현할 수있다. 또 Web봇을 이용하여 대화로 처리하기 힘든 문제들을 웹페이지 링크를 통해 사용자에게 정보를 제공한다. 카카오톡의 플러스친구 서비스를 이용하는 회사들이 Web봇 방식을 많이 사용한다. 앞으로는 통합채널에서 대화를 생성하고 문제해결까지 할 수 있는 정도로 챗봇이 진화되리라고 기대한다. 이제는 챗봇이 인공지능의 어떤 기술들을 사용하여 만들어 졌는지 알아보자.
언어이해기술
챗봇은 인공지능의 3대핵심기능에서 인지지능에 초점이 맞춰져 있다. 그중 컴퓨터가 사람의 대화를 인지하는 언어지능과 음성인식기능을 주로 사용한다. 인공지능의 언어이해기술은 사요자의 텍스트처리에서 부터 계속 발전해 왔는데, 자연어의 처리가 어떻게 이루어 지며 어떻게 정의 되는지 알아보자.
첫번째로, 자연어처리기술(Natural Language Processing ; NLP)에서 시작된다. 자연어처리기술 NLP는 인간의 언어(Text)를 기계적으로 분석하여 컴퓨터가 이해할 수 있는 형태로 변환하는 기술을 의미한다. 문서를 문장으로 분류하고 문장을 최소의 의미있는 단위인 형태소로 나누어 품사를 부여하고 문장에 포함된 고유 명사들을 인식한다. 이 변환과정이 끝나면 자연어이해기술과정으로 넘어간다.
자연어이해기술(Natural Language Understanding ; NLU)는 자연어처리에서 한 단계 발전된 기술이다. 이 과정은 단순히 사용자의 Text를 처리하는 것이 아닌 실제로 인간의 언어를 이해하기 위해 Text를 처리한다. 형태소분석, 개체명 인식 뿐 아니라 의도나 감정등도 분석할 수 있으며, 인간의 의도를 완전히 이해하기 위해 사용되는 기술이다.
현재 챗봇에서 사용되는 NLU과정은 미리 구축된 사전을 바탕으로 코퍼스(말뭉치)에 태킹(의도분류)를 하는 형태로 학습데이터를 형성한다. 그리고 학습데이터를 각각의 알고리즘으로 학습 모델을 형성한다. 이 NLU Processing은 총 4개의 단계로 구성되어 있다.
NLU Processing
첫번째로 문장을 분리한다. 수집된 문서나 사용자의 대화를 기계학습 기반으로 문장을 분리한다. 분석의 전초단계이며 이 과정이 끝난후 형태소분석(POS Tagging)단계에 들어간다. POS는 Part of Speech의 약자로 형태소의 뜻과 문맥을 고려해 품사들을 태킹해 주는 작업이다. 형태소는 말이 뜻을가진 가장 작은 단위로써, 형태소로 분할한 뒤 명사, 동사, 형용사 등의 품사를 꼬리표 처럼 하나씩 태그해 준다. 그다음은 개체명인식 과정이다. 여기서는 미리 학습시켜놓은 고유명사나 시간, 주소 같은 값들을 사전에서 인식하여 추출한다. 전처리와 후처리 두가지 방식이 있는데, 전처리는 사전의 규칙을 이용하여 개체의 모호성을 해소하고, 후처리는 학습을 통해 신조어나 등록되지 않은 단어들을 태그하여 개체명을 인식하는 과정을 지난다. 마지막으로 문장의 주어, 목적어, 서술어, 보충어의 문장관계를 식별하여 파악해 최종적으로 사용자가 어떤의도를 가지고 있는지, 어떤 감정이나 목적을 가지고 있는지 파악한다.
Word-Embedding
언어이해기술에는 NLP ,NLU와 더불어 Word-Embedding기술이 있다. 이 기술은 대량의 문서를 모아 단어의 유사도에 따라 벡터화 시키는 기술이다. 단어들의 특징을 추출하여 특정 차원으로 분류하는데. 유사한 단어끼리 군집화(Clustering)되는 특징이 있다.
기존에는 One-hot Encoding 방식을 이용하여, 단어를 수치적인 방법으로 표현했다. 2진법을 이용해 단어들에 모양에 따라 0,1로 분류하여 단어를 수치화 했는데, 이 방식은 단어 뜻의 본질이 없어지는 한계가 있었다. 이 모델은 Neural Network를 이용하여 발전했는데, Neural Network방식은 연산 처리 속도가 느려 후에 Recurrent Neural Network Language Model, RNNLM방식으로 발전하였다. 이 방식은 단어를 따로 정해주지 않고 순차적으로 단어를 입력하는 형태로 학습이 진행되었는데, 굉장히 많은 데이터 학습을 필요로 했다. 그리고 Shorten 메모리에 강한 특징이 있다.
이후 2013년에 구글에서 발표한 Word 2 vec 방식 각광을 받았는데, 이 방식은 Word-Embedding의 전형적인 방식으로 기존의 계산량을 획기적으로 감소시켜 빠른 학습이 가능한 장점이 있다. 이 모델은 CBOW Model 과 Skip-gram Model로 나눠 지는데, CBOW는 주어진 단어에 앞뒤 단어를 input으로 사용하는 Network 방식이고 Skip-gram은 주어진 단어를 가지고 주변의 여러단어를 확률적으로 유추하는 Network방식이다.
또 다른 Word-Embedding의 방식으로는 Glove(Global Vector for Word Representation)이라는 방식이 있다. 이것은 2014년 스탠포드대학 연구팀이 개발한 방법으로, Word 2 Vec를 보완하고자 만든 방법이다. 여기서는 등시등장확률개념( Provability of co-occurrence)개념이 등장하는데, 이것은 하나의 학습 말뭉치에서 동시에 등장한 단어의 빈도를 확인해 말뭉치의 단어갯수로 나누어 그 값을 이용한 방식이다. 특정 문맥의 단어가 출현했을때, Embedding 된 두 단어 Vector의 내적을 이용한 방식이다. 이 방식의 장점은 말뭉치를 전체로 인식하는 특징이 있으나 단점으로는 단어간의 유사도를 찾기 힘든 점이 있다.
Comments