ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [논문리뷰보다는 해석에 가까운] Beyond Goldfish Memory: Long-Term Open-Domain Conversation
    Deep Learning 2021. 8. 11. 20:54
    728x90
    반응형

     

    15-Jul-2021

    https://arxiv.org/pdf/2107.07567.pdf

     

    Abstract

     

    현재까지의 open domain dialog model들은 2~15 turn, 128 token으로 구성된 짧은 대화와 하나의 대화 세션으로만 이루어진 문맥으로만 훈련되고 평가되었다 (Meena, Blenderbot 1.0)

    본 연구에서는 여러 session으로 이루어진 대화들로 구성된 human-human dataset과 

    해당 dataset은 지난 대화에서 알게 된 내용을 가지고 discussion하고 서로의 관심사를 알아나가는 대화

    연구 결과 이전 모델들은 길게 session을 가져가는 대화에서 성능이 굉장히 안 좋은 것으로 확인 되었다.

    대화에서 장기 기억을 가져가는 것은 사용자의 관심을 포착함으로써 재방문한 사용자가 계속해서 대화에 참여할 수 있도록 한다. 모델이 장기 기억을 가지도록 훈련하기 위해서는 현존하는 encoder-decoder 구조로는 충분하지 않다는 것을 발견했다.

     

    Dataset

     

    해당 연구는 Multi-session Chat(MSC)라 명명한 데이터셋을 새로 구축하여 진행되었다. 이 데이터셋은 문자 대화와 같이 두 명의 화자가 온라인에서 여러 세션에 걸쳐 나눈 대화로 구성되어있다. 각 대화 세션은 그렇게 길지않으나 몇 시간에서 몇 일이 지난 후 이전에 나눴던 대화를 주제로 새로운 대화 세션이 시작된다. 

     

    * 데이터셋 구축에 참여한 crowdworker에게는 페르소나가 주어졌으며, training set과 validation/test set에 다른 페르소나가 사용되도록 했다.

    *대화 세션은 5번 이상, 각 세션은 최대 14번의 발화로 이루어져 있다.

    * 각 대화 세션 사이에는 몇 시간에서 몇 일의 시간 텀이 주어짐

    * 이전의 대화 세션은 이후 대화에서 참고하면 좋을 만한 개인에 대한 포인트들의 요약본으로 annotate된다.

    * 다음 대화 세션에서는 이전 세션에서 공유했던 서로의 흥미에 대해 더 깊은 대화를 하거나 이미 대화를 나눴던 주제와 관련된 새로운 정보에 대해 이야기를 나눈다.

     

    기존 open datatset들과의 비교

    * 첫 번째 대화 세션에서는 'PersonaChat dataset'을 사용하여 대화에 참여한 2인이 서로에 대해 피상적으로 알아간다.

    * 이전 세션의 대화 내용을 요약하여 다음 세션 대화 참가자들이 해당 요약을 읽고 일관된 페르소나로 다음 대화 세션에 참여할 수 있도록 했다. 

     

    Architecture

    Encoder-Decoder

     Blenderbot 1.0(BST 2.7B)을 MSC 데이터셋으로 전체 network를 fine-tuning 시켰다. 다만 Blenderbot 1.0을 128 token의 sequence로 훈련되었기 때문에 sequence 길이를 256, 512, 1024로 늘려 파라미터가 추가되었다. 이전의 128 token에 대한 positional embedding이 변경되지 않도록 positional embedding layer를 추가했다.

     

    Retrieval-Augmentation

     Retrieval-augmentation 기법은 transformer 모델이 장기기억을 가질 수 있게 하는 좋은 방법이다. 해당 연구에서 retrieval-augmentation은 디코더를 통해 attention값이 계산되는 final encoding 단계에서 포함되어야하는 문맥의 적절한 부분을 찾기 위해 사용되었다.

     

    RAG (Retrieval-Augmented Generation)

    RAG는 2020년 발표된 Lewis의 논문에서 활용된 기술이다. 검색될 문서나 구절(passages)이 가장 가까운 FAISS 인덱스에 저장되고 DPR(Dense Passage Retrieval) 트렌스포머 bi-encoder 모델이 document-context pair를 점수화하여 찾고자 하는 문서와 가장 가까운 순서대로 순위를 매긴다 (여기서 DPR모델은 QA(Question Answer) data pair로 pretrain된 모델이다). DPR모델은 FAISS 인덱스를 통해 문서를 검색하는 부분과 N개의 후보에 대해 점수를 매기는데 모두 사용된다.  

     

    여기서 FAISS는 Facebook에서 만든 빠르고 효율적으로 코사인 유사도를 구해주는 라이브러리이다 (Billion-scale similarity search with gpus - Johnson 2019. 참고). DPR 모델 역시 Facebook에서 발표한 Dense Passage Retrieval for Open-Domain Question Answering (Karpukhin et al, 2020)에서 제안한 모델로 문맥의 semantic한 표현을 인코딩하여 dense latent vector로 표현함으로써 형태적으로(lexical) 다른 문서도 의미의 유사성이 있다면 잘 매칭하는 특징을 가지고 있다.

     

    FiD(Fusion in Decoder) and FiD-RAG

    FiD 구조에서는 pretrained retriever를 통해 하기 과정을 수행한다.

    * 상위 N개의 문서 각각 context에  추가

    * 인코더에서 context를 각각 인코딩

    * 마지막 단계에서 모든 context를  concat

    * 디코더에서는 이 context에 attention을 수행하여 최종 response를 생성한다.

     

    여기서 pretrained retriever는 표준 DPR (standard pre-trained DPR) 또는 FiD-RAG라 명명된 RAG trained retriever이다.

    (Retrieval augmentation reduces hallucination in conversation, Shuster et al., 2021 참고)

     

    Retriever and Documents

    해당 연구에서 사용된 메모리에 있는 구절 set이 FAISS 인덱스를 사용할 만큼 크지 않음. 하지만 검색이 유용할 만큼은 크기 때문에DPR 모델을 통해 인코딩 한 벡터를 메모리의 각 item에 저장함 (FAISS에서는 이 dense vector가 근사치임)

    그 다음 주어진 대화 context에서 bi encoder를 통해 각 메모리에 점수를 매기고 상위 N개를 response generation을 위해 사용한다. N은 3개, 5개, 6개를 시도했으며 validation set에서 가장 성능이 좋았던 숫자를 최종적으로 사용했다.

    여기서 메모리는 이전 대화 내역으로부터 추출된 문장들로 이루어져 있으며 chunk(passage)사이즈는 하이퍼파라미터이고, 각 문장을 별도의 document로 인코딩하는 방법과 전체 세션을 한 document로 인코딩하는 방법을 시도했을 때 후자가 더 성능이 좋은 것을 확인해서 최종 방법으로 선정했다. 

     

    Summarization Memory-Augmentation

    앞서 설명한대로 Retrieval-augmentation 모델은 지난 대화들에서 검색을 하는 용도로 사용된다.

    기존 여타 연구에 사용되었던 단순히 과거 맥락을 raw 형태 그대로 메모리에 저장하는 방법은 저장할 context양이 너무 많아지고  모델이 해당 context를 최종 response를 생성하기 위해 사용하려면 많은 작업들이 수행되어야하기 때문에 본 연구에서는 먼저 필요한 지식을 요약한 것만 저장하는 memory augmentation방법을 사용했다.

     

    * Encoder-decoder구조로 이루어져있는 요약기는 대화 기록을 입력으로 받는다. 해당 모델의 목표는 지난 대화 기록에 포함된 새로운 관련 정보들을 요약하여 장기 기억소에 저장하는 것이다.

    This includes the case of deciding that no new information should be stored in the memory. When found, the summarized knowledge is added to the long-term memory. (무슨 말인지 모르겠음..)

    이 모델은 어떤 요약본을 생성해야하는지 학습하기 위해 사람이 annotate한 MSC 데이터를 사용한다.

     

    * Memory-augmented generator(Retriever and documents에서 언급한 모델)는 dialogue context(요약본)를 입력받고 장기 기억 저장소에 접속하여 적절한 다음 문장을 생성한다.

     

    Experiments

    Table3의 마지막 column은 각 Truncation length에 따라 Session4에 input될 때 잘리는 response의 비율을 나타냄 

    context의 길이가 길 수록, 그리고 이전 대화 통합 시 summary context가 제공되었을 때 성능의 향상이 뚜렷하게 나타났다.

    외에도 Train dataset의 세션 수를 다양하게 해 보는 실험을 했으나 큰 차이가 없는 것으로 확인함.

    해당 표는 Summary model과 Memory-augmented model을 시험해본 결과이다.

    시험 결과 세 개의 retrieval model 모두 장기적으로 기억을 가져가는 데 도움이 된다는 것을 확인했다.

     

    Human Evaluation

    Validation set으로부터 두 개의 페르소나가 랜덤으로 주어지고 둘 중 하나를 crowdworker가 맡아서 대화를 진행함. 이전 4개 세션에 대한 요약을 통해 5번째 세션의 대화를 진행하며, 각 대화의 turn마다 crowdworker는 받은 message에 대한 평가를 진행하고, 대화가 끝나면 전체적인 평가를 진행했다.

     

    MSC 데이터셋으로 훈련된 모델이 전체적으로 Blenderbot1.0 (BST 2.7B)보다 성능이 좋은 것을 확인했다.

    또한, summarization memory model (RAG, FiD, FiD-RAG)이 dialog history가 제공된 모델 (MSC 2.7B)보다 성능이 우수했다.

    728x90
    반응형

    댓글