MRC(12) : Dense-Sparse Phrase

SeongGyun Hong·2024년 10월 9일

NaverBoostCamp

목록 보기
12/64

0. 기존 Retriever-Reader 접근법의 문제

  • Pipe Line 방식으로 Search 후에 해당 문서들을 Reader에 넘겨주는 방식은 Error Propagation에 취약하다.
    5~10개 문서만 Reader에 넘기게 되는데, 이 과정에서 문서들에 정답이 없다면, Reader의 성능이 아무리 좋은들 소용이 없는 것.

  • 또한 answer span에 관해서 query에 따라서 해당 encoding이 달라지는 것 또한 문제임. 어떻게 질문하냐에 따라서 답이 달라질 수도 있다는 것 !

그렇다면, Retrieve-Read의 두 단계 말고 바로 정답을 Searching할 수는 없을까? 즉 문서가 아닌 정답이 되는 Phrase 자체를 검색하는 것은 안 될까?

1. DenSPI

1.1 DenSPI : Phrase Indexing

Phrase Indexing은 DenSPI의 핵심 아이디어로
Phrase Indexing은 문서 내 모든 가능한 구(Phrase)를 Vector Space 내에 mapping하는 과정을 의미함. 이는 보다 효율적이고 정확한 검색과 기능을 가능하게 하고 앞서 언급되었던 Error Propagation을 극복할 수 있음.

1.2 Query-Agnostic Decomposition

Query-Agnostic Decomposition은 DenSPI의 주요 특징으로,
Query-Agnostic Decomposition란 Query와 독립적으로 문서를 분해하는 기법을 의미함. 이는 검색 시간을 크게 단축시키는 의미가 있음.

  • 각 Phrase를 Vector Space 상에 잘 mapping 하기 위한 방법.
    1. 문맥을 고려한 embedding :
      BERT나 RoBERTa 같은 사전 학습 모델을 사용
    2. 위치 정보 포함 :
      문서 내 위치를 Embedding에 추가
    3. 다중 스케일 표현 :
      다양한 길이의 phrase 고려

1.3 Dense-Sparse Representation for phrases

Dense-Sparse Representation은 DenSPI의 핵심 구조이다.
Documnet 상에서 embedding 시키는 하나의 Phrase에 관해서 Dense로만 하지 않고 그에 대응되는 Sparse도 활용하는 것.
Concat 해주자 !

from sklearn.feature_extraction.text import TfidfVectorizer

def create_dense_sparse_embedding(phrase, dense_model, tfidf_vectorizer):
    # Dense embedding
    dense_emb = dense_model.encode(phrase)
    
    # Sparse embedding (TF-IDF)
    sparse_emb = tfidf_vectorizer.transform([phrase]).toarray().flatten()
    
    # Concatenate
    combined_emb = np.concatenate([dense_emb, sparse_emb])
    
    return combined_emb
  • Coherency vector:
    구문의 일관성을 나타내는 벡터로 dense 표현의 일부이다.
    이는 구의 시작과 끝 부분이 얼마나 잘 연결되는지를 나타내며, 의미적으로 일관된 구를 식별하는 데 도움을 준다.

  • Question embedding:
    질문에 대한 dense 표현으로, 검색 과정에서 phrase 검색 시스템 상 질문과 구 사이의 유사도를 계산하는 데 사용된다.

1.4 DenSPI의 주요 목적

  • Scalability Challenge의 해결 :
    Dense-Sparse 표현 방식은 대규모 데이터셋에서의 효율적인 검색 문제(Scalability Challenge)를 해결하려는 시도이다.
    Dense Vector는 의미적 유사성에 특출나지만, 대규모 데이터셋에는 속도 측면에 있어서 취약하다.
    반면, Sparse Vector는 빠른 검색이 가능하나, 의미적 유사성에는 약하다.
    따라서 두 방식을 결합하는 것은 정확성과 효율성의 균형을 맞추려는 시도이다.

Dense Phrases (2021) 연구
Dense Phrases에서는 오직 Dense Embedding만을 사용하여 효과적인 Phrase retreieval을 달성하였으며, 다음과 같은 특징을 보였다.

  • 양방향 인코더 사용
  • 부정적 샘플링 전략
  • End-to-end 학습

CoIBERT (2020) 연구
CoIBERT는 late interaction을 통해 효율적이고 효과적인 검색을 가능하게 했으며, 다음과 같은 특징을 보였다.

  • 토큰 수준의 상호 작용
  • 효율적인 인덱싱과 검색
  • 맥시멀 시멀래리티 사용

CoIBERT는 dense retrieval과 token-level의 상호작용의 장점을 결합하여 보다 높은 정확도와 효율성을 달성하였다.

