드디어 1강, Word Vectors !!
단어를 vector로 나타내는 두가지 방법, count-based model과 neural network model을 소개한다.
사람의 언어는 signifier(symbol)
에 mapping된 signified(idea, thing, ..)
로,
meaning을 전달하기 위해 word, phrase, 등을 사용한다.
NLP란, 이러한 사람의 언어를 컴퓨터로 하여금 이해할 수 있게 알고리즘을 설계하는 것이다.
컴퓨터에서 단어를 표현하기 위해서 wordnet
과 같이 유의어와 상의어 시소러스(사전)를 활용하기도 한다.
그런데 이 과정에서 뉘앙스, 새로운 의미, 신조어 등등
놓치는 부분이 당연히 생길 수 밖에 없고, 단어의 유사도도 알아내기 힘들다.
음 더 자세하게 단어를 컴퓨터가 이해하기 쉽게(=0과 1로) 표현하는 방법을 살펴보자.
One-hot vector
단어를 vector로 표현할 수 있는 가장 간단한 방법으로,
각 단어들을 해당 단어의 index에만 1, 나머지는 0인 vector로 나타낸다.
이때 단어의 유사도는 알 수 없으며, 단어의 개수가 많을수록 차원의 수가 커진다.
Distributional Hypothesis
동일한 context 내에서 사용되는 단어들은 비슷한 의미를 갖는다는 가설로,
단어 w가 출연할 떄, window size 내 단어들의 집합인 w의 context는 주위에 나타나며,
w의 많은 context를 통해 w의 representation을 생성한다.
word representation은 아래와 같이 분류된다.
이 중에서도, count-based model인 SVD
, neural network model에서는 word2vec
이 유명하다.
SVD: singular value decomposition
SVD가 nlp에도 쓰이는구나,, 싶었다!
각 문장에 대해 window size = 1인 co-occurence matrix를 생성하고,
SVD으로 차원축소를 진행한 후, M = U * sigma * V에서의 U가 각 word vector가 된다.
이 방법은 새로운 단어가 출현할때마다 matrix의 차원이 바뀌므로 매번 다시 계산해주어야 하고,
대부분 단어가 co-occur하지 않아 matrix가 sparse하며 높은 차원을 가지므로 cost가 높다.
그래서 이를 보완하기 위해 stop words를 제거하고, ramp window(단어의 거리가 떨어짐에 따라 다른 weight를 줌)를 적용하거나,
co-occurence matrix를 만들떄 단순 count말고 pearson correlation이나 negative count를 이용함으로서 이를 어느정도 보완한다.
word2vec
word2vec에는 CBow
, skip-gram
의 두가지 알고리즘이 있다.
CBow
주변 context 단어들로부터 하나의 target 단어를 예측하는 모델로, 단어의 순서를 고려하지 않는다.
Skip-gram
하나의 target으로부터 주위 context를 예측하는 모델이다.
추가적으로, computational efficiency를 향상시키기 위해서는
- Subsampling of Frequent words
-
자주 등장하는 단어는 학습을 덜 시키기 (the, a, in 등등)
-
단어들의 출현 빈도에 대해 아래와 같은 subsampling 적용
-
해당 단어가 subsampling될 확률
P(wi)
-
단어의 frequency
wi
, thresholdt
= 10^-5
-
-
- Hierarchical Softmax
-
마지막 softmax 층에서, 모든 단어 V 를 binary tree로 나타낸 Hierarchical Softmax를 사용하는 것 -
계산양이 log V 로 감소함 !! -
여기에 설명이 잘 되어있당 !!
-
각 node, child에 대해, 왼쪽 child node 에게는 1, 오른쪽 child node에게는 -1을 주는 방식
-
이때 각각 좌우 child node가 될 확률
-
- Negative Sampling
-
‘좋은 모델은
logistic regression
을 통해 noise를 구분할 수 있어야 한다’를 가정Noise Contrastive Estimation
의 변형
-
흔한 단어일수록 현재 target 단어와 더 연관성이 적을 것이라고 보고, 자주 등장하는 단어일수록 연관성이 낮을 것이라고 본 후 target 단어와 연관성이 없을 것이라고 추정되는 단어를 뽑는 것
-
현재 문장에 없는 단어를 전체 데이터 셋에서 추출해내는 것.
Optimization
cost function을 optimization하기 위해 gradient descent
방법을 사용한다.