문제점 및 기여 부분
텍스트 데이터를 벡터화 하기 위해 가장 많이 사용된 One-Hot Encoding 방식 대신 새로운 방법론인 CBOW와 Skip-gram을 제시하며 Word2Vec의 대표적인 알고리즘으로 자리잡았다.
목차
- Introduction
- Models
- Results
1. Introduction
텍스트 데이터는 단어 혹은 문장이기 때문에 바로 학습할 수 없다. 그래서 학습을 위해 범주형 데이터를 수치형 데이터로 변환해줘야 하는데 기존에는 One-Hot Encoding 방식이 가장 많이 사용됐다.
One-Hot Encoding이란, 표현하고자 하는 단어를 1, 나머지 단어를 0으로 채운 (1, 단어 개수) 크기의 벡터이다. 위에 그림처럼 사과~참외까지의 거리가 100이라면 단어 개수는 100개이다. 따라서 귤과 오렌지는 (1, 100) 크기를 가지는 벡터이며 그 중 귤과 오렌지에 해당하는 index만 1이고 나머지는 0으로 채워진다. 단점으로 index 정보만 담겨 있으며, 단어 간 상관관계 및 유사성을 알 수 없고 0이 많다 보니 희소 표현 문제가 있다.
그래서 이러한 One-Hot Encoding보다 더 좋은 벡터화를 위해 Distributed로 Representation하면 된다. 그러면 위 그림과 같이 귤과 오렌지가 (1, 100) 크기의 벡터가 아닌 (1, 학습 차원)만큼의 크기를 가져 여러 차원으로 단어를 표현한다. 그리고 저자들은 뜻이 비슷한 단어들끼리 차원 내에 군집해있을 거라고 가설을 세웠다.
실제로 Distributed Representation된 단어들을 시각화 해봤을 때 군집되어 있었고 심지어 단어 간 유사성 연산까지 가능했다. 예로 들자면 $Queen$의 벡터를 구하기 위해서 $King - Man + Woman$을 수행하면 된다.
단어를 표현하기 위해 통계학 기반 모델과 신경망 기반 모델이 있는데 통계학 기반의 언어 모델은 대표적으로 N-gram이 있다. 그러나 대량의 데이터셋에서는 제대로 된 성능을 발휘하지 못 한다. 따라서 논문에서는 신경망 기반 모델을 사용해 대량의 데이터셋에서 고품질 vector를 학습하고자 했다. 모델은 총 4가지가 있으며 선행 연구된 NNLM, RNNLM과 논문에서 제안하는 CBOW, Skip-gram을 각각 비교했다. 모델 비교를 위한 수식은 다음과 같다.
$$O = E \times T \times Q$$
$O$는 모델 성능, $E$는 epoch, $T$는 train data size, $Q$는 model parameters를 뜻한다.
2. Models
모델은 총 4가지로 Feed Forward Neural Net Language Model (NNLM), Recurrent Neural Net Language Model (RNNLM), Continuous Bag-of-Words Model (CBOW), Continuous Skip-gram Model (Skip-gram)가 있다.
모델의 파라미터를 구하기 위한 수식에서 표기법은 다음과 같다.
- $N$: input word 개수
- $V$: vocabulary size
- $D$: word dimension
- $H$: hidden layer shape
2.1 Feed Forward Neural Net Language Model (NNLM)
Feed Forward Neural Net Language Model은 단방향으로 학습하며 한 단어를 학습하기 위해 N개의 이전 단어들을 본다.
N=4이고, 입력 데이터가 "What will the fat cat sit on"이며 sit을 맞추기 위한 과정은 위 그림과 같다.
Softmax와 CrossEntropy를 사용해 학습을 진행했고 모델 파라미터 $Q$는 projection layer + hidden layer + output layer이기 때문에 $(N \times D) + (N \times D \times H) + (H \times V)$이다.
NNLM은 두 가지 단점이 있는데 첫 번째는 N이 하이퍼 파라미터이기 때문에 사용자가 지정해줘야 하며, 두 번째는 단방향이기 때문에 미래 시점을 고려하지 않는다.
2.2 Recurrent Neural Net Language Model (RNNLM)
Recurrent Neural Net Language Model은 모델명에도 나와 있듯이 layer의 입력으로 전 단계의 layer 출력이 들어간다. 인공신경망의 Recurrent Convolutional Neural Network처럼 동작한다. 그래서 단어가 하나씩 순차적으로 입력되기 때문에 NNLM과 달리 N을 따로 지정할 필요가 없다. 모델 파라미터 $Q$는 hidden layer + output layer이기에 $(H \times H) + (H \times V)$이다.
NNLM과 RNNLM은 이 논문 이전에 선행 됐던 연구들로 단어를 잘 표현하기 위해 사용된 인공신경만 기반 모델이다. NNLM과 RNNLM을 소개한 이유는 선행 연구에 이런 게 있다라는 의미도 있지만 본 논문에서 완전한 새로운 알고리즘을 제시하기 보다 NNLM을 변형시켰기 때문이다. NNLM과 RNNLM은 공통적으로 hidden layer에서 가장 많은 연산량을 가져 복잡성이 크기 때문에 논문에서는 복잡성을 줄이고자 hidden layer를 제거했다.
2.3 Continuous Bag-of-Words Model (CBOW)
위에서 말했듯이 CBOW는 NNLM에서 hidden layer를 제거한 모델 구조를 갖는다. NNLM은 학습하고자 하는 단어를 기준으로 이전 N개를 입력 데이터로 넣었지만, CBOW는 학습하고자 하는 단어를 기준으로 양옆으로 N개를 입력 데이터로 넣는다. 즉, 양옆의 단어를 통해 해당 단어 표현을 학습한다. 위 그림은 'sat'을 학습하기 위해 양옆 2개씩을 입력 데이터로 넣은 것이다. 모델 파라미터 $Q$는 projection layer + output layer이기 때문에 $(N \times D) + (D \times V)$이다. 그런데 마지막 Softmax에서 계층적 Softmax를 사용하면 $(N \times D) + (D \times log2(V))$까지 파라미터 양을 줄일 수 있다.
양옆을 몇 개로 볼건지 정하는 window size를 1로 설정하고 sat을 예측하려고 할 때 위 그림과 같다. sat 양옆 단어인 One-Hot Encoding된 cat과 on을 입력 데이터로 넣으면 입력 데이터와 $V \times D$의 크기를 가지는 $W_{1}$을 곱한 후에 출력값들을 weight sum 해주고, weight sum한 값과 $D \times V$의 크기를 가지는 $W_{2}$을 곱한 후에 softmax 해주고 가장 높은 확률을 가지는 index를 찾아보면 sat과 매핑된다.
2.4 Continuous Skip-gram Model (Skip-gram)
Skip-gram은 매우 간단하다. 왜냐하면 CBOW와 구조가 반대이기 때문이다. 그렇기 때문에 CBOW를 이해했다면 Skip-gram 또한 쉽게 이해할 거다. 그래도 설명을 하자면 Skip-gram은 중심 단어 하나로 주변 단어 표현을 학습한다. 연산 방법도 CBOW의 반대로 작동한다.
Skip-gram의 모델 파라미터 $Q$는 단어 개수 * (projection layer + output layer)이기 때문에 $N * (D + D \times V)$이다. 일반적인 softmax가 아닌 계층적 softmax를 사용하면 $V$는 $log2(V)$로 연산량이 줄어든다.
3. Results
맨 처음 예시로 들었던 $Queen = King - Man + Woman$처럼 실제 동일한 값이 나오는지 확인했다. 예로 들자면 샘플 데이터 중 상단에 있는 $Athens = Greece - Norway + Oslo$가 증명이 되어야 한다.
Table 2에서 행은 Dimensionality로 차원 수를 나타내며 열은 Training words로 학습 데이터 수를 나타낸다. Table 2에서 보이듯이 차원과 학습 데이터 수가 비례해서 증가하면 증가할수록 성능 향상이 발생한다.
Table 3은 인공신경망 기반 모델은 NNLM, RNNLM, CBOW, Skip-gram의 성능을 비교한 표이다. 논문에서 제안하는 CBOW와 Skip-gram은 기존에 있던 NNLM, RNNLM보다 훨씬 좋은 성능을 보이며 Skip-gram은 일반적으로 준수한 성능을 나타내며 Syntactic Accuracy에 대해서 CBOW가 Skip-gram보다 앞선다.
현재 이 논문에서 제안한 단어 표현 방식이 자연어 처리를 하는데 있어 Word2Vec로 가장 많이 사용되고 있으며, CBOW와 Skip-gram 중 Skip-gram이 단어 하나로 주변 단어를 예측하기 때문에 더 성능이 좋아 Skip-gram이 많이 사용되는 것으로 알고 있다.
Reference
[1] https://arxiv.org/abs/1301.3781
[2] https://www.youtube.com/watch?v=sidPSG-EVDo
[3] https://cpm0722.github.io/paper-review/efficient-estimation-of-word-representations-in-vector-space
'~2023' 카테고리의 다른 글
[Streamlit] 손쉽게 프로토타입 만들기 (0) | 2023.04.28 |
---|---|
[티스토리] LaTex 설정해서 수식 표현하기 (0) | 2023.04.28 |
[네이버 부캠] 프로젝트1: 문장 간 유사도 측정(STS) 대회 정리 (0) | 2023.04.27 |
[Git] 특정 버전으로 되돌리기 (0) | 2023.04.27 |
[알고리즘] 그래프 탐색 기법을 코드로 이해하기 (0) | 2023.04.26 |