Research

클로바 케어콜 - HyperCLOVA를 활용한 대화 시스템 개발

post thumbnail

서론

최근 초대규모(hyperscale) 자연어 모델들이 등장하면서 대화 시스템의 자연스러운 대화 능력이 빠른 속도로 향상되고 있습니다. 여러 대화 시스템 중에서도 특히 자유 주제 대화(open-domain dialogue) 기반 모델들이 급속도로 발전했습니다. 이런 모델들은 시나리오 기반의 대화 시스템과는 달리 다양한 대화 상황에 유연하게 대응할 수 있다는 장점이 있지만, 자유 대화 모델을 이용해서 대화 서비스를 만들 때에는 두 가지 난점을 넘어야 합니다.

우선 대규모의 대화 데이터가 필요합니다. 초대규모 자연어 모델을 학습시키기 위해서도 그렇고 대화 모델도 마찬가지입니다. 초대규모 자연어 모델을 다량의 대화 데이터를 이용해 학습시키는 것은 모델의 대화 능력을 향상시키는 데에 효과적이라고 알려져 있습니다[Zhang et al., ACL, 2020; Roller et al., EACL, 2021]. 반대로 다량의 대화 데이터 없이는 자유 대화 능력을 향상시키기 어렵습니다.

다음으로 자유 대화 모델의 역할을 고정해야 합니다. 초대규모 자연어 모델은 수없이 많은 도메인의 데이터를 학습하기 때문에 다양한 정체성이 형성될 수 있는데요. 일반적으로 대화 서비스는 고정된 어느 하나의 역할을 수행하도록 설계되기 때문에 대화할 때마다 모델의 정체성이 바뀐다면 서비스를 안정적으로 운영할 수 없습니다. 따라서 자유 대화 모델을 서비스에 활용하기 위해서는 모델의 역할을 고정하는 것이 필수입니다.

클로바 케어콜 대화 모델의 역할에 적합한 발화와 적합하지 않은 발화 예시
클로바 케어콜 대화 모델의 역할에 적합한 발화와 적합하지 않은 발화 예시

실제로 서비스를 만드는 과정에서는 두 가지 문제가 결합됩니다. 다량의 대화 데이터를 수집하기 위해서는 다양한 도메인의 데이터를 여러 소스에서 수집해야 하는데 이렇게 되면 역할이 고정된 모델을 학습하는 것이 불가능합니다. 반면 하나의 역할만을 수행하는 대화만 수집한다면 비용이 많이 들어서 대량으로 데이터를 수집하는 것이 어려워집니다. 특히 기존에 존재한 적이 없는 역할로 서비스를 만든다면 그런 역할을 수행하는 대화 데이터를 자연적으로 수집할 수 있는 방법이 없습니다. 따라서 그런 데이터를 처음부터 만드는 과정이 필요합니다.

클로바 케어콜 대화 시스템 개발 파이프라인
클로바 케어콜 대화 시스템 개발 파이프라인

이때 HyperCLOVA가 해결책이 될 수 있습니다. 위 그림은 저희가 사용한 데이터 수집 파이프라인을 도식화한 것입니다.

  1. 먼저 만들고자 하는 대화 시스템이 수행할 대화 예시를 몇 가지 작성합니다.
  2. HyperCLOVA를 이용해 이와 비슷한 대화를 대량으로 생성하고 잘못된 부분이 있는지 검수하는 방식으로 대화 데이터를 수집합니다.
  3. 수집한 데이터로 대화 모델을 학습시킵니다.
  4. 학습시킨 모델과 사람이 직접 대화하면서 추가적으로 데이터를 수집해 보완합니다.

각 과정을 자세히 살펴보겠습니다.

초대규모 자연어 모델을 활용한 데이터 수집

HyperCLOVA는 몇 가지 예시 텍스트를 입력하면 인컨텍스트 러닝(in-context learning)을 통해 그 예시와 유사한 다른 텍스트를 많이 생성할 수 있으며, 이는 대화 데이터를 수집하는 데 활용할 수 있습니다. 케어콜에서 사용한 대화 데이터 수집 과정을 예로 들어 설명하겠습니다. 케어콜은 홀로 거주하시는 어르신들에게 주기적으로 전화를 걸어 안부를 묻고 말벗이 되어 드리는 서비스입니다. 이와 같은 역할을 수행하는 대화 예시는 다음과 같이 작성할 수 있습니다.

