라이브러리 소개
Representation Vector
Background
원-핫 인코딩을 표현한 벡터, 트레인 데이터 셋 안에 전체 문장들의 합을 코퍼스라고 했을 때, 코퍼스 안에서 어떤 토크나이저를 거쳐서 딕셔너리를 만든다 -> v가 된다
-
Make several tokens from sentences
-
Build a Dictionary of words by indexing each token
-
Make a Vector(Dimension : Number of Words)
-
1 for the corresponding index with the remaining 0
-
Orthogonal Vector -> Lose of Context Information
Rome Paris는 역할이 비슷하지만 표현할 수 없다
-
Sparse Vector -> Curse of Dimensionality
벡터를 내적했을 때 값이 크면 유사도가 높지만 원-핫 인코딩 벡터는 1개 빼고 0 이 된다
두 가지 이유로 적합하지 않음 -> 토크나이저를 쓰자
Tokenizer
English -> SPACY, NLTK
한국어는 형태소라는 것이 있기 때문에 띄어쓰기로는 애매할 수 있다.
이러한 것을 보완해서 한국어토큰이 별도 있다.
Korean -> KoNLPy(Hannanum, Kkma, Komoran, Twitter), MECAB, KHAIII
한국어의 사전에 따라 모델의 성능이 다르기 때문에 중요하다.
넘버링이 되어 있는 단어를 어떻게 표현할 것인지 알아보자
Word2Vec
- Efficient Estimation of Word Representations in Vector Space(Tomas Mikolov et al, 2013)
-
CBOW 방식
w(t-2) ~ w(t+2)바탕으로 w(t)를 유추할 수 있도록 한다.
주변 단어들을 이용해서 중심단어를 학습한다.
w(t-2) : The
w(t-1) : quick
w(t) : brown -> output
w(t+1) : fox
w(t+2) : jumps
w(t-2)가 들어갔을 때 brown이 나올 수 있도록 학습하는 것.
중심단어를 이용해서 주변 단어를 학습한다.
네모를 window라고 하고 중심단어로부터 주변단어까지의 사이즈를 window size라고한다
-
Skip-gram 방식
w(t)를 바탕으로 w(t-2) ~ w(t+2)를 유추할 수 있도록 한다.
- Objective Function : Learn to reflect similarity between two vectors
The의 경우 빈도수가 높아서 과적합이 일어날 수 있다.
-> Subsampling to get : Regularize
전체 단어에 대한 대상으로 softmax를 계산하는 것이 아닌 window size 안에 있는 단어와 밖에 있는 단어는 샘플링하여 해당되는 내용을 바탕으로 softmax 계산을 한다.
-> Negative Sampling to get Speed Up
Glove
- Global Vectors for Word Representation (Jeffrey Pennington et al, 2014)
co-occurrence 개념을 제시
window 밖에 있는 단어는 학습이 진행되지 않는 단점을 지적했다.
- Objective Function : Learn to reflect co-occurrence between two vectors
가정 : 한 문장안에 동시 출연된 단어는 연관성이 있을 것이다.
연관성이 높으면 값이 높을 것이다
FastText
- Bag of Tricks for Efficient Text Classification (Armand Joulin et al, 2016)
- Objective Function : Learn to reflect similarity between two vectors
코퍼스를 형성하는 단어를 적게두자.
Unigrams
Bigrams
Trigrams
4-grams