** 다음은 https://www.youtube.com/watch?v=ZT3_9Kjx7oI 와 https://velog.io/@mingqook/StarSpace-Embed-All-The-Things 블로그를 참고해 작성중인 게시글입니다.
Text Classification, Document Embedding 등의 NLP task 뿐 만 아니라 recommendation, knowledge graph에도 폭 넓게 활용할 수 있으며 좋은 성능을 보이는 Embedding 논문.
<group화 시킬 수 있음.>
$d_1$ This food was great! # Pizza $t_1$
$d_2$ I love vaggie pizza # positive $t_2$
$d_3$ cheap Italian Restaurant # italian $t_3$
$d_4$ Find me a begetarian place # vegetarian $t_4$
$d_4$ Gimme Pepperoni Pizza # meat $t_5$
table에 label이 저장되어있다고 보자. 그럼 table을 생성할 수 있을 것. document 와 tag 간 positive relationship을 표로 기록할 수 있음.
document의 의미와 tag의 의미가 유사해야 한다.
만약 tag와 doc의 embedding을 한다면 두개는 가까워야 한다.
예를 들면, 2D 임베딩을 실행한다고 한다면, tag1에 해당하는 임베딩 벡터는 $d_2$와 $d_5$와 가까워야 한다. (초록색 checkmark 참고)
또, not labeled된 document는 tag로부터 멀어져야 한다. 즉, 모든 tag와 document들을 push, pull 할 수 있고 결국 clusters of documents and tags를 얻을 수 있다.
주요 아이디어는, 우리는 document와 tag 두가지 타입의 property를 표현할 수 있는 embedding를 동일 space에 얻으려고 하는 것.
만약 새로운 document가 들어오면 auto tag를 부여할 수 있고, 새로운 tag가 있다면 auto document를 찾을 수 있으며, recommendation도 가능하다. 일반적으로 단어임베딩을 학습하는 language task : 다음 토큰을 예측하는 식으로 학습. 다만 이 방법을 사용 시 도메인에 특화된 임베딩을 학습시킬 수 있다. 따라서 domain-specific data가 있다면 이런 식으로 학습하는게 더 도움이 될 수 있다.
단어 단위로 살펴보자. 우리는 하나의 document를 0, 1로 구성된 vector들로 볼 수 있다. (bag-of-words) 또한 tag들 역시 vector로 표현 가능. (One-hot encoded)
이 단어들을 비교하기는 힘들다. 두 vector의 shape이 다르기 때문에. 여기에 trick을 적용.
neural network의 input으로 생각. 이후 Feed-Forword Network를 생각, hidden shape를 동일하게 설정해 same size의 embedding을 얻게 하는 것.
sparse representation을 dense one으로 바꾸어 둘 간의 similarity를 계산할 수 있음.
Sim = 주로 cosine distance. 그럼 label을 얻을 수 있음. tag-doc label이 있다면 sim이 커야 함. 아니라면 작아야 함. all positive example / negative example로 나눌 수 있으며 positve < negative일 것. negative sampling을 수행함.
label이 있기 때문에 back으로 보낼 gradient signal이 존재. 따라서 FF를 업데이트 할 수 있음.
GloVe와 유사한 방식으로 학습되는 것을 알 수 있음. 유일한 차이점은, GloVe는 seperate tag가 없다는 점만 빼면. tag와 word각각에 대해 embedding을 수행.
이런 식으로 interpretable한 embedding을 얻을 수 있으며, domain이 분명한 데이터가 있다면 강력한 성능을 보일 수 있음.
[Abstract]
논문 내에서는 StarSpace로 이름지어진 다양한 종류의 문제를 해결할 수 있는 general-purpose neural embedding model을 소개함. StarSpace는 주어진 문제에 따라 discrete feature들로 이루어진 entity들을 embedding하고 각각을 비교한다.
1. Introduction
StarSpace는 다양하고 넓은 분야의 문제에 범용될 수 있는 neural embedding model이다.
- Text classification or other Labeling tasks
- Ranking of sets of entities
- Collaborative filtering-based recommendation
- Content-based recommendation where content is defined with discrete features
- Embedding Graphs
- Learning word, sentence or document embeddings
StarSpace는 task of ranking이나 classification of interest를 위한 entity들의 집합들 사이의 관계로부터 discrete feature representation을 통해 entity embedding을 학습하는 방식으로 동작한다.
일반적인 경우에 StarSpace는 서로 다른 종류의 entity들을 vectorial embedding space에 embedding시킨다.
StarSpace 이름 중 star는 모든 타입을 의미하고, space는 하나의 공통적인 공간을 의미하여 모든 타입을 해당 공간에서 비교할 수 있게 된다. StarSpace는 query entity, document, object가 주어졌을 때 각각의 rank를 학습한다.
2. Related Work
Embedding(Latent text representation)은 큰 말뭉치에서 비지도 방법을 통해 학습되는 word, document들의 vectorial representation이다. 해당 분야에서의 neural embedding은 NLPM, Word2Vec, FastText등이 있다.
Supervised Embedding 분야에서는 SSI, WSABIE, TagSpace, FastText 등의 방법들이 NLP와 검색에서 좋은 성능을 보였다.
Recommendation 분야에서는 embedding은 주로 SVD, SVD++등을 통해 큰 성공을 보였다. 이는 주로 user id나 movie id들이 각각의 embedding 값을 갖는 collaborative filtering setup에 집중했다. 그로 인해 새로운 사용자나 아이템들은 포함될 수 없었다. 본 논문에서는 StarSpace가 collaborative filtering setup과 사용자와 아이템이 feature들로 표현되어 고정된 set만을 다루는 것이 아닌 out-of-sample extension이 가능한 content-based setting을 동시에 어떻게 다루는지 역시 보여주었다. 또한 StarSpace는 knowledge based의 link prediction에서도 좋은 성능을 갖는다는 것을 보여준다.
3. Model
StarSpace model은 entities 를 학습한다. 각각의 entity들은 fixed-length dictionary로부터 나온 discrete features(bag-of-features)의 set으로 구성되어있다.
docmuent나 sentence와 같은 entity는 bag of words나 n-grams로 설명될 수 있으며, user와 같은 entity는 그들이 선호하는 bag of documents, movies 혹은 items들로 설명될 수 있다. 가장 중요한 StarSpace의 포인트는 해당 모델은 다른 종류의 entities들도 비교가 가능하다는 점이다. 예를 들면, user entity는 item entity와 비교될 수 있으며 이는 곧 recommendation에 해당한다. 혹은 document entity와 label entity의 비교는 text classification이 될 수 있다.
이는 각 entity들을 동일한 차원에 embed 하기 때문에 가능하다.
notation :
$$ F : \textrm{dictionary of } D \textrm{ features}, \\ dim(F) = D \times d \\
F_i = i^{th} \textrm{feature (row), yielding its d-dimensional embedding} $$
따라서, $a$ entity의 임베딩은 $\sum_{i \in a} F_i$로 표현할 수 있다.
이는 곧, 다른 임베딩 모델들 처럼, StarSpace 모델 역시 우리가 직접적으로 임베딩 하려는 set의 discrete features들 각각에 $d$-dimensional vector를 할당하는 것으로부터 시작한다. (set : words와 같은 features들을 포함하고 있는 dictionary).
Feature들로 구성된 Entity들(such as documents)는 dictionary 안의 features들로 구성된 bag-of-features로 표현될 수 있으며 그들의 임베딩 역시 implicitly 학습될 수 있다. Entity는 single word, name or user or item ID와 같은 하나의(uniqure) feature로 구성될 수 있다는 점을 명심하자.
모델을 학습하기 위해선, 이 entity들을 compare하는 방법을 학습해야 한다. 구체적으로는 본 모델은 해당 loss function을 minimize하는 식으로 학습된다.
- Generator of positive entity pairs : $(a, b) in E^{+}$. task-dependent하다.
- Generator of negative entity $b_i^{-} \in E^{-}$ : k-negative sampling strategy를 활용하여 각 batch update마다 k negative pairs를 선택함. 해당 set of entities(E)에서 random하게 선택함.
# Content-based Recommendation
본 task는 set of users(각 user는 bag of iems로 표현되어있고, 각 item들은 dictionary로부터 나온 bag of features들로 구성되어있음)로 구성되어있다. 예를 들면, 문서 추천 task에 대해선 각 user가 그들이 좋아했던 bag-of documents로 표현될 수 있다. 또한 각 document는 그것이 포함하고 있는 bag-of-words로 표현된다. 이제 $a$는 한개를 제외한 모든 items들로 선택될 수 있으며 $b$는 남은 item 중 선택될 수 있음.
# 작성중...