Pipe Line 방식으로 Search 후에 해당 문서들을 Reader에 넘겨주는 방식은 Error Propagation에 취약하다.
5~10개 문서만 Reader에 넘기게 되는데, 이 과정에서 문서들에 정답이 없다면, Reader의 성능이 아무리 좋은들 소용이 없는 것.
또한 answer span에 관해서 query에 따라서 해당 encoding이 달라지는 것 또한 문제임. 어떻게 질문하냐에 따라서 답이 달라질 수도 있다는 것 !
그렇다면, Retrieve-Read의 두 단계 말고 바로 정답을 Searching할 수는 없을까? 즉 문서가 아닌 정답이 되는 Phrase 자체를 검색하는 것은 안 될까?
Phrase Indexing은 DenSPI의 핵심 아이디어로
Phrase Indexing은 문서 내 모든 가능한 구(Phrase)를 Vector Space 내에 mapping하는 과정을 의미함. 이는 보다 효율적이고 정확한 검색과 기능을 가능하게 하고 앞서 언급되었던 Error Propagation을 극복할 수 있음.
Query-Agnostic Decomposition은 DenSPI의 주요 특징으로,
Query-Agnostic Decomposition란 Query와 독립적으로 문서를 분해하는 기법을 의미함. 이는 검색 시간을 크게 단축시키는 의미가 있음.
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 검색 시스템 상 질문과 구 사이의 유사도를 계산하는 데 사용된다.
Dense Phrases (2021) 연구
Dense Phrases에서는 오직 Dense Embedding만을 사용하여 효과적인 Phrase retreieval을 달성하였으며, 다음과 같은 특징을 보였다.
- 양방향 인코더 사용
- 부정적 샘플링 전략
- End-to-end 학습
CoIBERT (2020) 연구
CoIBERT는 late interaction을 통해 효율적이고 효과적인 검색을 가능하게 했으며, 다음과 같은 특징을 보였다.
- 토큰 수준의 상호 작용
- 효율적인 인덱싱과 검색
- 맥시멀 시멀래리티 사용
CoIBERT는 dense retrieval과 token-level의 상호작용의 장점을 결합하여 보다 높은 정확도와 효율성을 달성하였다.
Decomposability Gap은 쿼리 독립적 구 검색 모델과 최신 쿼리 의존적 모델 간의 성능 차이를 말하며, DENSPI 같은 모델이 이 개념과 관련 있음.
정의
장점
- Question이 달라져도 phrase와 document를 매번 다시 인코딩할 필요 없음
한계
- Question과 document 사이의 attention 반영 못함
- 주어진 입력값들 사이의 정보를 함께 고려할 수 없음
원래 함수:
F(phrase, question, document)분해된 함수:
F(phrase, question, document) ≈ G(question) · H(phrase, document)여기서 '·'는 내적(dot product) 또는 다른 유사도 측정 함수를 나타낼 수 있음.
- 수학적 표현:
argmax{phrase} F(phrase, question, document)
≈ argmax{phrase} G(question) · H(phrase, document)
Decomposability Gap의 정의:
Gap = Performance(F) - Performance(G · H)여기서 Performance는 모델의 성능 지표(예: 정확도, F1 점수 등)를 나타냄
실제 구현에서의 근사:
score(phrase | question, document) ≈ Eq · Ep여기서:
- Eq는 question의 임베딩
- Ep는 phrase와 document의 결합 임베딩
수치
오픈 도메인 QA에서의 차이
의의
연구방향
최근동향
Phrase Indexing:
모든 가능한 구를 벡터 공간에 매핑하는 과정. 효율적이고 정확한 검색 가능하게 함.
Query-Agnostic Decomposition:
쿼리와 독립적으로 문서 분해하는 기법. 검색 시간 크게 단축시킴.
Dense-Sparse Representation:
구 표현할 때 Dense와 Sparse 벡터 같이 씀. 정확성과 효율성 균형 맞추려는 시도.
Decomposability Gap은 구(Phrase) 검색 모델의 현재 한계와 개선 가능성 보여주는 중요한 개념으로, DENSPI나 DensePhrases 같은 모델들이 이 격차 줄이려고 하고 있음.
모델 구조
토큰 처리 방식
Sparse Embedding 사용
Dense Vector 사용
구를 형성하지 않는 phrase 필터링
DensePhrases는 DenSPI의 한계를 개선하여 더 효율적이고 성능이 좋은 모델로 발전함. Sparse Embedding을 제거하고 SpanBERT를 사용하는 등의 변화로 storage 문제를 해결하고 성능을 향상시킴.