어르신들께 안부 전화를 해주는 인공지능 에이전트의 대화입니다.
AI가 주도적으로 대화를 이끌어나가며 어르신의 답변에 맞장구치는 대화를 합니다.
건강, 취미 등 일상적인 내용에 대해, 4-5턴 정도의 대화를 진행합니다.
HyperCLOVA in-context learning에 활용된 입력 텍스트 예시
HyperCLOVA in-context learning에 활용된 입력 텍스트 예시

위 대화 예시를 HyperCLOVA에 입력으로 넣으면 다음과 같이 예시와 유사한 대화를 여러 개 생성할 수 있습니다.

HyperCLOVA를 통해 생성된 대화 예시
HyperCLOVA를 통해 생성된 대화 예시

이런 방식으로 몇 가지 대화 예시를 작성해 비슷한 대화를 대량으로 생성하는 것이 가능합니다. 실제로 케어콜 서비스를 개발하기 위해서 약 300여 개의 대화 예시를 작성했고, 이 예시와 HyperCLOVA를 이용해 약 3만 여개의 대화를 생성했습니다.

물론 대화 데이터를 생성하는 작업이 이것으로 끝나는 것은 아닙니다. 대화 데이터는 일반적으로 다른 자연어 데이터를 생성하는 것과 비교해 생성해야 하는 텍스트의 길이가 긴 편이고 만족시켜야 하는 조건들도 상당히 복잡합니다. 따라서 생성된 대화 예시에는 서비스에 적합하지 않은 예시들도 포함돼 있기 마련입니다. 이를 보완하기 위해 생성된 대화를 검수하는 과정을 거쳤습니다. 검수는 아래와 같이 생성된 대화에서 서비스에 적합하지 않은 부분에 레이블링하는 방식으로 진행합니다.

생성 대화 검수 예시
생성 대화 검수 예시

이와 같은 방식으로 대화 데이터를 수집하면 대화 예시를 사람이 직접 작성하는 것과 비교해 약 13배 정도 빠르게 데이터를 수집할 수 있습니다. 하지만 데이터를 이런 방식으로만 수집하면 HyperCLOVA의 편향(bias)이 대화 패턴의 다양성을 저해할 수 있는데요. 이럴 때 실제 대화 상황을 추가하면 다양한 대화 패턴을 확보하는 데 도움이 될 수 있습니다. 이를 위해 사람이 앞선 단계에서 수집한 데이터로 학습시킨 모델과 실제로 대화하면서 추가 데이터를 수집하는 'human-in-the-loop' 과정을 수행했습니다.

사람과 대화하는 방식으로 수집되는 대화 예시
사람과 대화하는 방식으로 수집한 대화 예시

대화에 참여하는 사람, 즉 작업자는 모델과 대화를 수행하면서 서비스에 적합하지 않은 발화를 레이블링하고 수정하는 작업을 수행합니다. 이때 HyperCLOVA를 이용해 문제가 되는 발화의 대안 발화를 생성함으로써 작업 난이도를 낮추고 작업 속도를 향상시킬 수 있습니다. 발화가 수정되면 대화를 이어서 진행하고, 수정되지 않으면 반복해서 HyperCLOVA를 호출해 다른 발화를 생성합니다. 이런 방식으로 데이터를 수집하면서 문제가 된 발화는 부정적 예시(negative example)로, 수정된 발화는 긍정적 예시(positive example)로 활용합니다. 또한 대화 중에 발생한 부정적 예시의 개수를 이용해서 대화 모델의 오류율을 추정할 수 있습니다. 이와 같이 데이터 수집과 평가를 동시에 진행하며 지속적으로 모델을 개선합니다.

다음은 이렇게 수집한 대화 데이터를 효율적으로 활용해서 역할을 고정한 자유 대화 모델을 만드는 방법을 설명하겠습니다.

역할을 고정한 자유 대화 시스템 모델링

자유 주제 대화(open-domain dialogue) 모델을 구성하는 방식에는 대표적으로 두 가지가 있습니다. 하나는 응답 선택(response selection) 방식이고 다른 하나는 응답 생성(response generation) 방식입니다. 응답 선택 방식은 응답으로 사용할 수 있는 문장들을 모아서 후보군을 미리 만들어 두고 대화할 때 그중에 하나를 고르는 방식으로 응답을 예측합니다. 반면에 응답 생성 방식은 대화할 때 즉석에서 현재 문맥에 어울리는 응답을 생성하는 방식입니다.

