Word2Vec은 내 블로그에서 이미 다룬적이 있는 내용이다.
하지만 Doc2Vec은 Word2Vec의 응용형으로 생각 할 수 있기 때문에
다시한번 집는 동시에 이미지를 이용한 공간적 이해를 정확하게 해보면 좋을 것이다.
Word2Vec
단어 임베딩으로써 Word2Vec의 기본 개념은
1. 타깃단어와 문맥단어(주변단어)를 문장 내에서 선택한다.
(window 사이즈(주변단어로 몇개까지 인정할것인가)를 정해놓아야 한다.)
2. 타깃단어와 문맥단어의 벡터 공간상 비슷한 공간에 위치하도록 한다.
(유사한 방향을 보도록 = 코사인 유사도가 크도록)
3. 동시에 문맥단어가 아닌 단어(negative sample에서 negative word)들을 몇개 뽑아(negative sampling)
다른 방향으로 놓는다.
4. 이를 만족하는 학습을 통해 얻어진 벡터들을 단어벡터로 활용한다.
이때 벡터 공간상 비슷한 공간에 위치하도록 놓는 데에 Softmax regression이 활용된다.
Softmax regression은 Logistic regression(2개 구분)의 여러개 구분 버전이므로 Logistic regression을 먼저 설명하겠다.
설명에 필요한 그림과 식의 출처는 다음과 같다.
(https://lovit.github.io/nlp/machine%20learning/2018/03/22/logistic_regression/)
다음과 같은 파란색 점들과 빨간색 점들을 구분하려면 저 중간의 경계 면이 필요할 것이다.
이를 어떻게 구할 수 있을까?
우리는 저 경계면을 𝜽Tx 라고 할 것이다.
매개변수(학습을 통해 조정되는 변수) 벡터 𝜽(1) 와 현재 공간상 파란색 점들의 벡터와 내적을 하여
그 값이 높이 나오도록 하는 벡터 𝜽(1)을 구할 것이다. 𝜽(2)도 방법은 똑같지만 빨간색 점에 대해서 학습한다.
그렇다면 𝜽(1),𝜽(2)는 어떤 벡터일까?
원점이 노란색 점인 경우 바로 다음과 같을 것이다. 왜냐하면 각 색깔에 해당하는 값들과 내적을 했을 때 가장 큰 방향으로 벡터가 위치해야 하기 때문이다.
학습이 완료된 이후에는 , 저 내적 값들을 위의 식과 같이 확률로써 표현하여(각 확률/전체 확률) 다른 무작위 점의 색깔을 찾는것도 가능 할 것이다(그 점의 벡터와 각 공간상 대표벡터 𝜽(1) 𝜽(2)간의 내적중 큰 것의 색깔을 따라간다.)
확률로써 표현한 식은 다음과 같다(각 항에 붙어있는 -는 모두 없애도 식은 똑같다)
이를 2개의 구분 (이진분류,binary classification)이 아닌 3개 이상의 구분을 Softmax regression이라 한다.
이름이 Softmax인 이유는 단순히 이진분류에서는 0과1(negative or positive)만 구분하면 되었기 때문에 sigmoid나 tanh를 이용하여 0.5를 기준으로 두 영역으로 구분 가능했지만, 3개 이상 구분하려면 이로는 부족해 전체 확률을 1로 놓고 각 상황을 택할 확률이 1을 나눠가져 감으로써 구분했기 때문이다.
직접 해본다면
다음과 같이 대표 벡터들이 각 별표에 해당되며 원점을 중심으로 잘 구분하였음을 알 수 있다.
하지만 값들이 한쪽으로 쏠리게 되면
다음과 같이 대표 벡터가 해당 집단으로부터 멀리 떨어진 것을 볼 수 있다.
그 이유는 각 영역에 해당하는 대표 벡터간의 유사도를 최대한 줄이기 위해 벡터들은 원점을 중심으로 뻗어나가야 함과 동시에 서로 다른 방향을 최대한 보려고 했기 때문이다.
더 자세히 풀어보면
각 클래스(색깔)에 해당하는 정보의 수는 같아
확률 1이라는 파이를 똑같이 1/5씩 똑같이 나눠 가져야 하는데 파랑과 연초록 클래스가 균등한 원형 분포를 깨뜨렸다.
하지만 대표 벡터 방뱡은 여전히 같은 간격으로 원점에서 퍼져나가야 하므로 방향은 맞춰주되 그로인해 작아질 대표벡터와 각 정보간의 내적값을 보충해주기 위해 대표벡터의 크기가 늘어나 저런 공간에 위치하게 되는것이다.
단어 임베딩 관점에서 저 같은 색깔들의 점 벡터들은
문장 안에서 가까이, 그리고 동시에 자주 등장한 단어들로 볼 수 있다.
Doc2Vec
Doc2Vec은 문장 임베딩 방법으로써 단어 학습을 하는 과정에 문장의 document id를 학습할 때 같이 집어넣어 이들 단어들과 유사한 공간에 위치하게 됨으로써 단어와 문장간 의미관계를 document id에 함축한다.
학습 완료된 결과를 공간상에서 보면 다음과 같을 것이다.
같이 등장한 단어벡터들과 유사한 공간에 위치(유사한 방향)에 위치할 것이기 때문이다.
그리고 저 id 를 단어를 학습했던 문장의 벡터로 하여 문장 임베딩을 완료한다.
'Tensorflow 2 NLP(자연어처리) > 문장 임베딩' 카테고리의 다른 글
[4-5] 잠재 디리클레 할당(LDA, Latent Dirichlet Allocation)이란? + 베이즈 정리,깁스 샘플링 (0) | 2021.11.13 |
---|---|
[4-3] 잠재 의미 분석(LSA), TF-IDF를 이용한 문서 임베딩 (0) | 2021.11.13 |
[4-2] PCA(주성분 분석)와 SVD(특이값 분해) 차원축소를 완벽하게 이해하기 (0) | 2021.11.13 |
[4-1] 가중 임베딩, SIF(Smooth Inverse Frequency)란? (0) | 2021.11.13 |