top of page
  • 작성자 사진JC.kim

[Chatbot] 대화과정

출저 : MindsLAB Academy

작성 : jckim

챗봇은 사용자와 시스템간의 대화 라고도 볼 수있다. 이번엔 사용자와 시스템사이의 Input과 Output이 어떻게 이뤄 지는지, 대화시스템(Conversational System)에 대해 알아보자.

대화시스템은 자연어를 사용하여 사용자와 컴퓨터 사이에서 정보를 주고받는 시스템이라고 설명 할 수 있다. 사용자의 입력에 따라, 처리과정을 거친 후 사용자의 입력에 알맞은 답변을 내는 시스템이다.

대화시스템은 기본적으로 사용자의 Input이 Text로 변환되어야 처리가 가능하다. 변환된 input은 인식과 이해의 내부처리과정을 거쳐 대화관리시스템으로 들어간다. 여기엔 외부 Data Base와 내부 Data Base를 이용해 사용자가 원하는 Output을 추출하여 다시 언어생성 처리과정으로 넘어간다. 그리고 사용자가 알아들을 수 있는 언어로 대답을 하게된다. 이 대화시스템은 대화관리방법과 답변생성방법에 따라 크게 4가지로 분류가 된다.

먼저 대화관리방법에 따른 분류를 살펴보자. 대화관리방법은 두가지 방법이 있다. Open Domain 과 Closed Domain이 있는데, Closed Domain은 한정적인 주제에 답변이 가능한 형태이다. 대표적으로 FAQ나 Expert System등이 있다. 한정적 범위에 대해 답변을 처리함으로 인해 정확도가 매우 높고, 단순업무의 반복을 줄일 수 있는 특징이 있다. Open Domain은 다양한 형태의 주제에 대해 답변을 추출해 낼 수 있는 형태이다. 사용자의 질문에 대해 예측과 추론을 하여 답변을 준다. 이 형태는 가장 어려운 형태로 우리가 이상적으로 생각하는 미래의 AI모습에 가장 가깝다. 현재는 사람과 일반적 대화를하는 AI를 Open Domain 형식을 따른다고 말한다.

그 다음은 답변생성에 따른 분류이다. 하나는 미리 정해진 답변을 말하도록 하는 검색기반모델(Retrieval Based Model)이며, 다른 하나는 사용자의 Input에 따라 다양한 답변을 생성해내는 생성기반모델(Generative Based Model)이다. Retrieval Based Model은 기계학습 방식을 사용하지만, 새로운 문장을 생성하지는 않는다. 이 방식의 장점은 문법 및 내용상의 오류가 적고, 소량의 데이터로 학습이 가능하다는 점이 있다. 여기엔 대표적으로 규칙기반방식(Rule-Based), 슬롯필링방식(Slot-filling), 태스크방식(Task-Based)가 있다. Generative Based Model는 말뭉치 자체를 학습하여 각 의도에 따른 모델을 형성한다. 정해진 답변이 아닌 시스템이 답변을 만들기 때문에, 비교적 유연하며, 다양한 주제에 대해 시스템과 사용자가 대화할 수 있다. 그러나 시스템이 발화문을 만들기 때문에, 문법상 오류나 문맥적 오류가 발생할 가능성이 높다. 보통 20%정도의 오류가 발생한다고 한다. 대표적으로 기계학습기반방식과 학습과 규칙을 함께 사용하는 하이브리드 방식이 있다.


위에 설명한 여러가지 방식을 자세하게 살펴보자. 먼저 검색기반모델의 Rule-Based 방식은 단순한 if-else의 조건문 규칙을 따른다. 미리 정의한 규칙과 자연어 처리 과정을 통해 발화를 이해하고 그에 맞는 정해진 대답을 한다. 한정적 기능을 제공하지만, 단순한 챗봇을 만드는데에는 매우 효과적이다.

그 다음은 Slot-filling 방식이다. 이 방식은 Slot에 들어온 값의 유무에 따라서 대화의 흐름이 결정된다. 대화가 오가가는 과정을 Slot으로 인식하여 대화가 진행되고, Slot이 채워지면 다음대화로 진행이 된다.

Task-Based 방식도 검색기반모델 중 하나인데, 이것은 대화의 시나리오를 예상하여 구축하고, 제작자의 의도대로 Task를 분류하여 대화를 진행시킬 수 있다. 기존의 Rule Based 방식과 Slot filling 방식을 모두 결합한 형태이다.


생성기반모델에 따른 방식 중 하나인 Encoder-Decoder Model이 있다. Encoder는 입력문장의 길이 값의 특징을 벡터로 추출해 내는 것이고, Decoder는 길이 값에 맞게 문장을 생성해 낸다. 문장 길이에 따라 성능이 결정되며, 문장이 길어질 수록 성능이 현저히 낮아진다. 이 점을 보완하기 위해 RNN이나 LSTM방식을 사용하기도 한다.

2016년에 구글은 위의 Encoder-Decoder Model을 보완한 새로운 기계번역 모델을 만들어낸다. (Google Neural Machine Translation) 이 방식은 8개의 Encoder와 Decoder로 구성되어 있고, LSTM Layer가 존재한다. 또 Wordpieces개념을 도입하여 신조어가 들어왔을때, 대응할 수 있는 환경도 갖추었다. 대이터 주도의 학습효율을 극대화 하였으며, 단어 단위에서 문장단위로 앞뒤문맥을 확인후 번역하는 특징이 있다.

마지막으로 생성적적대모델(Generative Adversarial Network)이 있다. 이 방식은 비지도 학습의 한 종류이며, 알고리즘이 두 부분으로 나뉘어 비교를 통해 최상의 결과를 도출해 내는 방법이다. 비교과정을 통해 학습데이터와 생성데이터간의 차이를 최소화하는 특징이 있다. Generator 부분은 데이터분류에 맞춰지기 위해 생성되는 모델이며, Discriminator는 샘플이 학습데이터로 부터 추출될 확률을 계산한다.


이로써 챗봇의 대화과정에 대해 알아보았다. 다음엔 실제로 챗봇을 만들기 위해 사용하는 SDS 에대해 알아보고 본격적으로 MindsLAB에서 제공하는 워크벤치와 플랫폼을 통해 챗봇을 만들어 볼 것이다.


사진 및 자료제공 : MindsLAB Academy

조회수 294회댓글 0개

최근 게시물

전체 보기

bottom of page