논문명: SPLADE v2: Sparse Lexical and Expansion Model for Information Retrieval
논문 링크: https://arxiv.org/abs/2109.10086
간단하게 아이디어만 정리합니다. 전 논문은 아래에 리뷰했습니다.
https://heygeronimo.tistory.com/82
V1과 달라진 점
- query pooling 방식
- document pooling 방식
- 학습 방법: hard negatives + distillation
Query Pooling 방식
- 여기서 i 는 토큰 개수, j 는 단어 개수를 의미한다
- 예컨대, "나는 네가 좋아" 가 [나는, 네가, 좋아] 로 나눠진다면 i = 3 이다.
- 그리고 여기서 j 는 "사랑" 이라는 단어를 의미한다고 가정하자.
- 그렇다면, 각 토큰 임베딩마다 "사랑"에 해당하는 값을 모두 log(1 + ReLU(w)) 을 취해서 더했던 게 V1 이다.
- sum 이 아니라 max 로 바뀌었다
Document Pooling 방식
- v1 에선 원래 query 처럼 계산했었다
- v2 에선 이제 document 에 별짓 안 하고 그냥 더하기만 한다
Hard negatives
- easy negative 는 쉽게 말해 누가봐도 오답이라 구분하기 쉬운 걸 의미한다
- 모델들도 명확하게 쉬운 문제가 있고 어려운 문제가 있다
- Retrieval 분야에선 이렇게 어려운 문제를 hard negative 라고 부르는데, 이걸 직접 추출해서 활용한다.
- 예컨대 모델 A가 1번 정답이 1번인데 자꾸 2번을 가장 높은 확률로 예측한다면, 모델 B에게 1번 정답이 2번이 아니라는 걸 의도적으로 손실함수에 넣어 학습시킨다.
- 보통 BM25처럼 가벼운 모델로 뽑기 마련인데, 여기선 SPLADE v1 fine tuned 를 가지고 뽑았다
Knowledge Distillation
- 학습된 모델의 임베딩 혹은 로짓값을 vanilla 모델이 따라가는 걸 의미한다
- 청출어람처럼 teacher model 을 정답 삼아 학습하면 대다수의 경우에서 성능이 오른다
- 보통 Hard negative 와 Knowledge Distillation 은 최후의 수단으로 성능을 올릴 때 쓰는데, 이 논문에서도 쥐어짰다고 보면 된다
성능
- 가장 아래 부분을 보면 성능이 확실히 올랐다