Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Archives
Today
Total
관리 메뉴

꾸스코딩

[논문리뷰] SymKGQA: Few-Shot Knowledge Graph Question Answering via Symbolic Program Generation and Execution, ACL'24 본문

논문리뷰

[논문리뷰] SymKGQA: Few-Shot Knowledge Graph Question Answering via Symbolic Program Generation and Execution, ACL'24

꾸스코딩 2025. 2. 9. 00:56

처음 인사드립니다:)

앞으로 일주일에 1~2편정도 NLP 분야 논문을 정리해서 소개해드릴까 합니다! 

아마 주분야는 제 연구 분야인 지식그래프를 활용하는 question answering 분야가 될 듯 합니다. 

그 외에도 다양한 분야들을 가져오도록 해보겠습니다.

 

그럼 오늘 처음으로 소개해드릴 논문은 " SymKGQA: Few-Shot Knowledge Graph Question Answering via Symbolic Program Generation and Execution"이라는 논문으로 ACL 2024에 억셉된 논문입니다.

 

https://aclanthology.org/2024.acl-long.545/

 

SymKGQA: Few-Shot Knowledge Graph Question Answering via Symbolic Program Generation and Execution

Prerna Agarwal, Nishant Kumar, Srikanta Bedathur. Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2024.

aclanthology.org

 

우선, 본격적인 논문 리뷰에 앞서 제목을 통해 한 번 내용을 유추해보도록 하겠습니다!

SymKGQA: Few-Shot Knowledge Graph Question Answering via Symbolic Program Generation and Execution 제목을 분석해보면 이렇게 3가지 포인트로 나누어볼 수 있을 것 같은데요.

 

Few-Shot

아마 LLM관련 논문들을 꽤 읽으신 분들이라면 익숙한 용어가 아닐까 생각이 듭니다. 

"Few-Shot"이라는 용어가 LLM에서 처음 사용되지는 않았지만, 해당 LLM을 활용하기 때문에 다양한 예시를 프롬프트로 제공하는 프롬프팅 기법을 이야기합니다.

 

 Knowledge Graph Question Answering

해당 용어는 앞으로 제가 소개해드릴 논문에서 아마 자주 등장할 키워드입니다 .

지식 그래프라는 것을 기반으로 질의 응답을 하는 task입니다. 

아마 많은 분들이 "지식 그래프"라는 것부터 낯설 것으로 예상되는데요. 

간단하게 말하자면, 지식그래프는 지식을 말 그대로 그래프화 시킨 것입니다.

예를 들어, "영희는 철수의 여동생이다."라는 자연어 문장이   지식그래프로 표현된다면 "영희--{남매}--철수"가 될 수 있습니다.

그리고 이렇게 구성된 지식 그래프를 기반으로 질문에대한 답변을  찾는 것이죠.

 

Symbolic Program Generation and Execution

이 용어로 예상할 수 있는 것은 symbolic하게 porgram을 생성하고 실행한다는 것을 파악할 수 있습니다.

그렇다면, 논문을 읽으면서 어떤게 symbolic하다는 것을 의미하고 program은 무엇을 의미하는지 본격적으로 알아보도록 하겠습니다!! 


Introduction (Background, Motivation, Contribution)

Background는 해당 논문을 이해하기위해 논문에 작성되어있는 간단한 개념들을 정리한 파트입니다.
Motivation은 기존 연구가 어떻길래 해당 연구가 필요한지 즉, 연구 동기에대해 정리한 파트입니다.
Contribution은 motivation을 어떻게 해결하였는지에대한 내용을 정리한 파트입니다.

 

