본문 바로가기
NLP

[TDS] Alternating Recurrent Dialog Model with Large-scale Pre-trained Language Models (ARDM) 논문에 대한 이해

by 방구석 몽상가 2021. 9. 3.
ARDM

이 글은 Alternating Recurrent Dialog Model with Large-scale Pre-trained Language Models (ARDM)의 방법론 이해를 위한 글이다. 이 논문은 2019년에 공개됐지만 EACL 2021에 게재되었다.

Abstract

존재하는 dialog system 모델들은 extensive human annotations을 요구하고 다른 tasks에 일반화하는 것이 어렵다. 이 논문에서는 simple, general, and effective framework: Alternating Recurrent Dialog Model (ARDM)을 제안한다. ARDM은 각 speaker를 따로 모델링하고 large pre-trained LM의 이점을 취한다. 이는 효과적인 대화를 성취하기 위해 belief states 또는 dialog acts와 같은 human annotations으로부터의 supervision을 요구하지 않는다. 또한, ARDM은 설득과 같은 더 challenging하고 non-collaborative tasks에도 일반화할 수 있다.

문서를 다루는 것과 달리, 대화는 두 명의 화자가 다른 역할을 수행한다. 그러므로 화자들에 대한 LM 분포는 서로 다르다. 이를 해결하기 위해, 교대로(in alternating order) 다른 화자의 utterances을 인코딩하고 디코딩하는 대화 모델인 ARDM을 제안한다.

Alternating Recurrent Dialog Model (ARDM)

ARDM은 memory recurrence를 통해 user와 system utterance 분포를 교대로 학습하는 별도의 두 pre-trained LM으로 구성된다.

Recurrent Modeling for User and System

해당 논문은 user와 system utterance 분포 둘 다 recurrent하게 모델링하는 것을 목적으로 한다.

user 와 system 사이의 멀티 턴 대화 의 utterances에 대한 확률 분포는 각각에 대한 두 개의 언어 모델 , 로 분해된다. 그 다음 대화 모델 는 다음과 같이 정의된다.

는 이전 context가 주어지면 다음 token을 예측하는 표준 언어 모델이다. 개의 tokens 로 이루어진 utterance 또는 에 대해, 한 utterance의 joint probability는 다음과 같다.

최종적으로, 에 대한 likelihood를 최대화함으로써 대화 모델을 훈련시킨다. 그러나 multi-turn 대화 분포를 효과적으로 모델링하기 위해 history를 encoding하는 memory mechanism이 필요하다.

Memory Recurrence

모델에 대화 history를 기억하는 능력을 부여하기 위해 memory mechanism을 적용한다. Turn 의 utterance에 대해 를 얻기 위해 memory 에 저장된 hidden states 를 재사용한다. 그런 뒤 를 memory 에 다시 저장한다. Pre-trained Transformer LM에 관해, query/key/value features 가 주어지면 self-attention 을 사용하는 memory mechanism을 구현한다.

단순화를 위해 Transformer 내 1개의 layer만 있다고 가정하자. 는 time 의 utterance 내 input tokens에 대한 개의 vectors로 구성된 hidden states다. 에 대한 recurrence relation은 과 현재 utterance로부터 를 계산함으로써 정의된다. 실제론, history 정보를 재계산하는 걸 피하기 위해 대신에 으로써 를 재사용한다. 최종적인 는 다음과 같이 계산된다.

를 최대화하기 위해 LM cross entropy loss를 계산하도록 를 각 token의 확률을 얻는데 사용한다.

Experiments

Training details

모델로 117M 파라미터의 GPT-2 small (12 heads, 768 hidden size, 12 layers)을 사용한다. Tokenize는 50257 size의 BPE를 사용했다. 모델이 dialog response generation을 zero-shot 할 수 있도록 "trigger"로써 user role token "A:" or "B:" 접두사를 붙이고 접미사 "\n\n\n"를 붙여 GPT-2의 특별한 포맷을 따라간다. ARDM은 AdamW optimizer를 적용하여 특정 task 데이터셋에 fine-tune 된다.

Decoding details

Down-stream dialog tasks를 위한 decoding은 nucleus sampling을 채택한다. Evaluation과 real-world use case 두 상황을 조절하기 위해 두 개의 decoding modes가 있다. Evaluation mode에선 생성된 dialog responses의 퀄리티를 conversion flow 상관 없이 평가할 수 있도록 utterance를 생성하기 위해 turn 전 모든 과거 ground truth history를 feed 한다. 반면 real-world use case에선 ground truth history가 없으므로 이전에 생성된 responses의 memory를 사용한다. 또한, 모델이 사람이나 다른 봇과 차례로 동적으로 상호 작용하도록 한다. Dialogs는 각기 다른 길이를 가지기 때문에 ARDM은 전통적인 배치 패딩 방법을 사용해선 응답을 효율적으로 디코딩하기 어렵다. 해결책으로써, batch 단위로 fast decoding를 support하기 위해 dynamic dialog filtering 알고리즘을 개발한다. 이 방법은 생성 속도를 8배 더 빠르게 한다.

