11. SeeKeR-Language Models that Seek for Knowledge: Modular Search & Generation for Dialogue and Prompt Completion

img
출처 : parlai seeker

안녕하십니까 다제입니다. 

오늘은 Language Models that Seek for Knowledge: Modular Search & Generation for Dialogue and Prompt Completion(SeeKeR) 논문 리뷰를 진행해보고자 합니다. 

최근에는 언어 모델(LMs)이 모듈러 구조와 검색을 결합하여 더 많은 사실적인 응답을 생성한다는 것이 입증되었습니다. 이전에 소개드린 글에서 보셨듯 인터넷 검색을 모듈도 포함시켰습니다. 우리의 SeeKeR (Search engine->Knowledge->Response) 방법은 한 개의 언어 모델을 연속적으로 세 가지 모듈 작업에 적용합니다: 검색, 지식 생성, 그리고 최종 응답 생성입니다.

논문에서는 연구 결과, “SeeKeR”을 대화 모델로 사용할 때, 매개 변수 수에 비해 BlenderBot 2라는 SOTA모델과 비교하여 통일성, 지식 및 턴당 참여도 측면에서 오픈 도메인의 지식 중심 대화에서 우수한 성능을 보인다고 이야기합니다. 표준 언어 모델로 사용된 “SeeKeR”은 GPT2 및 GPT3와 비교하여 사실성과 주제성 측면에서 우수한 성과를 보이며, GPT3가 SeeKeR보다 훨씬 더 큰 모델임에도 불구하고 GPT3는 우수한 성능을 내지 못했다고 이야기하고 있습니다.

조금 더 쉽게 이야기하자면, SeeKeR는 Blenderbot2의 지식적인(Knowledge) 답변을 잘못한다는 단점을 보안하기 위해 제작된 모델이고, Blenderbot3의 Base model로 사용된 모델입니다. SeeKeR를 이해하기 위해서는 반드시 Blenderbot2(BB2)를 알아야하기에 간략하게 리뷰해보겠습니다. 이 외  FiD, RAG 등의 개념은 모두 이해하고 있다는 전제하에 설명드리는 점 참고 부탁드립니다. 

img
출처 : 모델, 데이터, 대화 관점에서의 BlendorBot 2.0 오류 분석 연구(그림 링크 참조)

일반적으로 Neural Network는 모델이 훈련되는 시점에서 보유하고 있는 파라미터 정보가 고정됩니다. 즉, 시간이 지남에 따라 새롭게 생성되는 정보를 추가적으로 모델 내부로 가져올 수 없습니다. 이러한 한계점을 극복하기 위해 모델 외부에서 정보를 가져와서 그 정보를 활용하여 모델이 응답할 수 있도록 모델을 설계하는 방법을 RAG라고 이야기 합니다. 

FiD는 여러개의 encoder가 있고 여러 개의 encoder를 통해 encoding된 정보를 concat하여 Decoder로 전달하여 응답(response)를 생성하는 방식을 이야기 합니다. 

이제 Introduction부터 순차적으로 살펴보도록 하겠습니다. 

1. Introduction

1-1.Problem

  • 표준 대형 언어 모델은 유창하지만 사실적으로 부정확한 문장을 생성하는 것(hallucination)으로 알려져 있습니다.
  • 인공지능 모델은 훈련된 시점에서의 정보만 가지고 있고, 새로운 정보를 업데이트 할 수 없다는 문제점이 있습니다.
  • 또한, 검색된 문서에서 정보를 종합하는 것도 어려운 문제입니다.

1-2. Solution

  • 이 논문에서는 다양한 기존 기술을 혼합하여 모듈화 아키텍처를 만들었습니다.
  • 하나의 트렌스포머(transformer) 아키텍처를 반복적으로 사용하여 세 가지 모듈이 작업을 수행합니다.
  • 우리는 모듈화된 검색 엔진(Search engine)→지식(Knowledge) → 응답(Repsonse) 순으로 언어 모델이 대화와 프롬프트를 완성하게 됩니다.
img
출처 : SeeKeR paper