두 가지 방식은 각각 장단점이 있습니다. 응답 선택 방식의 경우 정해진 응답 후보가 있기 때문에 응답 후보를 잘 정제해서 모델이 할 수 있는 말과 할 수 없는 말을 구분하는 게 용이하지만, 정해진 응답 후보로 대답할 수 없는 경우에는 대응할 수 없다는 태생적 한계가 있습니다. 응답 생성 방식의 경우 이론적으로는 모든 문맥에 어울리는 응답을 생성할 수 있는 가능성이 있지만, 생성 모델을 제어해 원하는 응답만 하도록 만들기가 어렵습니다.

역할을 고정한 자유 주제 대화 시스템을 만들 때에도 위 두 가지 방법을 모두 활용할 수 있습니다.

먼저 응답 선택 방식의 경우 시스템의 응답 후보들을 미리 검열해서 정해진 역할을 벗어나지 않는 응답만 응답 후보로 모으는 방식으로 대화 모델의 역할을 고정할 수 있습니다. 하지만 검열한다는 것은 모델의 응답을 제한한다는 것이기 때문에 응답 후보만으로 대답할 수 없는 문맥이 더 많아지게 되고, 여기에 제한된 응답 후보만으로 대답하려고 시도하면서 문맥과 어울리지 않는 부자연스러운 응답을 하게 될 가능성이 높아집니다. 이에 따라 현재 문맥이 대답할 수 있는 문맥인지 아닌지 판단(out-of-distribution detection) 하는 과정이 필요합니다. 이때 HyperCLOVA를 활용할 수 있습니다. HyperCLOVA는 다량의 텍스트 데이터를 학습한 언어 모델이므로 어떤 응답이 현재 문맥에 적합한지를 판단하는 데에 활용할 수 있습니다. 응답 선택 방식으로 찾아온 응답을 현재 문맥 뒤에 이어 붙인 후 HyperCLOVA를 통해 PPL(perplexity)을 측정하고 일정 기준선(threshold)을 넘지 않는 경우에만 응답을 내보내는 방식으로 활용합니다.

PPL을 이용한 응답할 수 없는 문맥 판단 과정
PPL을 이용해 응답할 수 없는 문맥을 판단하는 과정

다음으로 응답 생성 모델을 활용할 수 있습니다. 미리 학습시킨 언어 모델에 특정 도메인이나 타깃 작업의 데이터를 추가해 학습시키면 해당 작업을 위한 특성들을 효과적으로 학습할 수 있다는 것은 널리 알려진 사실인데요. 자유 주제 대화 모델에서도 이와 같은 사실이 확인된 바 있습니다[Roller et al., EACL, 2021]. 따라서 수집한 데이터를 이용해 HyperCLOVA를 추가 학습시키면 시스템의 응답을 쉽게 생성할 수 있습니다. 하지만 이렇게 학습시킨 생성 모델은 정해진 역할을 벗어나는 발화를 생성할 가능성이 남아 있기 때문에 역할을 벗어난 발화를 억제하는 작업이 추가로 필요합니다. 이에 앞서 언급했던 부정적 예시를 활용해 해당 발화들의 생성 가능성을 낮추는 'unlikelihood training'[Li et al., 2020, ACL]을 사용했습니다.

응답 선택 방식과 응답 생성 방식은 각각 장단점이 있기 때문에 둘의 장점만을 모은 형태의 모델도 고려할 수 있습니다. 응답 선택 방식은 수집한 데이터에 존재하는 응답만을 응답 후보로 사용하기 때문에 대화가 의도된 대로 흘러가게 만드는 경향이 있고, 응답 생성 방식은 응답 선택 방식으로 답변할 수 없는 문맥에 대해서도 답변할 수 있는 가능성이 있습니다. 따라서 먼저 응답 선택 방식으로 수집한 데이터의 대화와 비슷한 문맥으로 대답을 시도하고, 답변할 수 없는 경우에만 응답 생성 모델을 활용할 수 있습니다. 이런 방식으로 파이프라인을 구성하면 다음과 같습니다.

모델 파이프라인
모델 파이프라인

모델 성능 비교 및 평가

모델의 오류율 비교
모델의 오류율 비교