◼︎ Background

  • KGQA task를 해결하기위한 방법론
    1. SP based: 자연어 질문 → Logical Form (e.g. SPARQL, S-expression) 으로 변환
    2. IR based: 지식그래프에 있는 triple들을 이용하여 질문의 topic entity로부터 answer entity까지의 경로 찾기
      (여기에서 이야기하는 triple은 앞서 예시로 보여드린 "영희--{남매}--철수"같이 연결된 것을 의미합니다.)
       그리고 LLM의 등장으로 기존의 방법들 외에도 추가적인 방법론이 있는데요. 
    3. Few-shot: 말 그대로 few-shot prompt를 LLM에 전달하여 해결하는 방법론
      기존 연구 예시: KB-BINDER(Li et al. ACL'23), Pangu(Gu et al. ACL'23) , FlexKBQA (Li et al. AAAI'23)
  • CoS (Chain-of-Symbol) 
    • 정의: CoT 방식을 개선하여 자연어가 아닌 symbolic하게 prompting하는 방식
      해당 내용을 보면 이 논문에서 이야기하고 싶은 symbolic을 이해할 수 있습니다.
      위 그림의 예시처럼 자연어로 나열하기보다는 symbol을 활용한다는 것을 알 수 있습니다.

 

  • KoPL (Knowledge-oriented Programming Language)
    • 정의: KQA Pro 데이터셋을 제안한 논문의 저자들이 제안한 logical form
      ⇒ 다양한 operator (=atomic function)들을 정의하여 보다 symbolic한 logical form

 

◼︎ Motivation

  • LLM은 보통 자연어로 pre-trained 되었기 때문에 KGQA task를 해결하기위해 사용하는 logical form (쿼리)에 대해 가지고 있는 지식 부족! 즉, logical form 생성 시 grammar 및 semantic 지식 부족하기 때문에 한계 존재
    ⇒ 이는 결국 complex KGQA (복잡한 질문을 포함하는) benchmark에대한 좋은 성능을 보여주지 못함

 

◼︎ Contribution

  • SymKGQA framework 제안: LLM을 사용해서 few-shot in-context learning 세팅에서 step-by-step Symbolic LF 생성
  • QUACK(Question-Aware Contextual KoPL) 기반으로 retrieval-augmented generation 설계

 

Methods

해당 파트에서는 방법론에대해 설명하는 파트입니다. 

 

💡 SymKGQA framework 목표
-  Prompt ( Y ) 를 제공하고 pre-trained LLM ( M ) 을 활용하여 CoS KoPL program steps ( P ) 생성
-  KG K에 대하여 P를 실행하고 QUACK resolver를 활용하여 최종 답변을 얻음

 

1️⃣ Generation : Few-shot ICL prompting

     목적 : Cos KoPL program step을 생성하기 위한 과정

  • Prompt 구성 : Y = ( I : instructions, F : KoPL function information, D : few-shot demonstrations)
    1) Instruction: task와 generation policy에대한 설계

    2) Function information : 27개의 KoPL function에대한 정보 제공
        ▵ Functional inputs은 이전 program steps로부터
        ▵ Textual inputs은 input 질문으로부터

    3) Demonstration Selction : 모델이 질문에대한 logical form을 생성할 때 참고할 few-shot
         (전반적으로 dynamic selection의 성능이 더 좋았음!! 특히 복잡한 질문에서!)

         ① Manual Selection: 직접 n 개의 질문을 선택하여 그에 해당하는 logical form 제공하여 데모 구성
             - 선택 기준: 선택된 질문들은 최대한 다양한 KoPL 함수를 포함하도록!
             BUT 모든 test 데이터에대해 동일한 demonstration을 사용하므로 새로운 질문에대해 적합하지 않을 수 있음

         ② Dynamic Selection : 질문에 맞춰 실시간으로 데모 선택하는 방식
           <과정>
           a. Pool creation : 전체 데이터셋에서 약 100개의 질문을 선택하여 demo candidate 구성
               → 이 질문들은 다양한 KoPL을 포함할 수 있도록 선정
           b. Demonstration Retrieval: 새로운 질문에 대하여 가장 유사한 demo를 candidate pool에서 선택
               → 이때, 질문들 간의 유사도를 계산하는 chromaDB(벡터 기반 검색 시스템) 사용하여 질문의 의미 비교
           c. Prompt selection : 선택된 데모는 prompt로 구성되어 모델에 입력 됨
Instruction 
- The task is to come up with the steps of functions for the given test question using the list of functions provided.
- To generate these steps you should match the output of the current step function with functional inputs of the next step function. ....

Function Information
Function Name: Relate
Description - Find entities that have a specific relation with the given entity in the knowledge graph
Functional Inputs - Entity
Textual Inputs - (Predicate, Direction)
Outputs - (Entities, Facts)

Training Example i
Question: Does Pierce County that is located in Washington or Grays Harbor County have less area?
Entities: [’Washington’, ’Pierce County’, ’Grays Harbor County’], 
Concepts: None. 
The steps to solve this question are:
Output:
Step 1: Find(Washington)
Step 2: Relate(located in the administrative territorial entity, backward)
Step 3: Find(Pierce County)
Step 4: And()
Step 5: Find(Grays Harbor County)
Step 6: SelectBetween(area, less)

 

  • Entity and Concept Identification: 질문에서 “entity”와 “concept”을 식별
    > SymKGQA에서는 기존의 NER 방법론을 적용하여 entity linking을 실행
  • ▲ Entity: KG에서 구체적인 객체나 항목 (ex. “스티븐 호킹”, “마리퀴리”)
  • ▲ Concept: 여러 entity들을 포괄하는 추상적인 개념 (ex. “과학자”)

 

2️⃣ RAG based QUACK resolver

      목적 : RAG 기반 생성된 program이 KG에 정확하게 grounding
               ⇒ LLM으로 생성한 KoPL program이 가질 수 있는 오류 유형 별 해결 방법

  1. Entity and Concept Names
    - Retrieval : BERT기반 유사도 검색으로 KG에서 유사한 entity/concept `top-10` 추출
    - Generation : 입력 질문과 함께 검색된 candidate list 다시 LLM에 prompting 하여 적절한 entity/concept을 LLM이 선택
  2. Relation and Attribute Names
    - 1과 같은 방법으로 해결 
  3. Numerical Operator
    - 미리 정의된 연산자를 제공하고 LLM이 질문 맥락에 맞게 연산자 선택하게끔 유도
  4. Numerical Quantity and Units
    - 파이썬의 symbolic math library인 sympy 활용
  5. Symbolic Function Names
    - Retrieval : 이전 step에서 생성된 function input을 기반으로 사용 가능한 function list
    - Generation : 입력 질문과 함께 검색된 candidate list를 다시 LLM에 prompting 하여 적절한 function을 선택하게끔 진행

 

Experiments

해당 파트에서는 실험 세팅 및 결과에대해 설명하는 파트입니다. 

 

◦ 데이터셋: WebQSP, Meta QA, KQA Pro

 

Main 실험 결과

Ablation Study

 

 

 

🐹 SUM UP

이렇게 오늘 첫 논문을 간략하게 정리해보았는데요!

이 논문은 few-shot prompting을 활용하여 logical form (query)을 생성할 때, LLM이 조금 더 잘 알아들을 수 있도록 symbolic한 function들을 주로 활용하여 성능을 높인 논문입니다.

그래서 코딩을 잘하는 CodeLlama도 같이 실험에서 활용한 것 같은데요. 특히, 3개의 벤치마크 데이터셋 중 가장 복잡한 질문이 많이 섞여있는 KQA Pro의 성능을 많이 높인 것을 통해 그 효과를 증명하고 있습니다. 

처음으로 가져온 논문인만큼 어렵기보다는 쉽게 쉽게 읽을 수 있는 논문을 준비해보았습니다. 

다음에 또 재밌는 논문으로 돌아오겠습니다 :)