본문 바로가기

디지털 중국

PLATO: 대규모 잠재 변수(Latent Variables) 대화 모델, feat. 바이두

반응형

소요에서 관련 내용 확인하기

바이두가 작년 10월에 발표한 일상 대화 생성(dialogue generation) 사전훈련(pre-training, 번역학습에 도움이 되는 학습을 사전에 진행) 모델 PLATO(Pre-trained Dialogue Generation Model with Discrete Latent Variable) 관련 논문이 최근 ACL(Annual Conference of the Association for Computational Linguistics) 2020에 채택되었습니다. 오늘은 이 논문을 간략하게(?) 정리한 기사 내용을 소개하겠습니다. 


PLATO: 바이두 대규모 잠재 변수(Latent Variables) 대화 모델 최초 발표

PLATO는 세계 최초의 잠재 공간(latent space, 실제 관찰 데이터의 차원을 축소한 공간)을 기반으로 한 End-to-End 사전훈련 모델입니다. 이 모델은 히든 스테이트(hidden-state)를 이용하여 대화 문맥 흐름을 예상함으로써 대화 내용의 풍부함과 자연스러움 방면에서 큰 효과를 거두었다고 합니다. PLATO 모델은 소수의 데이터로도 매우 자연스러운 대화 시스템을 갖출 수 있습니다. 오픈 도메인(open-domain)형 대화 인공지능을 연구개발하여 사람과 자유로운 상호작용을 가능하게 하는 것은 자연어처리 영역의 최고 목표입니다. 하지만 이런 대화 시스템 구축에는 많은 한계가 존재하는데, 그중 가장 어렵지만 또 가장 중요한 두 가지가 있습니다. 하나는 대규모 오픈 소스 멀티 턴 대화(multi-turn conversation, 한 번에 대답할 수 없고 여러 번의 상호작용이 필요한 대화) 데이터가 부족한 점, 다른 하나는 상식 및 전문 지식이 필요하거나 앞뒤 문맥을 살펴야 하는 점입니다. 우리는 보통 대화를 진행할 때 “1대 다(one-to-many)", 즉 한 문장을 말해도 그에 맞는 대답(response)의 경우의 수가 많고 다양하다는 문제를 마주합니다.

예를 들어, 한 사람이 “오늘 너무 추워, 밖에 바람이 매우 세."라고 말한다면 인공지능 봇(Bot)은 다음과 같이 답할 수 있습니다.

A: 맞아, 일기 예보에서 오늘 기온이 10도까지 확 내려간다고 하더라.
B: 눈이 빨리 내리면 좋겠다, 눈사람 만들 수 있잖아.
C: 방금 밖에 나갔다 왔는데, 머리가 바람 때문에 엉망이 됐어.

기본적으로 대화 문맥(Context) 하나에는 서로 다른 대답이 가능합니다. 이렇게 대답은 사람에 따라, 배경 및 환경에 따라 달라지겠지만 따지고 보면 모두 합리적인 대답입니다.

이런 복잡한 1대 다 모델에 대한 신경망(neural network) 피팅(fitting)은 매우 어렵습니다. 1대 다 데이터를 학습할 때, 모델 능력과 데이터 부족으로 인해 최종 학습 효과가 겨우 “하하(哈哈)", “응(嗯)"과 같이 매우 평범하거나 단편적인 “대화 종결어"에 그칠 수 있습니다.

사전훈련 모델은 최근 자연어이해(NLU, Natural Language Understanding) 뿐만 아니라 자연어생성(NLG, Natural Language Generation) 영역에서도 거대한 영향을 끼치고 있습니다. 일상 언어 자료를 통해 사전훈련을 진행하면 특정 도메인 영역에서 소수의 데이터로도 좋은 효과를 거둘 수는 있습니다.

하지만 대화 사전훈련 효과는 위에서 언급한 한계 때문에 아직까진 만족스러운 결과를 얻지 못하는 상황입니다. 이를 해결하기 위해 바이두는 불연속(discrete) 잠재 변수를 기반으로 한 새로운 대화 생성 사전훈련 모델인 “PLATO”를 제시했습니다.

잠재 변수는 VAE(Variational Auto-Encoder, 모델로부터 새로운 데이터를 샘플링하는 기법), CVAE(Conditional Variational Auto-Encoder, 기존 VAE 구조를 지도학습(supervised learning)이 가능하도록 바꾼 기법) 등에서 보편적으로 사용되고 있습니다. 하지만 본 논문에서는 최초로 불연속 잠재 변수를 Transformer 구조와 결합하고 일상 대화 영역에 적용했습니다. 이런 불연속 잠재 변수를 통해 대화 문맥과 대답 간 “1 대 다” 관계에 적합한 모델링이 가능한 것입니다.
동시에 Reddit이나 Twitter 등의 대규모 대화 데이터셋을 이용하여 생성 모델의 사전훈련을 진행했습니다. 이후 (범위) 제한적인 대화 데이터셋에서 파인 튜닝(fine-tuning, 학습된 모델의 weight들을 이용하여 실제 기계번역에 필요한 학습 진행)을 진행하였고 그 결과, 고품질의 대화 생성이 가능했습니다. PLATO 모델은 수다, 배경 지식(background knowledge) 기반 대화, 질의 응답 등 많은 대화 유형을 지원합니다. PLATO 모델을 통해 생성된 최종 결과를 3개의 오픈 소스 대화 데이터셋에서 측정해보니 가장 우수한 성능을 기록했다고 합니다.

모델 소개

PLATO 모델에선 불연속 잠재 변수가 K개의 값(value)을 가지는데, 매 값은 대답의 특정 의도에 해당하는 혹은 다양한 대화 동작(action)으로 이해할 수 있습니다.

