Deep Learning

Word2VeC (Cbow , Skip-gram)

판교데싸 2021. 4. 14. 15:42

 

 

 

* Sparse Representation

벡터 또는 행렬(matrix)의 값이 대부분이 0으로 표현되는 방법 -> 희소표현

-> 이것은 각 단어간 유사성을 표현 할 수 없음

그래서 나온 것이 단어의 '의미'를 다차원 공간에 벡터화하는 방법인 분산표현이 나옴 

이렇게 분산 표현을 이용하여 단어의 유사도를 벡터화하는 작업 -> 워드 임베딩(embedding) 

 

* 분산 표현(Distributed Representation)

기본적으로 분포 가설(distributional hypothesis)이라는 가정 하에 만들어진 표현 방법

->  '비슷한 위치에서 등장하는 단어들은 비슷한 의미를 가진다'라는 가정

 분포 가설에 따라서 저런 내용을 가진 텍스트를 벡터화한다면 저 단어들은 의미적으로 가까운 단어가 되고

원핫이 아닌 Word2Vec로 임베딩 된 벡터는 굳이 벡터의 차원이 단어 집합의 크기가 될 필요가 없습니다.

강아지란 단어를 표현하기 위해 사용자가 설정한 차원을 가지는 벡터가 되면서 각 차원은 실수형의 값을 가집니다.

Ex) 강아지 = [0.2 0.3 0.5 0.7 0.2 ... 중략 ... 0.2]

요약하면 희소 표현이 고차원에 각 차원이 분리된 표현 방법이었다면, 분산 표현은 저차원에 단어의 의미를 여러 차원에다가 분산하여 표현을 하고 이런 표현 방법을 사용하면 단어 간 유사도를 계산할 수 있습니다.

 

단어 임베딩(embedding) 방법론인 Word2Vec -> 단어를 벡터로 바꿔주는 알고리즘

Word2Vec - 단어를 벡터로 바꾸는 방법론으로 크게 CBOW(Continuous Bag of Words) Skip-Gram 두 가지 방식

 

2. CBOW

 

예문 : "The fat cat sat on the mat"
예를 들어서 갖고 있는 코퍼스에 위와 같은 문장이 있다고 합시다. 가운데 단어를 예측하는 것이 CBOW라고 했습니다. {"The", "fat", "cat", "on", "the", "mat"}으로부터 sat을 예측하는 것은 CBOW가 하는 일입니다. 이 때 예측해야하는 단어 sat을 중심 단어(center word)라고 하고, 예측에 사용되는 단어들을 주변 단어(context word)라고 합니다.

중심 단어를 예측하기 위해서 앞, 뒤로 몇 개의 단어를 볼지를 결정했다면 이 범위를 윈도우(window)라고 하고

예를 들어서 윈도우 크기가 2이고, 예측하고자 하는 중심 단어가 sat이라고 한다면 앞의 두 단어인 fat와 cat,

그리고 뒤의 두 단어인 on, the를 참고

윈도우 크기가 n이라고 한다면, 실제 중심 단어를 예측하기 위해 참고하려고 하는 주변 단어의 개수는 2n이 된다

 

이 식을 최대화하는 것은 중심단어로 주변단어를 잘 맞춘다는 의미

즉 ‘외나무다리’가 등장했을 때 ‘원수’라는 표현이 나올 것이라는 사실을 예측

윈도우 크기를 정했다면, 윈도우를 계속 움직여서 주변 단어와 중심 단어 선택을 바꿔가며 학습을 위한 데이터 셋을 만들 수 있는데, 이 방법을 슬라이딩 윈도우(sliding window)라고 합니다.

위 그림에서 좌측의 중심 단어와 주변 단어의 변화는 윈도우 크기가 2일때,

슬라이딩 윈도우가 어떤 식으로 이루어지면서 데이터 셋을 만드는지 보여주고

또한 Word2Vec에서 입력은 모두 원-핫 벡터가 되어야 하는데, 위의 우측 그림은 중심 단어와 주변 단어를 어떻게 선택했을 때에 따라서 각각 어떤 원-핫 벡터가 되는지를 보여준다

위 그림은 결국 CBOW를 위한 전체 데이터 셋을 보여주는 것

 

 

3. Skip-gram

 

CBOW에서는 주변 단어를 통해 중심 단어를 예측했다면, Skip-gram은 중심 단어에서 주변 단어를 예측

 

 

중심 단어에 대해서 주변 단어를 예측하므로 투사층에서 벡터들의 평균을 구하는 과정은 없습니다. 여러 논문에서 성능 비교를 진행했을 때, 전반적으로 Skip-gram이 CBOW보다 성능이 좋다고 알려져 있음

 

반응형

'Deep Learning' 카테고리의 다른 글

Markov Reward Process  (0) 2022.05.15
강화학습 (Reinforcement Learning)  (0) 2022.05.13
BERT의 학습 원리 및 transferlearning  (0) 2021.04.14
keras - Image generator  (0) 2020.11.27
전통 데이터마이닝 vs 딥러닝  (0) 2020.10.04
반응형