2. Decomposability Gap (분해가능성 격차)

Decomposability Gap은 쿼리 독립적 구 검색 모델과 최신 쿼리 의존적 모델 간의 성능 차이를 말하며, DENSPI 같은 모델이 이 개념과 관련 있음.

2.1 주요 특징

  1. 정의

    • 쿼리 독립적 표현 사용하는 구 인덱싱 모델(예: DENSPI)과 쿼리 의존적 표현 사용하는 최신 모델 간 성능 차이
    • F(phrase, question, document)를 Question과 Phrase Encoder로 decompose할 때 발생
      - F(phrase, question, document) → G(question) + H(phrase, document)

      장점

      • Question이 달라져도 phrase와 document를 매번 다시 인코딩할 필요 없음

      한계

      • Question과 document 사이의 attention 반영 못함
      • 주어진 입력값들 사이의 정보를 함께 고려할 수 없음
      1. 원래 함수:
        F(phrase, question, document)

      2. 분해된 함수:
        F(phrase, question, document) ≈ G(question) · H(phrase, document)

      여기서 '·'는 내적(dot product) 또는 다른 유사도 측정 함수를 나타낼 수 있음.

      1. 수학적 표현:
        argmax{phrase} F(phrase, question, document)
        ≈ argmax
        {phrase} G(question) · H(phrase, document)
      1. Decomposability Gap의 정의:
        Gap = Performance(F) - Performance(G · H)

        여기서 Performance는 모델의 성능 지표(예: 정확도, F1 점수 등)를 나타냄

      2. 실제 구현에서의 근사:
        score(phrase | question, document) ≈ Eq · Ep

        여기서:

      • Eq는 question의 임베딩
      • Ep는 phrase와 document의 결합 임베딩
  2. 수치

    • SQuAD 데이터셋에서 DENSPI가 최고 성능 모델보다 9.2% 낮은 성능 보임
    • 이 차이가 Decomposability Gap 나타냄
  3. 오픈 도메인 QA에서의 차이

    • 오픈 도메인에선 격차 더 작음
    • DENSPI가 BERTserini보다 F1 점수에서 3.8% 뒤처짐
  4. 의의

    • 쿼리 독립적 구 표현 사용 제약에서 발생
    • 구 임베딩 미리 계산하는 효율성과 정확도 손실 간 trade-off 보여줌
  5. 연구방향

    • 이 격차 줄이는 게 활발한 연구 분야임
    • "향후 연구는 이 격차 더욱 줄이는 데 초점 맞출 것"
  6. 최근동향

    • DensePhrases 같은 후속 모델들이 희소 벡터 안 쓰고 쿼리 독립적 표현 정확도 개선해서 격차 줄이려 함

2.2 관련 개념

  • Phrase Indexing:
    모든 가능한 구를 벡터 공간에 매핑하는 과정. 효율적이고 정확한 검색 가능하게 함.

  • Query-Agnostic Decomposition:
    쿼리와 독립적으로 문서 분해하는 기법. 검색 시간 크게 단축시킴.

  • Dense-Sparse Representation:
    구 표현할 때 Dense와 Sparse 벡터 같이 씀. 정확성과 효율성 균형 맞추려는 시도.

Decomposability Gap은 구(Phrase) 검색 모델의 현재 한계와 개선 가능성 보여주는 중요한 개념으로, DENSPI나 DensePhrases 같은 모델들이 이 격차 줄이려고 하고 있음.

3. DenSPI와 DensePhrases 비교

  1. 모델 구조

    • DenSPI: BERT 모델 사용
    • DensePhrases: SpanBERT 모델 사용
  2. 토큰 처리 방식

    • DenSPI: CLS 토큰을 start와 end로 쪼개어 사용
    • DensePhrases: start와 end에 대해 별도의 임베딩 구함
  3. Sparse Embedding 사용

    • DenSPI: Sparse Embedding 사용
    • DensePhrases: Sparse Embedding 불필요 → Storage 문제 완화
  4. Dense Vector 사용

    • 공통점: 둘 다 Dense Vector 사용하여 문맥적, 의미적 정보 효과적으로 담음
  5. 구를 형성하지 않는 phrase 필터링

    • DenSPI: 필터링 벡터 존재
    • DensePhrases: 해당 역할의 벡터 존재하지 않음

DensePhrases는 DenSPI의 한계를 개선하여 더 효율적이고 성능이 좋은 모델로 발전함. Sparse Embedding을 제거하고 SpanBERT를 사용하는 등의 변화로 storage 문제를 해결하고 성능을 향상시킴.

profile
헤매는 만큼 자기 땅이다.

0개의 댓글