PLATO 모델은 훈련 과정에서 대답 생성과 잠재 변수 인식(latent act recognition)이라는 2개의 임무를 동시에 진행하고 업데이트되는 파라미터(parameter)를 공유합니다. 문맥과 불연속 잠재 변수 값(대답의 의도 파악)을 미리 설정한 후 생성 단계에서 목표(target) 대답의 ML(maximum likelihood)을 구합니다.

이와 동시에 인식 단계에서는 문맥과 목표 대답 간 상관 관계에 대한 잠재 변수값을 평가합니다. 물론, 잠재 변수를 정확히 인식하는 것이 대답 생성의 품질의 업그레이드를 위해 필요합니다.

PLATO 모델 신경망 구조는 Figure 2에서와 같이, Transformer Blocks(2017년 구글이 발표한 NMT모델, 단위 정보 각각의 상관관계를 Attention Net 구조로 풀어내면서 정보를 함축)로 구성됩니다. 멀티 턴 대화 입력(input) 표시 방식을 위해, PLATO 모델은 독자적 설계를 이루어냈습니다. 매 토큰(token, 단어 단위)의 입력 임베딩(input embedding)이 관련 토큰, 역할(role), 턴(turn), 위치 임베딩(position embedding)의 합으로 이루어진 것입니다.(Figure3 참고)

대답 생성 과정에서 PLATO 모델은 UniLM(Unified Language Modeling)을 참고하여 유연한 어텐션(attention, 새로 생성되는 토큰을 결정할 때 문맥에 가장 가까운 관계의 토큰을 결정하는 기법) 메커니즘을 사용했습니다. 문맥에 대한 양방향(bi-directional) 디코딩을 진행하여 충분히 문맥 정보를 이해하고 이용합니다. 또한, 대답에 대한 일방향(uni-directional) 디코딩을 통해 대답 생성의 자동회귀(AR, Auto-Regressive, 시간 순서에 따라 이전 값이 현재 값에 영향을 끼치는 정도를 계산하여 weight부여) 모델에 적합한 환경을 제공합니다.

잠재 변수 인식 단계에서 PLATO 모델은 입력으로 특수 부호 [M]을 취하고, 문맥과 목표 대답의 정보를 수집하여 대답 의도(=불연속 잠재 변수값)를 평가합니다.

PLATO 모델 훈련은 3개의 손실 함수(loss function)를 사용합니다.(Figure 2 맨 오른쪽 그림 참고)

1. NLL(negative log-likelihood) loss
2. BOW(bag-of-words) loss
3. RS(response selection) loss

대답 생성 단계에서 흔히 사용하는 NLL loss(실제값과 예측값의 차이를 최소화하는 파라미터값을 찾는 함수)와 함께 PLATO 모델은 불연속 잠재 변수 훈련 속도를 높이기 위해 BOW loss(순서 상관없이 단어 개수 차이를 비교하여 최소화하는 함수)를 도입했습니다. 이외에도 RS loss(대답이 문맥과 관련이 있고 배경 지식과 일치하는지 여부를 구별하여 차이를 최소화하는 함수)는 대답과 문맥의 상관 관계를 판단하는 데 도움을 제공합니다.

PLATO 모델은 대규모 의미(semantics) 사전훈련 모델로부터 파라미터 초기화를 진행하고, 사전훈련을 위해 Twitter와 Reddit 대화 데이터셋을 사용하여 830만 개의 학습 데이터를 얻었습니다. 사전훈련된 PLATO 모델과 코드는 깃헙(Github) 사이트에 업로드되었습니다.

테스트 결과 분석

PLATO 사전훈련 모델의 성능을 검증하기 위해, Persona-Chat, Daily Dialog, DSTC7-AVSD 총 3개의 오픈 소스 대화 데이터셋을 활용해 평가했습니다. Persona-Chat은 전형적인 배경 지식 기반 대화 유형으로 두 사람이 각자의 정보(persona profiles)를 공유하며 서로를 이해하는 것입니다. Daily Dialog는 비교적 일상 대화 유형에 가까운 잡담입니다. DSTC7-AVSD는 대화식 질의 응답으로 동영상 정보(물체, 사건 등)에 근거하여 두 사람이 멀티 턴 대화를 진행합니다.
각 데이터셋에 따른 PLATO 모델 성능은 아래 표를 참고하면 됩니다.

아래는 Persona-Chat상의 테스트 결과로, 잠재 변수를 활용한 PLATO 모델(Index 3.1)이 가장 낮은 perplexity(언어 모델을 평가하기 위한 내부 지표로 불확실성을 나타냄)를 기록했습니다.

PLATO 모델 정성 분석에 대하여 본 논문은 Table 4에서 몇 가지 케이스를 제공하고 있습니다. 문맥을 설정하고, 불연속 잠재 변수값 할당을 거쳐 PLATO 모델이 다양하고도 합리적인 대답을 생성한 것입니다.

결론

본 논문이 제시한 잠재 변수 사전훈련 모델은 End-to-End 방식의 대화 시스템을 가능하게 한 초기 단계입니다. 바이두 자연어처리(NLP) 기술팀 역시 지속적으로 대화 모델을 업데이트하고 있습니다. 또한, “언어를 이해하고, 지능을 갖추며, 세계를 바꾸자"라는 원대한 목표를 가지고 자연어처리 핵심 기술을 연구개발하고 있습니다.

참고 원문: https://baijiahao.baidu.com/s?id=1663917144786332365&wfr=spider&for=pc

728x90
반응형