• 해당 논문은 https://arxiv.org/abs/1607.04606에서 확인할 수 있습니다 
  • 아래 포스터는 상시적으로 업데이트 될 수 있음을 알려드립니다. 
  • 오류 등을 발견하면, 댓글로 자유롭게 알려주세요! 

Enriching Word Vectors With Subword Information은 2017년 페이스북 AI 리서치팀이 발표한 것으로, Word Embedding 기법 'FastText'를 제안한다. 

FastText는 Word2Vec의 확장 버전이다.  Word2Vec이나 GloVe의 최소 분석 단위는 '단어'였는데, FastText는 단어가 문자 n-gram으로 구성됐다고 간주한다. Word2Vec은 하나의 단어에 고유한 벡터를 할당해서 단어의 형태학적 특징을 반영할 수 없는 문제가 있다고 지적한다. 

그렇기 때문에 Word2Vec, GloVe에서는 모델을 구성하는 데 쓰인 코퍼스 내 단어 이외의 단어를 처리할 수 없었던 것에 반해, FastText는 단어가 코퍼스에 존재하지 않아도 해당 단어의 임베딩 벡터를 만들 수 있다. 


단어가 character n-gram으로 구성된다는 게 무슨 의미일까? 'india'라는 단어를 예로 들어보자. 이 단어를 3-gram으로 표현하면 '<in', 'ind', 'ndi', 'di>'이 된다. 그리고 india라는 단어는 모든 문자 n-gram을 벡터 표현한 것의 합이다. 

--> FastText는 코퍼스에 없는 단어에 대해 임베딩을 생성할 수 있다. 

단어 '한국대학교'의 벡터는 subword vectors의 합으로 표현한다. 이처럼 단어를 subwords로 표현하면 typo에 대하여 비슷한 단어 벡터를 얻을 수 있다. 

단어 벡터가 아닌 subwords의 벡터들을 학습. 그 외에는 Word2Vec과 동일하다. Word2Vec에서 word look-up을 하는데, FastText에서는 subwords look-up을 수행한다. 


단점. 
메모리 소모가 크다는 것! 단어로부터 임베딩을 만드는 것이 아니라 단어의 문자 n-gram을 학습시켜 만들기 때문. 이 단점을 극복하기 위해 n-gram의 min과 max를 설정한다. 통상적으로 중복이 제거된 5천만 단어로 구성된 코퍼스를 처리하기 위해 약 256GB RAM이 필요하다. 


FastText 모델은 네거티브 샘플링 기법을 쓴다. FastText는 Word2Vec에서 한 발 더 나아가서 타깃 단어(t), 문맥 단어(c) 쌍을 학습할 때 타깃 단어(t)에 속한 문자 단위 n-gram 벡터(z)들을 모두 업데이트한다.