논문명: SPLADE: Sparse Lexical and Expansion Model for First Stage Ranking
논문 링크: https://arxiv.org/abs/2107.05720
사실 논문이 굉장히 짧고 이해하기 어려워서, 네이버에서 새롭게 블로그 글로 발행해줬기 때문에 해당 포스트를 의역하며 설명하고자 합니다.
후속 논문이 많아서 아이디어만 정리합니다.
검색: Retrieval
구글이 지금이야 다양한 분야에서 두각을 드러내지만, 구글의 뿌리는 검색 엔진이다. 구글은 PageRank 라는 알고리즘을 통해 검색 엔진 1위로 자리 잡았다. 자연어 처리 분야에서도 그래프 알고리즘은 아니지만 검색을 연구한다. 그걸 Text Retrieval 이라고 하는데, 크게 2가지 방향이 있었다.
- query - 쿼리: 검색어, 질의어라고 부른다. 쉽게 말해 우리가 검색할 때 검색창에 입력하는 거.
- document - 문서: 검색했을 때 나오는 자료를 의미한다.
Sparse Representation
- 쉽게 말해서 단어가 없으면 0, 있으면 빈도수로 표기했다
- 위 예제는 TF-IDF 의 예시로, 각 문서마다 단어 빈도수에 따라 벡터를 만들어서 연산을 했다
- 그 이외에도 BM25 등 다양한 알고리즘이 해당 수치를 조정하지만 근본은 단어 유무에 따라 벡터를 만든다는 점이다
- 장점1: 연산이 빠르다 - 공백 단위로 나눠서 벡터화하는 것도 빠르고, 유사도 구할 때 내적하면서 0이 많아서 연산이 빠르다
- 장점2: 해석이 쉽다 - 해당 문서를 벡터화하더라도 해당 문서에서 어떤 단어가 중요한지 한눈에 파악이 가능하다
Dense Representation
- BERT의 등장으로 텍스트를 잠재 벡터로 표현할 수 있게 되었다
- 그래서 위처럼 쿼리와 문서를 각각 임베딩하여 내적을 통해 구한 유사도로 검색이 가능해졌다
- 장점: 성능이 우수하다
- 단점1: Deep Learning 은 BLACK BOX라서 왜 이렇게 벡터화되었는지 알 수 없고, 벡터의 수치를 해석할 수도 없다
- 단점2: 느리며 GPU를 많이 소모한다 - 이 점이 기업들이 아직도 검색에 적용하지 못 하는 걸림돌이 된다
- 그래서 위는 dense representation 의 흐름,
- 아래는 sparse representatin 의 흐름이다
방법
- 결과물부터 보자면, 위와 같다
- 왼쪽은 그냥 빈도수로 Bag of Words (BOW) 로 표현한 것이고,
- 오른쪽은 SPLADE로 임베딩했을 때의 결과다.
- 얼핏봐도 수치가 세분화되었으며, 확장이 된 걸 확인할 수 있다.
- 원래는 BERT 임베딩, 즉 H 까지만 구했다.
- 쿼리와 문서를 각각 임베딩하여 유사도를 구하여 일치하는 쌍의 유사도 1이 되도록 학습한다.
- 하지만 SPLADE는 MLM head 단계까지 간다. 그리고 log(1 + ReLU(x)) 까지 거쳐서 만든 임베딩을 사용한다.
- 이게 전부다. MLM head 까지 임베딩한 후에 log 와 ReLU 를 통해 조절해서 사용하는 게 전부다.
이렇게 학습하면 쿼리/문서의 확장/탈락 및 세분화가 발생한다.