ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • KG #1) EmbedKGQA : Improving Multi-hop Question Answering over Knowledge Graphs usingKnowledge Base Embeddings 리뷰
    REVIEW 2020. 7. 23. 17:36
    반응형

    Bert와 같은 언어 모델의 발달로 인해, 다양한 부분에서 KG(Knowledge Graph 혹은 KB, Knowledge Base)의 한계점을 해결했지만. 여전히 Common sense와 같은 분야에서 KG를 사용하지 않을 순 없다. 그렇기에 그래프 구조를 사용하여 다양한 문제를 풀기위한 연구는 지속되고 있고, 이번 리뷰하는 논문 또한, Question Answering over KG에 관한 내용이다.


    Improving Multi-hop Question Answering over Knowledge Graphs using Knowledge Base Embeddings

    Apoorv Saxena, Aditay Tripathi, Partha Talukdar (Indian Institute of Science, Bangalore)

    Github : https://github.com/malllabiisc/EmbedKGQA

    (현재 실행에 대한 자세한 안내는 적혀 있지 않다.)

     

    이 논문은 ACL 2020(July 5-10)에 발표된, 따끈따끈한 논문으로 자연어 질의문의 대한 답을 KG에서 추출하는 목적을 가지고 있고, 해결 방법으로 RoBERTa와 KG 임베딩을 사용한다. 추가적으로 논문을 발표한 IIoS는 인도과학원으로 한국으로 치면, 카이스트라 보면 될듯.. ㅎ

     

    Abstract

    KG는 엔티티를 노드로 릴레이션을 엔티티 간의 연결된 Edge로 표현하는 그래프라고 보면 된다. Question Answering over KG 혹은 KGQA라고 불리우는 태스크는 자연어 질의문에 대한 답을 KG에서 뽑아내는 것인데, 여기서 어려운 점은 Multi hop 문제이다. Multi-hop은 여러개의 릴레이션을 거쳐 가야만 답이 나오는 상황이라고 보면 된다. 아래의 그림1을 보면, 질문의 답을 뽑아내기 위해서 'Louis Mellis' 엔티티로 부터 3 단계를 거쳐야만 Crime이라는 답을 뽑아 낼 수 있다. 이러한 문제를 Muilti-hop KGQA라 한다. 

    Multi-hop KGQA

     

    KGQA를 해결하기 위해 2가지 연구 방법이 진행 되었다. 첫번째는 대상이 되는 엔티티와 관련있는 외부 텍스트를 사용하여 함께 QA를 하는 것이다. 힌트 셋을 준다고 보면 된다. 두번째는 KG를 임베딩하여 존재하지 않은 엔티티간의 링크를 만들어 내어 푸는 것이다(이를 Link Prediction이라 한다).  본 논문에서는 KG 임베딩을 통해 Multi-hop KGQA를 풀려고 한다.

     

    Contribution

    1) EmbedKGQA 제안, multi-hop KGQA 문제에 적합하고, KG 임베딩을 사용한 첫번째 방법.

    2) 직접적으로 연결된 엔티티가 없다면 근처 이웃이 답으로 나오도록 만듬.

    3) 다양한 데이터 셋에 대한 실험에 SOTA.

     

    Background

    기본적으로 사용하는 기호는 좌측의 그림을 참고하면 된다.
    Link Prediction은 $s = \phi(h,r,t)$를 만족하는 스코어링 함수를 선언하여 해당 링크의 점수를 도출하게 된다. KG의 임베딩은 위의 올바른 트리플 $(h,r,t)$에 대하여 올바르지 않은 트리플 $(h', r', t')$를 만들어 $\phi(h, r, t) > 0$과 $\phi(h', r', t') < 0$을 만족하도록 엔티티를 임베딩하는 것이라 볼수 있다. 

    해당 논문에서는 ComplEX Embeddings을 소개하고 있고, 코드에서는 DistMult, SimplE, CompleEx, RESCAL, TuckER를 사용 가능하도록 해두었다.

     

     

    EmbedKGQA: Proposed Method

    문제 정의를 먼저하자면, 지식 그래프 $G$와 속한 트리플 셋 $K$가 있고, QA를 위한 자연어 질의문 q와 그에 해당하는 주제 $e_h \in E$는 엔티티 셋에 속한다. 그리고 정답으로 주어진 answer도 엔티티 셋에 존재한다. $e_t \in E$.

     

    제안하는 EmbedKGQA는 3가지 모듈이 존재한다. 그렇기에 End2End 모델로 볼 수없고, 각각의 모델을 학습해야 한다.

    1) KG Embedding Module

      모든 엔티티를 임베딩하기 위한 모듈, ComplEx를 통해서 모든 엔티티와 릴레이션을 임베딩 한다. 임베딩 크기는 $\mathbb{C}^d$로 하는데, 코드에서는 200을 사용하고 있다. 여기서 주의 할 점 두가지는,  임베딩을 하는 KG의 모든 엔티티가 QA에 존재하는 엔티티를 커버해야 한다는 것과 임베딩 된 엔티티의 값을 뒤의 모듈을 학습할때 Frozen을 할지, 업데이트를 허락할지를 결정해야한다. 실제 코드에서는 Frozen하고 있는 것으로 보인다.

     

    2) Question Embedding Module

     질문을 임베딩하는 모듈인데, 앞선 KG Embedding Module에서와 마찬가지로 자연어 질의문 q를 $\mathbb{C}^d$크기로 임베딩을 수행한다. 자연어 질의문을 feed-forward neural network를 통해서 임베딩을 하는데 RoBERTa를 사용하여 768-디멘젼 벡터를 $\mathbb{C}^d$크기의 벡터로 바꾸게 된다. 4 단의 fully connected linear layer + ReLU를 사용하고 있고, 각 FC 레이어는 512 크기를 사용한다. 

    주어진 질문 q에서 임베딩된 $e_q$와 주제 엔티티 $e_h$, 정답 엔티티 셋 $A \in E$ 또한 임베딩을 수행한다. 임베딩 방법은 앞선 KG 임베딩과 동일하게 ComplEx를 사용하고, 존재하는 데이터 $\phi(e_h, e_q, e_a) > 0$와 존재하지 않는 경우의 수인 $\phi(e_h, e_q, e_\bar{a}) > 0$를 만들게 된다. 여기서 $ e_\bar{a} \notin A$의 조건을 만족해야 한다. 

     

    3) Answer Selection Module

      실제 정답을 찾는 모듈로써, $a' \in E$를 만족하는 $a'$와 (head, question)의 스코어를 구하는 방식을 사용한다. 아래의 식의 최대값이 나오는 엔티티를 답변으로 도출한다. 하지만, 지식 그래프의 엔티티가 너무 많은 경우 pruning 전략을 세워서 사용한다. 

    $$ e_{ans} = arg \underset{a' \in E}{max} \phi(e_h, e_q, e_{a'}) $$

     

      하지만, 실제로 정답을 구하기 위해서는 KG에 존재하는 릴레이션과 자연어 q에서 찾기를 원하는 릴레이션을 매칭 시켜야한다. 이 부분을 Relation Matching이라 하고, PullNet에서 사용한 방식과 유사하게 해결한다. 이를 위해 Relation Matching 스코어 함수를 정의 한다.  $r$은 릴레이션 셋에 존재하고, q는 주어진 질문일때 아래의 식을 통해 스코어를 계산한다.

    $$ h_q = RoBERTa(q') \\ S(r,q) = sigmoid(h^T_qh_r)  $$

     

    해당 논문은, 답을 뽑는 과정에서 릴레이션의 선택이 함께 수행되도록 하고 있다. 아래의 식과 같이 RelScore를 계산하면, $e_{ans}를 계산식에 영향을 주는 방향으로 정의하고 있다. $r$은 하이퍼 파라미터이다.

    $$ RelScore_{a'} = |R_a \cap R_{a'}| $$

    $$ e_{ans} = arg \underset{a' \in E}{max} \phi(e_h, e_q, e_{a'}) + r \ast {RelScore}_{a'} $$

     

    ** 모델에 대한 설명 부분중 러프한 부분이 존재하는데, 이 부분은 코드를 통해 해결하려 한다. 하지만, 공개된 코드가 아직 정리되어 있지 않다. 곧 정리해서 올려준다하니 기다려보자. 

    Experiments

    Data statistics

    Dataset based KG train dev test
    MetaQA 1-hop wikimovies  95,106 9,992 9,947
    MetaQA 2-hop wikimovies 
    118,948 14,872 14,872
    MetaQA 3-hop wikimovies 
    114,196 14,274 14,274
    WebQuestionsSP Freebase 2,998 100 1,639

     

    Experiment results

    실험은 MetaQA를 중점적으로 수행했는데, KG의 50%만을 랜덤으로 추출하여 임베딩 후 실험한 KG-50 테이블이 존재한다. 이는 링크가 누락된 경우에 얼마나 정답을 잘 찾아내는 지를 알아보기 위함이다.

      MetaQA KG-Full - F1 MetaQA KG-50
    Model 1-hop 2-hop 3-hop 1-hop 2-hop 3-hop
    VRN 97.5 89.9 62.5 - - -
    GraftNet 97.0 94.8 77.7 64.0(91.5) 52.6(69.5) 59.2(66.4)
    PullNet 97.0 99.9 91.4 65.1(92.4) 52.1(90.4) 59.7(85.2)
    KV-Mem 96.2 82.7 48.9 63.6(57.7) 41.8(48.4) 37.6(35.2)
    EmbedKGQA 97.5 98.9 94.8 83.9 91.8% 70.3

     

    반응형

    댓글

Designed by Tistory.