비전공자도 이해할 수 있는 AI지식 -컴퓨터는 사람의 명령을 어떻게 실행하는가-

1. 명령을 수행해주는 다이얼로그 매니저

 

다이얼로그 매니저의 역할은 하나에 국한되지 않습니다.

 

앞서 음성인식이나 자연어 이해가 자신의 역할에 맞는 특정 기능만 수행했다면 다이얼로그 매니저는 사실상 그 이외의 모든 작업을 수행합니다.

 

앞에서 슬롯 필링을 위해서는 멀티 턴(여러번의 대화)이 필요했습니다.

 

이 경우 대화 내용을 기억해두어야 하고, 궁금한 내용은 외부 지식 기반 서비스에 연결하여 찾아보기도 해야 하는데, 이런 기능을 모두 다이얼로그 매니저가 수행합니다.

 

무엇보다 여러 도메인에 맞춰 적절한 행동을 수행하도록 명령을 내리는 역할을 합니다. 

 

대표적으로 음악을 틀거나 날씨를 조회하라는 명령을 내리는거죠.

 

물론 다이얼로그 매니저가 직접 음악을 틀거나 할 수 있는 건 아닙니다.

 

말 그대로 매니저이기에 음악을 틀 수 있는 서비스, 예를 들어 멜론 같은 서비스에 접속해 최신 가요 목록을 찾아서 음악을 재생하도록 명령을 내리는 거죠

 

이렇게 음악을 재생한 후에는 결과를 통보합니다.

 

참고로 멜론 같은 여러 서비스를 이용하는 기능을 스킬(skill)이라고 합니다.

 

회사마다 조금씩 다르게 부르긴 하지만 아마존 알렉사나 카카오의 챗봇 플랫폼인 카카오 i 오픈빌더, 네이버 클로바 모두 이러한 서비스 기능을 스킬이라고 부릅니다.

 

스마트 스피커에서 스킬은 스스로 작동하지 않습니다.

 

반드시 다이얼로그 매니저가 개입하고, 판단하여 스킬에 명령을 내리죠. 

 

다이얼로그 매니저가 "음악 재생"이나 "날씨 조회"같은 명령을 스킬에 내리면 스킬에 등록된 서비스가 실행되어 결과를 받아오는 구조입니다.

 

"오늘 날씨 어때?"라는 문장은, 자연어 이해 과정에서 다음과 같이 정리되었습니다.

 

- 도메인: 날씨

- 인텐트: 조회

- 위치: 현재 위치

 

그렇다면 이제 어떻게 실행하면 될까요? 먼저, "날씨"에 해당하는 스킬을 찾습니다.

 

아마도 해당 스킬에는 기상청 서비스가 등록되어 있을겁니다. 

 

이제 기상청 서비스에 명령을 내려 현재 위치의 날씨를 조회합니다.

 

그렇게 알아낸 정보를 적절하게 가공해 다음과 같은 응답으로 만들어냅니다.

 

- 응답: 비, 25도

 

"비"가 내리고 온도는 "25도"입니다. 이제 다 끝났습니다. 최종 결과를 사용자에게 알려주는 일만 남았습니다.

 

자연스러운 문장을 만들어 그걸 읽어주기만 하면 되겠죠. 

 

그렇다면 자연스러운 문장은 어떻게 만들까요?

 

 

2. 자연어 생성이 어려운 이유

 

앞서 살펴본 "이해" 영역(음성인식, 자연어 이해)에서는 딥러닝이 좋은 성능을 보였고, 사실상 "이해" 영역은 모두 딥러닝을 채택했다고 봐도 틀리지 않습니다.

 

그렇다면 자연어 생성도 딥러닝을 적극 도입하여 통계적인 방법을 거쳐 기계가 자유롭게 문장을 생성하도록 두면 될까요?

 

100번의 발화 중 99번을 제대로 알아듣는다면, 똑똑한 스피커라고 말할 수 있겠죠.

 

하지만 반대로 100번의 문장 중 99번만 정확하게 생성해낸다면 마찬가지로 똑똑한 스피커일까요?

 

만약 잘못 생성한 그 1번의 문장이 "인간은 모두 죽어야 해!"라는 문장이라면요?

 

이런 문제 때문에 "생성" 영역에서는 아직까지 딥러닝 활용이 조심스럽습니다.

 

그나마 챗봇은 딥러닝을 적극 도입하여 진정한 대화 인공지능을 향해 발걸음을 내딛고 있는데, 스마트 스피커는 아직 챗봇처럼 자유롭게 문장을 생성해내지 못합니다.

 

무엇보다 스마트 스피커는 "문제해결용 대화시스템(Task-Oriented Dialogue system)"이기 때문입니다.

 

목적이 분명한 대화만을 주로 한다는 얘기죠.

 

