Deep Learning for Natural Language
그럼 Natural Language task에서의 input layer의 뉴런이 몇개여야할까?
위 예시는, 'Interstellar'를 보고 감상평을 쓴 글이다. 하고 싶은 task는 해당 감상평이 영화에 대한 긍정적인 평가인가 부정적인 평가인가를 맞추는 것이다. 그럼 모델의 input으로 해당 글이 들어가야하는데, 어떻게 들어가야할까?
모든 단어들을 Input으로 받아 긍정인지 부정인지 맞춰야할까? 하지만 사람의 쓴 글은 글자의 개수가 모두 똑같지 않기 때문에, 위와같이 모든 단어들을 input으로 사용하기는 어렵다.
우리는 이제부터 우리가 사용하는 '자연어'를 어떻게 model의 input으로 사용할 수 있을지 알아 볼 것이다.
One-hot Vector/Encoding
하지만 one-hot vector로 모두 변경해주면 문제가 생긴다. 아래 표에서도 볼 수 있듯이, 대부분의 숫자가 0이고, unique한 단어 개수만큼 dimension이 커지기 때문에, memory 사용양과 computation time이 증가하게 된다. 이건 매우 unefficient하다.
그렇다면 이렇게 고차원인 데이터를 줄이는 방법은 없을까?라고 생각해 볼 수 있다.
이러한 생각은 Mainfold Hypothesis에 의해 가능하다고 생각되어진다. Mainfold Hypothesis란, 고차원 데이터라 할지라도 해당 정보를 잘 가지고 있는 저차원의 mainfold가 존재한다는 것이다. 이것을 잘 활용한 모델이 'Autoencoder'이다.
Word Embedding: Word2Vec
위에서 단어를 one-hot vector로 만들어 사용해주면 생기는 문제점들에 대해 알아 보았고, 차원을 감소를 통해 더 좋은 단어 embedding을 만들려고한다. 이것이 word embedding이다.
Word2Vec은 Word Embedding을 대표하는 embedding 방법이다. Word2Vec은 비슷한 단어는 비슷한 문맥에서 나온다는 Distributional Hypothesis를 가정하고 사용되었다.
위 그림과 같이, 뉴스에서 President ~ said yesterday와 같은 문맥에서 ~은 아주 유사하다는 것을 이용한다. 해당 ~에 나오는 단어 Moon, Trump와 Jinping은 모두 한 국가의 원수를 뜻한다. 이런식으로 학습하는 방식을 Word2Vec에서 CBOW 방식이라고한다.
Word2Vec(CBOW) : Continuous Bag of Words
위 그림과 같이 해당 문장이 있으면, 앞뒤 단어(officials, president, sai, yesterday)를 input으로 사용하여 중간 글자인 Trump를 학습시키는 것이다. 있는 위에서 언급한 ~이라는 단어가 같은 문맥에서 나온다는 것을 이용한 것이다.
좀 더 자세히 살펴보자. Input으로는 우리가 앞서 알아보았던, one-hot vector가 들어간다.(ex, officials=[0,1,...0], President=[0,0,....,1,0]) 그럼 해당 one-hot vector들이 Leanable matrix, 즉 차원을 축소시켜주는 matrix와 곱해져, 새로운 vector를 생성해준다. 그림으로 하면 아래와 같다.
w(t-2), w(t-1), w(t+1), w(t+2)는 앞뒤 단어들이고, 해당 one-hot vector를 learnable matrix와 곱해준다. 물론 learnable matrix의 크기는 N(줄이고자하는 차원의크기)X V(Input vector/one-hot vector의 크기이다.
이번에는 Learnable matrix의 학습원리를 알아보자.
위와 같이, 학습하려는 앞,뒤의 단어들을 합하거나 평균낸 값을 이용해 Learnable matrix와 곱해주면 1XV 차원의 vector를 가질 수 있다.
1XV 차원의 vector를 softmax를 통해 해당 vector가 어떤 one-hot vector였는지, 예측하게되고, 실제 one-hot vector와의 차이를 이용해 학습하게된다.
Word2Vec(Skip-gram) : Skip gram
Difference between CBOW and Skip-gram
Techniques in Word2Vec
Future Embedding