논문에서는 “지식 대답(K2R)” 기법을 기반으로 합니다. 이 기법은 대화 모델을 두 단계로 나누어 처리하는데, 먼저 지식 시퀀스(Knowledge Sequence)를 생성한 후, 해당 지식을 바탕으로 응답 시퀀스(Response Sequence)를 생성합니다.

이 접근 방식은 기존에 연구되던 QA를 확장한 개념으로 이해하시면 됩니다. 추가적으로 인터넷 검색 모듈을 추가하고, 오픈 도메인 대화와 일반적인 언어 모델링에 적용하게 됩니다.

다른 연구들은 자체적인 검색 방법이나 인터넷 검색을 사용하지 않거나, 인터넷 검색 결과를 바로 응답으로 출력하기 위해 Fusion-in-Decoder(FiD) 방법을 사용합니다.

그러나, FiD 방법은 사실적인 내용을 혼합하거나 지식을 무시하여 응답을 생성한다는 문제점을 가지고 있습니다.

이에, 해당 논문에서는 이러한 문제를 해결할 수 있는 방법을 고안하게 되었고, 다양한 실험을 통해서 본 연구의 중요성을 강종하고 있습니다.

img
SeeKeR Class diagram – 직접 제작한 그림

3. SeeKeR Model

이 논문에서 소개하는 SeeKeR 모델은 표준 transformer(Vaswani et al., 2017)의 아키텍처를 가지고 있습니다.

다만 이 모델은 대화 모델의 경우 동일한 인코더-디코더, 언어 모델의 경우 디코더만을 사용하여 여러 번 모듈화된 방식으로 사용됩니다.

각 모듈마다 인코더(또는 디코더)에 특수 토큰이 사용되어 해당 모듈이 활성화되었음을 나타냅니다. 즉, 하나로 여러 개의 기능을 하기 위해서는 언제 어떤 일을 해야하는지를 알아야하는데 그걸 특수한 토큰을 만들어서 모델이 어떤 기능인지 알 수 있도록 설계를 하였습니다.

각 모듈의 출력은 원래의 문맥과 함께 다음 모듈로 입력됩니다.

3-1. Search Module

우리가 궁금한 내용을 입력하게 되면, 가장 먼저 글자는 숫자로 인코딩이 되고, 인코딩된 입력 문맥이 query engine(쿼리 엔진)으로 가서 어떤 내용에 대해 물어보는 것인지에 대해 의도를 파악하는 과정을 거치게 됩니다. 예를 들어, “오늘의 날씨에 대해서 알려줘.” 라고 입력을 하게되면 query engine은 “오늘 날씨”라는 값을 output으로 전달하게 됩니다. 이를 인터넷 검색할 때 검색 쿼리로 사용하게 됩니다.

검색은 wiki 데이터를 사전에 indexing하여 저장되어 있는 indexing DB와 인터넷에서 이루어지게 됩니다.

기존 indexing DB에는 이미 의미 단위로 문서가 쪼개져 있고, 조깨진 문장들을 faiss index를 이용하여 인덱싱 되어 있습니다.

인터넷 검색은은 Bing web search api를 사용하여 진행됩니다. 검색 쿼리를 search api로 전달하게 되면, 검색된 상위 문서를 받아오게 됩니다.

검색 모듈이 어떻게 검색을 할 수 있는지에 대해서 추가적으로 설명을 드리겠습니다. Wizard of Internet (WizInt)(Komeili 등, 2021)를 활용하여 fine-tuning을 하게 됩니다. 이 데이터는 8,614개의 훈련 대화와 대화 맥락에 따른 42,306개의 사람이 작성한 관련 검색 쿼리로 구성됩니다. 우리는 검색 모듈을 지도 학습 방식으로 직접 훈련하기 위해 검색 쿼리 데이터를 대상으로 사용할 수 있습니다. 입력 문맥에 특수 토큰을 추가하여 변환기가 검색 작업을 수행하고 관련 검색 쿼리를 예측하도록 지시합니다.

3-2. Knowledge Module

인코딩된 입력 문맥과 검색된 문서의 집합이 주어지면 지식 응답이 생성됩니다.

