top of page
작성자 사진JC.kim

[Chatbot] SDS (Spoken Dialog System)

최종 수정일: 2018년 2월 5일

출처 : MindsLAB Academy

작성 : Jckim

챗봇의 종류에는 여러가지가 존재한다. 대표적으로 FAQ(DNN)방식, NMT방식, SDS방식이 있다. NMT(Neural Machine Translation)방식은 학습데이터를 기반으로 스스로 문장을 형성하여 사용자와 대화를 진행한다. FAQ방식은 사용자들이 자주하는 질문을 정해놓고, 그에맞는 대답을 미리 시스템에 넣는 방식이다. NMT는 여러 턴에 걸쳐 대화가 가능하지만, FAQ방식은 여러턴에 대화를 할 수 없다. 또, FAQ방식은 사용자의 질문에 정확한 대답을 줄 수 있으나, NMT방식은 자유도가 매우 높아 이상한 답변이나 사용자가 원치않는 정보를 제공할 수가 있다. 이 두방식의 장단점을 이용하여 만든 방식이 SDS(Spoken Dialog System)방식이다.

SDS (Spoken Dialog System)은 사용자- 시스템간 대화형 인공지능에 사용되는 하나의 대화 시스템이다. 이 시스템의 특징은 시스템을 설계하는 사람이 시나리오를 직접 구성하여 자유로운 대화를 구성할 수 있다. 그리고 Slot을 이용하여 시스템과 소통이 가능하다. 시스템을 구성하는 제작자가 얼마정도의 시나리오를 계획하느냐에 따라 싱글턴,멀티턴 대화들이 모두 가능하다. 대신 시나리오가 길어질 수록, 각 Slot간의 충돌을 고려하여 System을 설계해야 한다. 그렇다면 이 SDS는 어떤 구조를 가지고 있을까?


SDS는 크게보면 두가지 부분으로 구성되어 있다. 첫번째는 학습부분과 두번째는 처리 부분이다. 먼저 학습부분인 대화이해 학습 코퍼스를 제작해야한다. 코퍼스란 학습을 위한 말주머니를 의미하며, 사용자의 발화를 Data화 하여 학습을 시켜준다. Training data와 비슷한 개념이다. 이 코퍼스를 이용하여 태깅된 문장을 학습한다. 여기서 DA(Dialog-Act)와 Slot을 이용하여 문장을 학습한다. 이 두가지 개념은 아래에서 설명하기로 하고, 이렇게 전체적으로 학습된 Data를 이용해 이제 사용자와 대화를 시작한다. 처리부분인 이 곳에서사용자와 대화를 하며 사용자의 의도와 사용자가 사용한 말의 의미를 분석한다. 그리고 사용자와 대화가 끝나면, 대화관리모델이 새로 형성된다. 이 형성된 대화관리는 수동으로 구축된 DB(Data Base)와 상호작용을 하며, 사용자의 말에 적절한 응답을 한다. 이런 하나의 과정이 전체적으로 학습이 이루어 진다.아래 그림이 SDS에 대한 전체적인 개념도 이다.


이제 SDS내에서 사용하고 작동하는 여러가지 기능에 대해 알아보자. 챗봇의 중점은 Context가 잘 유지되게끔, 내가 설계한 시나리오대로 Tagging을 통해 대화를유도하고 사용자에게 서비스를 제공하는 것이다. 그리고 Tagging된 단어나 문장을 학습하고 분류하여 Slot과 DA를 만들어 대화를 관리한다. 먼저 Tagging에 대해서 알아보자.

태깅은 어떤 context의 내용을 대표하는 이름표 같은 것이다. 사용자의 여러가지 응답에 Tag를 달아서 해당 질문에 맞는 알맞은 답변을 제공할 수 있다. Tagging은 Slot 태깅과 DA태깅으로 나뉜다. Slot은 사용자와 시스템사이의 대화진행을 위해 서로 공유해야하는 정보들이 들어가는 공간이며, DA(Dialog-Act)는 사용자 또는 시스템의 발화의도를 명확하게 분류하는 장치이다. 이 DA는 대화의 행위를 정의하며, 각 세션마다 의도한 응답들이 서로 충돌하지 않게 보호하는 역할도 한다.

그리고 여러가지 Slot 들이 모여있는 것을 Class라고 한다. 예를들어 "날씨"라는 Class를 만들면, 그 안에 대화에 필요한 여러 Slot들이 존재한다. 온도가 높고 낮은 부분, 비가오거 눈이오는 또는 바람이 부는 상황에 대해 각각 Slot을 만들어 하나의 날씨 Class로 사용할 수 있다.

챗봇과 사용자간 대화에서 사용자의 질문에 학습된 Data를 이용해 자동으로 Tagging이 달리게 된다. 이 태깅으로 사용자의 의도를 파악할 수 있다. DB를 통해 특정 태그에서 사용자가 원하는 정보를 Slot으로 불러올 수도 있다. Slot과 DA를 이용해 사용자의 말을 태그하는 점은 여러가지 위험성을 낮춰 주기도 한다. 사용자의 발화를 따로 일일히 학습시키면, 사용자의 대화의도를 정확히 파악하지 못한채 대답을 해 버릴 수도 있다. 이러한 이유로 SDS system에서는 Slot과 DA를 이용한 태킹작업이 매우 중요한 역할을 한다.

SDS 시스템의 전반적인 부분에 대해 살펴 보았다. MindsLAB Academy에서 진행한 교육을 바탕으로 작성했기에, MindLAB에서 사용하는 워크벤치(Making Tool)을 기준으로 공부를 하였다. 회사가 사용하는 워크벤치라 특수성이 짙기는 하지만, 이 구조를 공부하는 것도 인공지능과 사용자간 대화를 이해하는데에 큰 도움이 될 것이다. 다음엔 SDS가 ChatBot 내에서 어떻게 작동하는지, 공부해 볼 것이다.


* 사진자료 출처 : MindsLAB Academy

조회수 171회댓글 0개

최근 게시물

전체 보기

Comments


bottom of page