* 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 |