dense embedding과 sparse embedding 비교

1. passage embedding

 

하나의 단락 passage를 embedding으로 변환하는 것

 

주어진 단락이 가지는 뜻을 담는 숫자를 가지는 벡터에 mapping하는 것이 목표

 

 

passage embedding은 문서를 벡터로 변환하는 것이다.

 

 

2. sparse embedding

 

TF-IDF같은 embedding은 벡터 크기가 매우 크지만 0인 숫자가 대부분인 sparse vector이다.

 

기반이 bag of words로 vocab의 특정 단어가 문서에 있는 경우만 nonzero가 되므로 거의 대부분 90%이상의 원소가 0인 경우가 종종 발생함

 

sparse embedding 그림?

 

차원 수가 매우 큰 경우가 대부분인데 compressed format으로 어느 정도는 극복 가능함

 

예를 들어 nonzero 위치와 그 값만 저장하여 공간을 절약할 수는 있음.. (차원 정보는 어느정도 손해보겠지만)

 

가장 큰 문제는 단어의 유사성을 고려하지 못한다는 점

 

서로 다른 두 단어가 있을 때, 아주 비슷한 의미를 가지더라도 vector space에서 완전히 다른 dimension을 차지함

 

sparse embedding은 그리고 한번 구축하고 나서는 추가적인 학습이 불가능한 단점도 크다

 

무슨 말이냐면 passage vector가 새로 하나 들어오면 처음부터 모든 passage를 다시 학습해야함

 

 

3. dense embedding

 

sparse embedding이 단어의 유사성을 반영하지 못한다는 점을 극복하고자 최근에 많이 사용함.

 

sparse embedding의 많은 단점들을 보완함.

 

dense라는 이름에 걸맞게 vocab size보다 훨씬 작은 차원의 고밀도 vector

 

보통 50~1000차원으로 1000보다 큰 경우는 드물다

 

sparse vector는 vocab size와 동일한 차원을 가지거나 ngram을 고려하면 그 이상의 차원을 가짐

 

sparse vector(좌), dense vector(우) 비교

 

vector의 각 차원이 특정 term에 대응하지 않는다

 

차원이 모두 합쳐지면서 vector space상 위치가 추상적이고 복합적인 의미를 가지도록 만들어진 고밀도 vector

 

sparse vector가 대부분의 요소가 0인 벡터라면 dense vector은 대부분 0이 아닌 원소로 구성

 

 

4. sparse vector는 정말로 안좋기만 한가?

 

sparse vector가 안좋다고만 이야기한 것같지만 좋은 점도 물론 있다

 

질문 내 특정 단어가 passage에 정확히 일치하는 경우가 있는 것을 retrieve하는데 유용하다.

 

반면 의미적으로 해석해서 지문을 찾지는 못한다

 

dense vector는 의미적으로 지문을 이해하여 의미가 같아도 다른 단어로 표현된 경우를 detection할 수 있다.

 

거의 항상 sparse vector가 dense vector보다 차원이 크거나 같아서 sparse는 활용할 수 있는 알고리즘의 한계가 있는데

 

dense는 dimension이 기본적으로 작아 활용할 수 있는 알고리즘의 폭이 넓다

 

sparse와 dense의 차이

 

5. 그래서 뭘 써야돼?

 

sparse embedding이 단점이 부각되어 보여도 중요한 term이 정확히 일치해야하는 경우에 성능이 뛰어난 것은 사실임

 

이 친구도 현업에서 많이 쓰임.. 물론 이거 하나만으로는 많은 것을 하기는 어렵다

 

반면 dense embedding은 단어의 유사성이나 맥락 등을 파악해야하는 경우는 성능이 뛰어나다

 

그리고 sparse embedding과는 다르게 한번 구축해놓으면 다른 passage가 들어와도 굳이 안바꾸고 들어온 passage만 embedding이 가능함

 

특히 최근 괴물같은 pretrained model의 등장으로 high quality dense embedding을 얻기가 쉬워졌고 실제로 retrieval accuracy가 증가함

 

sparse embedding은 bag of words나 term frequency등을 고려하여 embedding을 하므로 engineering 측면이 강하지만

 

dense embedding은 그냥 넣으면 모델이 알아서 해주는거 아니여>>??

 

일반적으로는 sparse와 dense embedding을 모두 사용하거나 dense embedding만 사용함

TAGS.

Comments