앞서 소개한 여러 방식의 성능을 비교 평가해 봤습니다. 우선 HyperCLOVA와 인컨텍스트 러닝 방식으로 대화했을 때 전반적으로 가장 오류율이 높았습니다. HyperCLOVA는 대화 데이터에 특화된 모델이 아니며 역할을 고정하기 어렵기 때문에 이런 결과가 나온 것으로 해석됩니다. 이에 비해 저희가 수집한 데이터를 학습시킨 응답 선택 모델이나 응답 생성 모델의 오류율은 큰 폭으로 낮아진 것을 확인할 수 있습니다. 이는 앞서 설명한 데이터 수집 방법이 역할을 고정한 대화 모델을 만드는 데에 효과적이라는 것을 의미합니다. 둘 중에서는 응답 생성 모델의 성능이 좀 더 좋았고, 응답 선택 모델과 응답 생성 모델을 조합해 구성한 파이프라인이 전반적으로 오류율이 가장 낮았습니다. 이는 응답 생성 모델과 비교해 응답 선택 방법으로 진행한 대화가 비교적 학습 데이터와 유사하게 흘러가는 경향이 있기 때문으로 보입니다.

SSA 평가 결과
SSA 평가 결과

다음으로 대화 모델의 최종 성능을 평가하기 위해 SSA(Sensibleness and Specificity Average)[Adiwardana et al., 2020] 평가를 진행했습니다. 이 평가는 응답이 문맥에 어울리는지를 평가하는 Sensibleness와 응답이 구체적인지를 평가하는 Specificity 점수의 평균으로 대화 모델의 성능을 평가하는 방식입니다. 예를 들어 “네", “그렇군요"와 같은 응답은 문맥상 자연스럽다고 하더라도 어떠한 문맥에서든 사용할 수 있는 응답이기 때문에 구체적이지 않은 응답이라고 할 수 있습니다. 케어콜의 성능 평가 결과 Sensibleness 측면에서는 사람과 비교해 근소하게 낮은 성능을 보였고, Specificity에서는 그 차이가 조금 더 컸습니다. 전반적으로 사람이 대화하는 수준에 근접했다고 평가할 수 있습니다.

결론: 다양한 자유 대화 서비스로

지금까지 말씀드린 것처럼 자유 주제 대화 모델을 서비스화하는 데에는 여러 가지 어려움이 있었습니다. 과거에는 대화 성능이 가장 큰 문제였지만 최근 HyperCLOVA를 비롯한 초대규모 자연어 모델의 등장으로 이 부분은 많이 개선됐는데요. 데이터를 수집하고 대화 시스템의 역할을 고정하는 것은 여전히 어려운 문제였습니다. 이번 글에서 소개한 내용이 이 문제를 해결해 나가는 실마리가 되기를 바랍니다. 연구 결과는 이번 NAACL22 학회에서 정규(regular) 논문으로 발표될 예정입니다. 더 자세한 내용은 논문에서 확인하시기를 바랍니다[Bae et al., 2022]. 저희의 연구 개발 내용이 사람처럼 대화하는 자유 대화 모델의 등장을 앞당겨 앞으로 더욱 다양한 자유 대화 서비스들이 개발되기를 기대합니다.

저희는 앞서 소개한 개발 과정을 통해 클로바 케어콜 서비스를 개발해 출시했습니다. 클로바 케어콜은 HyperCLOVA와 같은 초대규모 언어 모델과 자유 대화 시스템이 우리의 일상 속에 친근하게 자리매김할 수 있다는 기대를 키우고 있습니다. 향후 HyperCLOVA가 생활 속 다양한 어려움을 편리하고 실용적인 방식으로 해결하는 데 도움이 될 수 있도록 노력을 이어나가겠습니다.

케어콜 소개 영상

클로바 케어콜은 사용자의 일상적인 주제의 대화를 통해 건강과 안부를 확인할 수 있으며, 대화에서 긴급/특이사항을 확인하고 대응할 수 있는 솔루션을 제공합니다. 담당자 코멘터리를 통해 더욱 자세한 이야기를 확인해보세요.

※ 홈페이지: https://clova.ai/aicontactcenter

생물학자 최재천 교수 체험기

“마음까지 도닥거려주는 기술을 개발하고 계셔서 감사합니다.”

연극배우 손숙님 체험기

“사람의 외로움을 많이 해소해 줄 수 있을 것 같아요.”

개발/기획 코멘터리 영상

“일상을 돌보는 대화의 기술, 하이퍼클로바가 만들고 있습니다.”