예를 들어 날씨를 묻거나 레스토랑을 예약하기 위한 대화는 목적이 뚜렷합니다.

 

따라서 스마트 스피커는 자유로운 대화보다는 목적에 맞는 대화에 방점을 맞추죠.

 

이 때문에 자유롭게 대화를 생성하지 않고 정해진 템플릿에 정보를 채워서 문장을 생성하는 방법을 주로 사용합니다.

 

"현재 날씨는 OO고, 온도는 OO도입니다."

 

날씨를 알려주기 위해 이 같은 템플릿에 값을 채워넣습니다.

 

템플릿에 응답을 대입해보면 다음과 같습니다.

 

"현재 날씨는 비가 내리고, 온도는 25도입니다."

 

이제 생성된 문장을 스피커가 읽기만 하면 됩니다. 물론 단순한 템플릿을 쓰면 매번 똑같은 방식으로 답변하므로 식상할 수 있으니, 보다 풍부한 대화를 위해 템플릿을 다양하게 구성합니다.

 

여러 개의 템플릿으로 번갈아가며 대답한다면 훨씬 더 사람처럼 대답을 할 수 있겠죠.

 

이러한 작업을 두고 대화를 디자인한다고 말합니다. 

 

물론 언젠가는 이 작업도 딥러닝 기반의 통계적인 방법으로 해결할지 모르지만 아직까지는 사람이 정교하게 설계한 대화 디자인이 스마트 스피커 분야에서 주류를 이루고 있습니다.

 

특히 목적이 뚜렷한 문제해결용 대화시스템을 추구하는 스마트 스피커는 모두 정교한 대화 디자인을 기반으로 작동하고 있죠.

 

항상 단조로운 답변만 한다는 단점은 있지만 불필요한 응답을 하는 경우는 거의 없습니다.

 

적어도 "인간은 모두 죽어야 해!"따위의 답변은 절대로 하지 않죠

 

 

3. 제한된 음성만 재생하면 되는 스마트 스피커

 

그렇다면 스마트 스피커는 어떤 과정을 거쳐 문장을 읽는 걸까요?

 

스마트 스피커는 템플릿을 기반으로 제한된 문장을 생성하므로 마찬가지로 제한된 음성만 재생하면 됩니다.

 

그래서 성우가 녹음한 소리가 아직까지는 품질이 가장 좋습니다.

 

딥러닝이 아무리 발전한다 해도 아직 성우보다 더 잘 읽기는 어렵기 때문이죠. 

 

지하철의 안내 방송을 생각하면 이해가 쉽습니다.

 

"이번 역은 강남, 강남역입니다. 내리실 문은 왼쪽입니다."

 

안내 방송은 성우가 직접 녹음한 소리이기 때문에 매우 자연스럽습니다.

 

이 경우 "이번 역은 OO, OO역입니다. 내리실 문은 왼쪽/오른쪽입니다."라는 문장을 녹음해놓고 역명이나 지명은 따로 녹음해 덧붙이면 되겠죠.

 

녹음한 소리를 조합하면 하나의 자연스러운 문장을 만들어낼 수 있습니다.

 

이러한 방식을 연결 합성 또는 USS(Unit Selection Synthesis, 음편 선택 합성)라고 합니다.

 

미리 녹음된 음성을 기준에 따라 잘게 쪼개어 음편(unit)을 만들고 가장 적합한 음편을 선택하여 음성을 합성하는 방식을 말합니다.

 

마치 잡지나 신문지에서 글자를 오려내 편지를 쓰는 것과 비슷한 방식입니다.

 

글자만 충분하다면 어떤 문장이든 만들어낼 수 있죠.

 

USS라는 명칭이 이 같은 과정을 말해줍니다. 

 

무엇보다 원음을 그대로 사용하므로 음질이 매우 자연스럽다는 장점이 있습니다. 

 

연결 합성 기술은 과거 내비게이션을 거쳐 지금도 많이 사용하는데, 무엇보다 항상 일정한 답변을 하는 경우에 유용하죠.

 

물론 여러 개의 녹음을 조합하다 보니 초기에는 운율의 부조화로 자연스럽지 못한 경우도 있었고, 연결 부분에서 잡음이 들리기도 했지만 최근에는 기술이 향상되어 한 문장을 읽는 것처럼 자연스러워졌습니다.

 

하지만 여전히 음색 변환이나 감정 표현 등이 어렵다는 단점은 여전하죠.

 

내비게이션을 사용하는 분은 USS 방식으로 만든 음성이 익숙할 거에요.

 

스마트 스피커 또한 내비게이션과 유사하게 정해진 문장을 주로 읽으므로 지금 국내에 출시된 거의 모든 스피커는 USS방식을 거친 목소리를 내고 있습니다.

 

 

 

 

 

 

 

 

 

TAGS.

Comments