Contrastive Training
Embedding이 비슷하다는 말은 무엇과 비교해 비슷한지를 필요로 한다. Contrastive Training에서는 query의 정답 passage를 positive로, 관련 없는 passages를 negatives로 두고, 정답의 similarity가 다른 후보보다 높아지도록 학습한다. 절대적인 의미 거리의 정답을 주는 것이 아니라, 주어진 후보들 사이에서 정답을 구분하도록 만드는 objective다.
- Query / positive / negatives
- similarity / temperature
- Softmax
- Cross-Entropy
- Embedding update
Contrastive Objective
아래 InfoNCE 식에서 q는 query, d⁺는 정답 passage, dⱼ⁻는 negatives다. 분자는 positive score의 exponential이고, 분모에는 positive와 모든 negative가 함께 들어간다. 이 비율은 후보들에 대한 Softmax에서 positive를 선택할 확률이며, 그 값이 1에 가까워질수록 -log loss는 0에 가까워진다.
Temperature τ는 similarity 차이를 얼마나 sharp하게 반영할지를 정한다. 작게 하면 같은 score 차이도 더 크게 대비된다. 슬라이드는 일반적인 예시 범위를 0.01–0.1로 제시하지만, task와 학습 설정에 맞추어야 하는 hyperparameter다.
In-Batch Candidates
B=4인 batch에 (q₁,d₁), …, (q₄,d₄)의 정답 쌍이 있다면, 한 query는 자신의 passage 외에 다른 세 passages를 negatives로 재사용할 수 있다. 새 문서를 별도로 encode하지 않고 후보를 얻는다는 뜻에서 “for free”라고 부르지만, batch를 키우는 compute까지 없어지는 것은 아니다.
| Query | d₁ | d₂ | d₃ | d₄ |
|---|---|---|---|---|
| q₁ | positive | negative | negative | negative |
| q₂ | negative | positive | negative | negative |
| q₃ | negative | negative | positive | negative |
| q₄ | negative | negative | negative | positive |
다른 passage가 실제로도 정답일 수 있다는 가정을 놓치면 false negative가 된다. Batch가 커지면 negatives는 늘지만 이런 위험과 compute도 함께 늘어난다.
Negative Sampling
세종의 출생을 묻는 query에서 요리 recipe는 쉽게 구분되는 negative다. 세종이 1450년에 죽었다는 passage는 인물은 맞지만 질문의 답이 아니므로 hard negative가 될 수 있다. 교수님은 세종시나 세조처럼 겉으로 가까운 후보도 예로 들었다. 쉬운 negatives만 있으면 모델은 이런 가까운 오답을 구별하는 연습을 충분히 하지 못한다.
Hard negative는 헷갈려도 실제로 틀린 후보이고, false negative는 실제로 맞는데 틀렸다고 label한 후보다. 후자를 멀리 보내도록 학습하면 목표와 반대가 된다. ANCE는 ANN index에서 hard negatives를 갱신하며, 이때도 정답을 잘못 포함하지 않는 품질 관리가 필요하다.
SBERT는 NLI pairs를 사용한 Siamese/triplet objectives, SimCSE는 같은 문장에 서로 다른 dropout masks를 적용한 views, E5는 web CCPairs와 query: / passage: prefixes를 사용한다. E5의 prefix는 query와 긴 passage의 역할 차이를 입력에 알려 주는 장치다.
GTE는 먼저 in-batch negatives로 학습하고 이후 hard negatives를 포함하는 multi-stage 접근으로 소개된다. Loss 형태가 비슷해도 positive를 무엇으로 만들고 어떤 negatives를 구별하게 하느냐가 representation을 바꾼다. 이것이 negative 품질이 Embedding 공간을 만든다는 말의 구체적인 의미다.
In-batch negatives와 hard negatives를 구분해야 한다. 정답 문서가 다른 위치에도 존재하면 false negative가 될 수 있다.
Hard negative와 false negative는 다르다.
Check
In-batch negative와 hard negative, false negative를 세종 출생 질문으로 구분하라.
Answer
다른 batch 문서가 in-batch negative다. 세종 사망 1450처럼 비슷하지만 답이 아닌 것은 hard negative다. 다른 정답 출생 passage를 negative로 두면 false negative다.
를 줄이면 어떤 일이 생기며 similarity가 절대 점수라고 할 수 없는 이유는?
Answer
Softmax 대비가 더 sharp해진다. loss는 관측한 negatives에 대비한 positive의 상대적 확률을 높이므로 negative 구성에 영향을 받는다.
Hard negative를 고를 때 similarity가 높다는 이유만으로 negative로 사용하면 어떤 문제가 생기는가?
Answer
구별하기 어려운 실제 오답은 유용한 hard negative지만, 다른 위치의 정답 문서나 의미상 맞는 문서를 negative로 두면 false negative가 된다. Positive를 가깝게, negatives를 멀게 하는 loss가 잘못된 관계까지 밀어낼 수 있다.