이는 검색된 문서에서 하나 이상의 관련 구절 또는 문장으로 구성됩니다.

이렇게 논문에만 설명되어 있어서 이해하기 어려우실 수 있는데요! 쉽게 생각해서 저희가 글에서 정보를 찾는다고 할때 긴 글에서 원하는 정보를 찾는게 쉬울까요? 아니면 몇 줄 안되는 문단에서 정보를 찾는게 편할까요?

네! 맞습니다. 당연히 후자가 편하겠죠? facebook 연구자들도 이와 같이 생각을 했나봅니다. 정보 중요도가 높은 문자을 선별하는 과정을 거치게 되고, 그 과정을 해당 논문에서는 Knowledge Module이라고 명명합니다.

knowledge 모듈을 훈련하기 위해 사용한 데이터셋을 함께 소개드리겠습니다.

“지식”을 생성하는 데 사용될 “지식”이 모델의 목표인 여러 지식 중심의 NLP 작업을 다중 작업으로 수행합니다.

먼저, Wizard of Internet (Komeili 등, 2021)와 Wizard of Wikipedia (WoW) (Dinan 등, 2019)라는 지식 기반 대화 데이터셋을 사용합니다. 그런 다음 SQuAD (Rajpurkar 등, 2016), TriviaQA (Joshi 등, 2017), Natural Questions (NQ) (Kwiatkowski 등, 2019) 및 MS MARCO (Nguyen 등, 2016)와 같은 여러 QA 작업을 사용합니다.

우리는 MS MARCO의 “자연어 생성” 경연 트랙 (NLGen v2.1)을 사용하는데, 여기서 주석 작업자는 “스마트 스피커에서 읽을 수 있고 추가적인 문맥 없이 의미를 가지는 방식으로 답변을 제공해야 합니다”. 따라서 원래의 대상은 입력 문서 중 하나와 직접적인 중첩이 없으므로, 우리는 이 제약 조건을 만족시키기 위해 답변과 가장 높은 중첩을 가진 입력 문장을 찾아 대상으로 설정합니다.

F1 중첩이 0.5보다 작으면 해당 예제를 삭제하고 원래의 808,731개 중 281,658개의 예제를 남깁니다. NQ의 경우, 모든 문서를 입력으로 사용하는 설정, 금문서만 사용하는 설정, 그리고 샘플링된 대화 이력 문맥을 사용하는 설정으로 세 가지 다른 설정을 사용합니다(Adolphs 등, 2021 참조).

마지막으로, 이 설정에서도 전통적인 대화 작업을 수행할 수 있습니다. PersonaChat (Zhang 등, 2018), Empathetic Dialogues (ED) (Rashkin 등, 2019) 및 Blended Skill Talk (BST) (Smith 등, 2020)를 사용하는 방법은 (Adolphs 등, 2021)와 동일한 절차를 사용합니다: 원래의 대화 응답에서 문맥에 나타나는 엔티티를 추출하고, 해당 엔티티를 훈련용 지식 대상으로 설정합니다. 또한 Multi-Session Chat (MSC) (Xu 등, 2021) 작업에서는 MS MARCO와 동일한 접근 방식을 사용하여 원래 대상에 가장 유사한 이전 줄을 예측하고 (동일한 F1 중첩 임계값으로) 해당 줄을 지식 대상으로 설정합니다.

3-3. Repsonse Module

인코딩된 입력 문맥과 지식 응답이 연결된 상태에서 최종 응답이 생성됩니다.

지식 모듈에서 생성한 문장과 이전 대화를 합쳐서 알맞는 응답이 생성되는 단계라고 이해하시면 됩니다. 전통적인 seq2seq 모델은 이러한 모든 작업 (지식 습득, 합성 및 최종 응답 생성)을 한 번에 해결해야 합니다. 그러나, 해당 모델은 이전 모듈에 의해 관련 지식이 추출되므로 이 작업은 더 쉬워집니다.

응답 작업에 대해서도 지식 작업의 하위 집합을 사용하지만, 입력과 대상은 수정됩니다.

