일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Item2Vec
- ANNOY
- 부스트캠프 AI Tech
- Collaborative Filtering
- ALS
- Negative Sampling
- 백준
- Recommender System
- CV
- Dilated convolution
- 추천시스템
- SGNS
- Tacotron2
- TTS
- Neural Collaborative Filtering
- BOJ
- NEG
- 논문리뷰
- Ai
- CF
- Skip-gram
- FastSpeech2
- Noise Contrastive Estimation
- wavenet
- Implicit feedback
- Tacotron
- RecSys
- matrix factorization
- word2vec
- FastSpeech
- Today
- Total
devmoon
[논문 리뷰] Efficient Estimation of Word Representations in Vector Space 본문
[논문 리뷰] Efficient Estimation of Word Representations in Vector Space
Orca0917 2022. 12. 10. 00:56ABSTRACT
저자들은 이번 논문에서 단어들을 벡터 공간에 효과적으로 표현하는 2개의 새로운 모델을 소개한다. 각각의 모델들은 단어의 유사도를 기준으로 평가되었으며, 기존에 존재하던 신경망 기반의 모델들과 어떤 성능적 차이가 있는지 보여준다. 결과로 기존의 신경망 모델보다 더 적은 계산량을 가지고 훨씬 좋은 성능을 보임을 증명하였을 뿐만 아니라, 구문론적 그리고 의미론적 관점에서 단어의 유사도를 측정하는 성능이 저자들이 가진 데이터셋에 대해 SOTA에 해당하는 성능을 보였다.
INTRODUCTION
많은 NLP의 모델들 그리고 여러 기술들에서 단어를 가장 작은 단위로 다루게 된다. 단어를 기본 단위로 두게 되면 여러 장점들을 가져올 수 있는데 대표적으로 일단 단순하고 강건(Robust)하며 많은 데이터가 존재할 수 있도록 해준다. 특히 적은 데이터로 복잡한 모델을 학습하는 것보다 많은 데이터를 단순한 모델로 학습시키는 것이 성능이 더 좋게 나온 점을 보면 큰 장점이 될 수 있다.
하지만 많은 데이터가 있다고 해서 단순한 모델들이 좋은것만은 아니다. 그들만의 한계점도 존재하게 된다. 입력 데이터의 품질에도 그 결과가 많이 달라지고 데이터만으로 단순한 모델의 성능을 끌어올리는 데는 당연히 한계가 있다. 다행히 최근에 머신러닝 기술이 많이 발전함에 따라 더 큰 데이터셋을 사용하는 복잡한 모델을 학습시킬 수 있게 되었다.
Goals of the Paper
이 논문의 목표는 대용량 데이터셋에 포함된 10억개의 단어와 사전에 존재하는 100만 개의 단어들을 사용해서 단어를 벡터로 표현하는 기술을 선보이는 것이다. 당시에는 수 억 개의 단어를 낮은 차원 (50~100)의 벡터로 표현하는 것만 가능했었다. 저자들이 선보이고자 하는 것은 단어들을 벡터 공간에서 유사한 것끼리 묶는 것이 아니라, 여러 관점에서 유사한 것을 표현하는 것이다.
예를 들어, 논문에서는 King, Man, Woman을 벡터공간에 표현하고 vector(King) - vector(Man) + vector(Woman)을 했을 때, vector(Queen)을 얻어내는 것에 성공했다고 한다. King🤴🏻에서 Man👱🏻♂️을 빼게 되면 어떤 왕위👑라는 의미만 남게 되고 그 의미를 여성👱🏻♀️에게 씌었을 때 여왕👸🏻의 의미를 얻는 것이다.
다시 정리하자면, 단어 간의 위와 같은 선형 규칙성(Linear Regularities)을 보존하는 새로운 모델을 개발하여 의미론적인 벡터 연산의 정확도를 최대화하는 것이 논문의 목표이다.
MODEL ARCHITECTURES
사실 잘 알려진 Latent Semantic Analysis (LSA)와 Latent Dirichlet Allocation (LDA)를 포함하여 단어를 벡터로 표현하는 모델이 이미 존재한다. 하지만 본 논문에서는 LSA보다 Linear Regularities를 상당히 잘 보존하는 신경망 모델에 집중한다. LDA는 대용량 데이터셋에 대해 계산 복잡도가 높다는 단점이 있지만, 이번 논문에서 소개하는 모델은 이를 해결하였다. 이제부터 아래에서는 다른 모델들과 모델의 파라미터 수 비교를 통해 계산량을 줄이면서 정확도를 최대한 높이는 방법에 대해 소개한다.
아래에서 등장하는 모델들은 일반적으로 시간복잡도는 아래와 같으며 학습할 때는 SGD와 역전파를 사용하였다.
$$ \mathcal{O} = E \times T \times Q $$
- $E$: 학습(훈련) 에폭 수
- $T$: 학습 데이터셋에 포함된 단어의 수
- $Q$: 각 모델에서 정의된 복잡도
Feedforward Neural Net Language Model (NNLM)
NNLM모델은 입력층(input), 투사층(projection), 은닉층(hidden), 출력층(output)으로 구성되어 있다. 먼저 입력층에서 현재 $i$번째 단어를 학습하기 위해서 앞에 등장하는 $N$개의 단어를 사용하여 인코딩한다. 인코딩 된 벡터는 $V$차원의 벡터이며, $V$는 단어의 수를 말한다. 따라서 해당 단어의 위치만 1이고 나머지는 모두 0인 벡터라고 볼 수 있다.
$N$개의 벡터들은 이후에 $N \times D$차원의 투사층으로 보내지게 된다. 이 때, $N \times D$차원의 행렬은 학습할 때마다 공유된다. 따라서 한 개의 단어를 학습할 때, 오직 $N$개의 입력에 대한 연산만 하면 되기 때문에 꽤 가벼운 연산이라고 볼 수 있다.
NNLM이 복잡해지기 시작해지는 것은 이 투사층에서 은닉층으로 넘어갈 때이다. 만약, $N=10$으로 설정한다면, 투사층 $P$의 크기는 500~2000이 되고 은닉층 $H$의 크기는 500~1000이 된다. 여기에 더하여 은닉층에서는 모든 단어에 대한 확률을 계산해야 한다. 따라서 최종적으로 하나의 한 번의 학습을 하는데 필요한 계산 복잡도는 아래와 같다.
$$ \mathcal{Q} = N \times D + N \times D \times H + H \times V $$
위에서 가장 크게 증가하는 항은 $H \times V$인데, 이를 줄이기 위한 노력인 Hierarchical Softmax라는 연산이 존재한다. 이 hierarchical softmax를 사용하면 $H \times V$를 $H \times \log_2(V)$로 줄일 수 있고, 이 경우 전체 시간 복잡도를 지배하는 항은 $N \times D \times H$로 바뀌게 된다.
Recurrent Neural Net Language Model (RNNLM)
RNNLM은 위에서 살펴본 NNLM의 한계점을 극복하기 위해 제안된 모델이다. NNLM의 한계점으로는 $N$의 크기를 직접 설정해줘야 한다는 점이며 RNN을 사용하게 되면 얕은 신경망 모델보다 더 복잡한 모델들을 표현할 수 있다는 장점도 있다. 이 RNNLM모델의 경우, 투사층(Projection Layer)이 따로 존재하지 않는다.
이러한 모델의 특별한 점은 은닉층을 어느 정도의 시간차를 두고 스스로 연결시키는 구조이다. 이렇게 되면 일종의 단기기억을 하도록 유도할 수 있고, 이 정보가 현재에 영향을 미치면서 파라미터가 업데이트될 수 있다. RNNLM을 한번 학습하는 데 걸리는 시간 복잡도는 아래와 같다.
$$ \mathcal{Q} = H \times H + H \times V $$
NNLM에서는 단어들이 $D$차원의 벡터로 표현되었던 것과는 달리, RNNLM에서는 은닉층의 차원과 같은 $H$차원으로 만들어진다. 또한 NNLM과 마찬가지로 $H \times V$의 시간 복잡도는 Hierarchical Softmax를 사용해서 $H\log_2V$로 줄일 수 있다. 이 경우 전체 시간 복잡도를 지배하는 항은 $H \times H$이다.
Parallel Training of Neural Networks
저자들은 대용량 데이터셋을 사용하기 때문에, 이런 대용량 데이터셋에 대해 잘 학습하고 병렬처리가 가능한 딥러닝 프레임워크인 DistBelief를 사용하였다. DistBelief는 현재 딥러닝 프레임워크로 유명한 Google에서 만든 Tensor Flow의 조상이라고 한다. DistBelief를 통해 병렬적으로 서로 다른 모델이나 동일한 모델들을 실험할 수 있었다고 한다.
NEW LOG-LINEAR MODELS
이번 파트에서 저자들은 단어를 낮은 시간복잡도로 효율적으로 연속적인 벡터로 표현하는 2가지 새로운 모델을 소개한다. 위에서 보았듯이 주된 복잡도는 은닉층에서 발생하였다. 물론 이 은닉층이 신경망을 매우 매력적으로 만들어준 존재이긴 하지만, 신경망만큼 정확한 결과를 보여주지 못하더라도 효율적으로 계산이 가능한 단순한 모델을 찾기로 노력했다.
Continuous Bag-of-Words Model
처음으로 제안된 CBOW 구조는 NNLM과 상당히 유사할 수 있지만, 은닉층을 제거하고 투사 행렬(Projection Matrix)뿐만아니라 투사층까지 모든 단어에 대해 공유한다는 것에 차이가 있다. 저자들은 이런 모델의 구조를 단어의 순서에 상관없이 학습하기 때문에 bag-of-words 모델이라고 부르기로 하였다. 또한 CBOW는 N-gram처럼 이전의 단어를 사용하는 것이 아니라 앞으로 등장할 단어들도 같이 사용하기로 하였다. 예를 들어, 이전 4개의 단어와 앞으로 등장할 4개의 단어를 사용하여 현재 단어를 예측하는 방식이다. CBOW모델의 복잡도는 아래와 같다.
$$ \mathcal{Q} = N \times D + D \times \log_2V $$
Continuous Skip-gram Model
두 번째 구조인 Skip-gram은 앞서 소개한 CBOW와 유사하다. 차이점이 있다면 현재 단어를 이용해서 주변 단어를 예측하는 것이다. 예측하는 주변 단어의 범위를 늘릴수록 단어 벡터의 품질은 더 좋아지지만, 계산 복잡도도 함께 증가하는 단점이 존재하였다. 또한, 현재 단어로부터 더 멀리 떨어진 단어일수록 현재 단어와 연관성이 적기 때문에 적은 가중치를 부여하였다. Skip-gram의 복잡도는 아래와 같다.
$$ \mathcal{Q} = C \times (D + D \times \log_2V) $$
- $C$: 옳게 예측했다고 판정할 주변 단어의 범위 (현재 단어로부터 앞뒤로 $C$개씩)
RESULTS
먼저 저자는 평가를 하는 방법에 대해서 설명한다. 이전의 논문에서는 예제 단어와 유사한 단어들을 보여주는 표를 사용했었다. 예를 들어, France가 예제 단어라면 유사단어로 Italy를 말하는 것이다. 하지만 이런 방식은 더 복잡한 유사성을 다루는 문제에 대해서는 이런 단어들을 다루는 것이 정확한 평가를 하기 어렵다고 말한다. 논문 초반에 저자는 단어들 사이에는 다양한 종류의 유사성이 존재한다고 했다. 예를 들어 big-bigger, small-smaller는 비슷한 맥락에서 유사도를 갖고, 마찬가지로 big-biggest, small-smallest 쌍도 비슷한 맥락에서 유사도를 갖는다.
이런 단어쌍 2개를 사용해서 같은 맥락에 존재하는지 알아내기 위해 다음과 같은 질문을 모델에게 해볼 수 있다. "biggest가 big와 유사한 맥락에서 small과 비슷한 단어는 무엇인가?" 다소 놀랍게 이 질문에 대한 답변은 간단한 벡터 연산으로 다루는 것이 가능하다.
$$ X = vector("biggest") - vector("big") + vector("small") $$
그리고 벡터공간 상에서 $X$와 코사인 유사도가 가장 큰 단어를 찾아서 정답으로 찾아내는 것이다.
Task Description
위의 질의 처리 방법으로 연산을 하며 코사인 유사도로 구했을 때, 가장 가까이 위치해 있는 단어가 정답과 정확히 일치하는 경우에만 정답으로 처리하였다. 다시 말해, 100%의 정확도를 갖는 것은 거의 불가능에 가깝다. 전체 데이터셋에는 8,869개의 의미론적 유사도를 갖는 단어 쌍과 10,675개의 구문론적 유사도를 갖는 단어 쌍이 존재한다.
Maximization of Accuracy
저자들은 Google News 말뭉치를 사용하여 모델의 학습을 진행했다. 이 말뭉치 데이터에는 약 6B개의 단어들이 존재한다. 저자들은 가장 자주 등장하는 단어들을 기준으로 1B개의 단어들을 학습에 사용하였다. 단어를 표현하는 벡터의 차원을 늘릴수록 정확도는 늘어났지만, 동시에 늘어나는 계산량으로 인해서 적절히 조절해야만 했다.
실험을 하다가 발견한 것은, 차원을 증가시키기만 하거나 데이터셋을 늘리기만 하는 것은 정확도의 증가율이 점차 낮아졌다고 한다. 따라서 차원과 데이터셋을 동시에 늘려 정확도의 증가폭을 더 늘렸다고 한다. 자세한 실험결과는 아래의 표에 나와있다.
Comparison of Model Architectures
이번에는 다른 모델들과의 평가를 진행한다. 정확한 평가를 위해서 표현되는 단어의 차원은 640으로, 학습에 사용되는 데이터셋의 크기도 모두 동일하게 고정시켰다.
RNN을 사용하여 학습한 모델은 문법적인 유사도를 묻는 질문에서 꽤 좋은 성능을 보여주었다. 그렇지만 NNLM 모델을 사용한 결과가 더 좋았고, CBOW는 NNLM보다 더 결과가 좋았으며 의미론적인 유사도를 묻는 질문에서는 비슷한 결과를 보여주었다. 마지막으로 Skip-gram 구조는 의미론적인 유사도를 묻는 과제에서 탁월한 성능을 보여주었고, 문법적인 유사도를 묻는 작업에서는 CBOW보다 살짝 못 미치는 성적을 보여주었다.
CONCLUSION
이번 논문을 통해서 저자는 여러 모델들을 통해서 얻은 다양한 단어 벡터의 표현을 확인하였다. 또한 많은 계산량을 요구하는 신경망 모델 구조를 사용하지 않고, 간단한 구조를 사용해서 높은 수준의 결과를 보임을 증명하였다. 특히 DistBelief 프레임워크를 사용해 아주 큰 데이터셋을 사용한 병렬 학습을 가능케 하였다.
기존의 신경망 모델을 사용하여 학습한 단어 벡터들은 NLP의 여러 분야에 적용되고 있다. 예로, 감정 분석, 문맥 감지 등이 있다. 이런 분야에 현재 발표한 모델을 적용시키면 장점 또는 이익을 가져다줄 수 있을 것으로 기대된다.