[ML] Bi-Encoder and Cross-Encoder

JAsmine_log·6일 전

Encoder

Encoder는 어떤 정보를 압축 하거나, 변형하여 특정 형태로 만들어 내는 것을 말함
ML에서는 다양한 Encoder가 있고, Bi-Encoder와 Cross-Encoder 가 있음

Bi-encoder

1단계:

  • 질문과 문서를 각각 따로 인코딩
    질문 → [0.2, 0.8, 0.1, ...] 벡터1
    문서A → [0.3, 0.7, 0.2, ...] 벡터2
    문서B → [0.9, 0.1, 0.5, ...] 벡터3
    문서C → [0.25, 0.75, 0.15, ...] 벡터4

2단계:

  • 인코딩(임베딩)한 내용을 기반으로 코사인 유사도 계산
    질문 vs A = 0.85
    질문 vs B = 0.32
    질문 vs C = 0.78

결과

  • A > C > B 순위
  • 문서 A, B, C의 벡터를 미리 만들어 두고 새로운 질문만 인코딩 하여 비교 가능

Cross-encoder

1단계

  • 질문과 답을 쌍(pair)으로 함께 입력
    입력1: [CLS] 질문 A [SEP] 답변 A → 0.92점
    입력2: [CLS] 질문 A [SEP] 답변 B → 0.05점
    입력3: [CLS] 질문 A [SEP] 답변 C → 0.81점

결과

  • A > C > B 순위
    장점: "파이썬"과 "Python", "파일 읽기"와 "open() 함수" 등의 단어의 관계를 직접 비교하며 판단해서 더 정확함
    단점: 매번 3번 인코딩해야 함. 문서가 100만개면 100만번 새로 인코딩하여 연산
profile
Everyday Research & Development

0개의 댓글