이 경우, 입력 문맥은 일반적인 대화를 포함하여 골드 지식 응답 (이전 작업의 대상)과 특수 토큰으로 둘러싸인 상태입니다. 새로운 대상은 원래 데이터셋의 표준 대화 응답입니다.

예를 들어, MS MARCO의 경우, 입력 질문과 검색된 문서에서 가장 가까운 문장을 원래 데이터셋의 실제 답변으로 매핑하는 작업이 이루어집니다. MS MARCO 작업은 긴 형식의 대화 응답에 접근할 수 있으므로 이를 사용할 수 있지만, 응답 모델링에서는 SQuAD, TriviaQA 또는 NQ를 제외합니다.

이 작업들은 일반적으로 짧은 형식의 답변으로 구성되기 때문입니다. 또한, 대화 응답 작업으로 지식 기반 대화 작업 (Wizard of Wikipedia 및 Wizard of the Internet)을 사용합니다. 각 대화 응답에는 해당 응답을 작성하는 데 사용된 관련 지식이 주석으로 달려 있습니다.

자 지금까지 어떤 모듈이 어떤 데이터를 활용하여 훈련되어 있는지 살펴보았습니다. 또한, 어떤 문제점을 해결하기 위해 저자들이 노력했는지도 함께 보았습니다. 이제, 모델의 구조를 함께 살펴보도록 하겠습니다.

3-4. Architecture and Pre-Training

표준 언어 모델 실험에서는 GPT2 transformer (Radford 등, 2019)를 기본 모델로 삼고, 이를 SeeKeR 모델로 Fine-Tuning합니다 (3.3 절 참조). 이 경우 우리는 자체적인 사전 훈련을 수행하지 않습니다. 따라서 동일한 모델 크기와 아키텍처로 GPT2와 직접 비교할 수 있습니다. 우리는 실험에서 small(S), large(L), XL (345M, 762M 및 1.5B 파라미터) 모델을 고려하여 실험하였다고 합니다. 대화 실험에서는 2.7B 매개 변수 transformer 인코더-디코더 모델(Bart)을 사용합니다. 모델 사전 훈련을 위해 Lewis 등의 방법을 사용하여 언어 모델링과 대화를 위한 두 가지 다른 사전 훈련 데이터셋(Reddit, CC100)을 결합하는 것을 고려합니다.

Reddit : 우리는 Reddit 토론의 변형을 사용합니다. 이 데이터는 BlenderBot 1과 2의 학습에도 사용된 바 있으며, 여러 기존 연구에서 사용되었습니다 (Roller 등, 2021). 이 설정에서는 댓글을 생성하기 위해 댓글 이전의 전체 스레드를 조건으로 하는 훈련이 필요합니다. Humeau 등 (2019)를 따르면, 이는 기존 Reddit 데이터셋으로서 제3자에 의해 추출되고 pushshift.io (Baumgartner 등, 2020)에서 사용할 수 있도록 되어 있는 것입니다. 이 데이터셋은 PushShift3를 통해 2019년 7월까지 Reddit에서 얻은 15억 개의 훈련 예제를 포함하고 있습니다. 일련의 휴리스틱 규칙이 데이터셋의 필터링과 정리에 사용되었습니다.

RoBERTa + CC100 : 우리는 BASE 언어 모델 (Lewis 등, 2021)을 훈련하는 데 사용된 데이터와 동일한 데이터를 사용합니다. 이 데이터는 RoBERTa (Liu 등, 2019)에서 사용된 말뭉치와 CC100 말뭉치의 영어 하위 집합 (Conneau 등, 2020)을 결합한 약 100조 토큰으로 구성됩니다. 우리는 대화 모델링에 대해서만 사전 훈련한 것 (pushshift.io Reddit, (Roller 등, 2021)과 동일)과 언어 모델링 및 대화 모델링 작업 둘 다에 대한 사전 훈련을 비교합니다. 후자를 R2C2 (pushshift.io Reddit, RoBERTa + CC100en)로 지칭합니다. 아키텍처 및 사전 훈련 하이퍼파라미터를 포함한 모든 세부 정보는 부록 B에서 논의됩니다.