Belief Tracking

DB state은 DB query 결과를 의미한다. 예를 들어, DB에 "cheap french restaurant" 제약을 만족시키는 결과가 없으면 "0"과 도메인 "restaurant"를 반환한다. 그런 다음, 시스템은 "There is no such restaurant"를 생성하도록 DB state을 조건화할 수 있다. 이 논문에서는 다른 dialog tasks와의 호환을 위해 belief tracking을 통합하지 않는다. "A copy-augmented sequence-to-sequence architecture gives good performance on task-oriented dialogue" 논문에 따르면, user utterance는 이미 시스템 응답을 생성하기 위한 belief state 정보를 포함하고 있기에 모델에 belief state를 명확하게 입력해줄 필요가 없다. 그러나 DB search를 위해 annotated 데이터 조금을 사용해서 분리된 belief tracker를 훈련시킨다. 이건 실세계 문제에서 흔한 경우다.

CamRest 결과

ModelBLEU-4 (GT / Gen)Succ F1 (GT / Gen)
Sequicity (w RL)21.4 / 21.40.852 / 0.853
GPT-2-finetune21.8 / 19.20.851 / 0.862
ARDM (50% data)25.9 / 23.40.859 / 0.851
ARDM26.2 / 25.40.864 / 0.862

DB search 결과로 domain slot과 matched items 수를 사용한다. GT는 ground truth belief state를 사용하여 응답 생성 퀄리티를 평가한 것이고 Gen은 생성된 belief state를 통해 응답을 생성한 것이다. GPT-2-finetune 결과와 비교함으로써, recurrent modeling 없이 모델은 두 화자의 언어 분포를 혼합하고 역할 차이를 무시한 경우와의 차이를 확인할 수 있다. 확실히 BLEU score가 월등히 높아진 걸 보아 화자 간의 언어 분포를 구분하는게 의미 있는 것 같다.

Semantically Conditioned Dialog Response Generation via Hierarchical Disentangled Self-Attention 논문을 보면 lexicalization 수행 여부에 따른 BLEU score를 따로 기재하고 있다. 근데 BLEU score 수치 정도를 보아하니 아마 delexicalization 된 채로 측정된 것 같다.

MultiWOZ 결과

ModelCombinedInform (%)Success (%)BLEU-4
Human-98.996.5-
HDSA104.1587.773.423.6
ARDM100.787.472.820.6

HDSA의 경우, dialog state와 dialog act의 supervision을 이용했지만 ARDM은 이용하지 않았다. 그래서 정확도가 상대적으로 크게 높은 듯하다. Combined score는 필자가 따로 계산하여 적은 것이다. MultiWOZ에서 역시 delexicalization 된 채로 측정된 것 같다. 참고로, SimpleTOD에서 GPT2를 가지고 측정한 결과는 [Inform 88 / Success 61.7 / BLEU 15.9] 이다.

Error 분석

MultiWOZ 데이터셋에서 inform / success score가 0인 30개의 생성된 error responses를 랜덤하게 선택했다. Errors의 63.3%는 거의 실수가 아니었는데 이건 주로 automatic evaluator의 한계 때문이다. 예를 들어, 유저가 식당에 대해 물었을 때 GT 시스템 응답은 "the [restaurant _name] is located at ..." 이지만 생성된 시스템 응답은 "what food preference do you have?" 인 경우다. 식당을 추천하기 전에 식당 선택을 좁히기 위해 대화 문맥에 맞게 응답했다. 그러나 evaluator는 유일하게 가능한 응답을 통해 엄격하게 평가한다.

또 다른 20% errors는 유저가 이미 제공한 정보를 시스템이 요청할 경우다. 이 유형은 더 좋은 history representation을 필요로 한다. 또 다른 10% errors는 정보에 대한 유저의 request을 무시하기 때문이다. 마지막으로 6.7% errors는 부정확한 dialog domain 이해에 대한 것이다. 예로, user가 hotel에 대해 요청하고 있는데 식당을 추천하는 경우다. 이건 몇 domain labels이 잘못되어 delexicalization 과정 동안의 data noise 때문이다.

댓글