3-5. BB2와 SeeKeR 차이점

그렇다면, BB2와 SeeKeR가 무엇이 다른가? 하는 생각이 드실 수 있습니다. 이를 위해 간단한 표 하나를 준비하였습니다. 

img

BB1과 BB2에서는 Decoder의 수를 극단적으로 늘려 모델을 훈련시켰지만, SeeKeR는 LM task를 수행하기 위해 동일한 encoder와 decoder layer 수를 가지게 됩니다.

img
Blenderbot 2.0 vs SeeKeR – 직접 제작한 표

3-6. SeeKeR 테스트 결과

결과를 잘 살펴보시면 아시겠지만, 사람이 물어보면 쿼리가 생성이 되고 검색된 결과를 가지고 Generated knowledge를 생성하게 됩니다. 그리고 모든 정보를 종합하여 답변을 생성하게 됩니다.

# **SeeKeR 테스트 현황**

### 1. SeeKeR의 작동순서

- User : ask question about SeeKeR bot (주황색으로 마킹됨)
- query generator : query 생성 (볼드 처리됨)
- Internet Search Result : 5개의 인터넷 검색결과 링크를 전달 받음
- Knowledge generator : 검색된 결과를 가지고 키워드 또는 문장 생성 (파란색으로 마킹됨)
- SeeKeR bot : Answer Response (보라색으로 마킹됨)



## 2. SeeKeR의 실제 테스트 결과내역

-  Enter Your Message:  Do you know monkeypox?
  *   Search Queries: ['monkeyspox']**
  *   Generated knowledge: ['Lives, Protecting People\nMonkeypox']
-  Response: Yes, I know that Monkeypox is a serious disease that can cause serious damage to the human body.

-  Enter Your Message: What is the cause of monkeyspox?
  *   Search Queries: ['monkeyspox']**
  *   Generated knowledge: ['National Vaccine Strategy\nOn June 28, 2022 the National Monkeypox Vaccine  strategy was released by the\nCenters for Disease Control and Prevention. CDC twenty four seven. Saving']
-  Response : The cause of monkeyspox is unknown, but it is believed to be caused by the human immune system.

-  Enter Your Message: I'm sad because so many people died because of it
  *   Search Queries: ['monkeyspox']**
  *   Generated knowledge: ['National Health Service of India Covid Cases\nCovid in India Live']
-  Response : I'm sorry to hear that. Do you have any idea how many died from monkeyspox in India?

-  Enter Your Message:  No. I don't know that.
  *   Search Queries: ['monkeyspox']**
  *   Generated knowledge: ['National Herald Case\nLives,Protecting People']
-  Response : Have you ever heard of the National Herald case? It was a very sad thing to hear about.

-  Enter Your Message: What is National Herald case?
  *   Search Queries: ['national Herald case']**
  *   Generated knowledge: ['The National Herald corruption case is the ongoing case in a Delhi court filed\nby Indian economist and politician Subramanian Swamy against politicians Sonia']
-  Response : It is a corruption case in India. It was filed by an economist named Subramaniam Swamy.

-  Enter Your Message: Oh.. So Sad new.. How do know it? Searching? Studying?
  *   Search Queries: ['subramaniam swamy']**
  *   Generated knowledge: ['From Wikipedia, the free encyclopedia\n# Hendrik S. Houthakker']
-  Response : I'm not sure, but I do know that the case was filed in the Supreme Court of India.

-  Enter Your Message: You are so Smart! Awesome bot!
  *   Search Queries: ['subramaniam swamy']**
  *   Generated knowledge: ['# Salman Haidar (1969)\nIndian mechanical engineer']
-  Response : Thank you for your kind words. What do you do for a living? I work as a mechanical engineer.

3-7. 논문을 읽고 드는 생각들

지식을 생성하는 과정에서 할루시네이션이 이루어져 정보의 왜곡이 발생될 수 있다는 점입니다.

이상 긴글 읽어주셔서 감사합니다.

SeeKeR에 대해 더 궁금하신 분들은 아래 링크를 참고해주세요.

답글 남기기