아래 글에서 이 블로그에서 리뷰한 논문들의 흐름과 분야별 분류를 한 눈에 볼 수 있다.
아래 글에서 얘기한 word2vec방법을 처음으로 제시하는 논문이다. 스탠포드 강의 사이트에 같이 읽을 거리로 올라와 있어 읽어보았다.
2025.11.10 - [자연어처리(NLP)] - [NLP 이론] Stanford CS224N - Lecture 1 : Intro and Word Vectors
[NLP 이론] Stanford CS224N - Lecture 1 : Intro and Word Vectors
친구와 같이 스탠포드 대학교의 자연어처리(NLP) 수업을 들어보기로 했다.수업영상은 유튜브에 업로드 되어있다.영상은 아래 링크를 참고하면 된다. https://www.youtube.com/watch?v=DzpHeXVSC5I&list=PLoROMvodv
april2901.tistory.com
Abstract
이 논문은 매우 큰 데이터셋으로부터 단어의 연속적인 벡터 표현(continuous vector representations)을 계산하기 위한 두 가지 새로운 모델 구조를 제안했다.
이러한 벡터 표현의 품질은 단어 유사도(word similarity)측정과, 기존의 기법들과 비교를 통해 평가했다.
그 결과, 훨씬 낮은 계산 비용으로도 정확도가 크게 향상됨을 관찰했다.
예를 들어, 16억 개의 단어로 이루어진 데이터셋에서도 하루 미만의 시간으로 고품질 단어 벡터를 학습할 수 있었다.
1. Introduction
이 논문 이전까지는 단어간의 유사성은 생각하지 않고 인덱스로 표현하는 방법을 사용했다.
그 이유는 이런 많은 데이터의 단순한 시스템이 적은 데이터의 복잡한 시스템보다 더 성능이 좋았기 때문이다.
N-gram 모델이 이런 많은 데이터의 단순한 시스템의 예시이다.
하지만 이런 방법은 한계가 있다.
대규모 데이터는 항상 구할 수 있는 것이 아니기 때문에 모델 사이즈를 키우기만 한다고 성능이 올라가지 않는다.
머신러닝의 발전으로 더 복잡한 모델을 큰 데이터에서 학습시키는 것이 가능해졌고, 이 중 가장 성공적인 것은 distributed representations of words 방법이다.
1.1. Goals of the paper
이 논문의 목표는 큰 데이터 셋에서도 고품질의 word vector를 효과적으로 학습하는 것이다.
모델의 퀄리티는 최근 나온 단어 유사성을 활용해 측정한다.
단어 벡터는 단순 유사성을 넘어서
vector("King") – vector("Man") + vector("Woman") ≈ vector("Queen")
같은 선형적 의미관계도 표현 가능하다.
이런 관계를 보존하도록 새로운 방법을 개발하는 것이 목표이다.
2. Model Architectures

밑에서 얘기하는 training complexity는 위에서 얘기한 계산 복잡도라고 생각하면 된다.

2.1. Feedforward Neural Net Language Model (NNLM)
NNLM이라는 옛날 모델을 한번 보고가자.
이 모델은 총 4개의 층으로 구분되어 있다.

여기서 결과인 1xV차원의 벡터는 각 단어의 확률을 softmax를 통해 구한것이다.
즉 이 모델은 N개의 one hot 방식의 단어벡터를 입력으로 받아 그 뒤에 올 단어의 확률을 예측한다.
NNLM에서 한번의 training에는 아래와 같은 만큼의 연산량이 요구된다.
$Q=N×D+N×D×H+H×V$
- N × D: 원핫을 embedding으로 변환하는 비용
- N × D × H: projection → hidden 계산
- H × V: hidden → softmax 출력 계산
여기서 마지막의 $H \times V$가 제일 비싼 항이다.
이 비용을 줄이기 위해 계층적 softmax나 training중에 normalize하지 않는 모델을 사용하는 것과 같은 방법을 사용할 수 있다.
만약 binary tree라는 방식으로 단어들을 표현하게 되면 softmax의 결과 차원을 $log_2 V$까지 줄일 수 있다.
이렇게 되면 $N × D × H$이 가장 중요한 항이 된다.
binary tree 방식은 이진수처럼 0과 1의 문자열로 단어를 나타내는 방법이기 때문에 n개의 문자열로 $2^n$개의 단어를 표현할 수 있기 때문이다.
이 논문에서는 Huffman Tree 기반 hierarchical softmax를 사용한다.
단어 빈도에 따라, 자주 등장하는 단어는 짧은 코드로, 드물게 등장하는 코드는 긴 코드로 표현하면 실제로는 $log_2 V$ 보다도 비용이 더 줄어든다.
하지만 이렇게 하더라도 전체적인 layer구조는 바뀌지 않았다.
그래서 huffman tree를 사용하더라도 $N × D × H$이 가장 중요한 항인 것은 바뀌지 않았다.
이로 인한 speed up 제한을 없애기 위해 이 논문에서 소개할 모델 두개인 Skip-gram, CBOW는 hidden layer를 없앴다.
2.2. Recurrent Neural Net Language Model (RNNLM)
기존 NNLM의 한계를 해결하기 위해 RNN기반의 모델이 제안되었다.
2.1에서 본 기존의 NNLM은 N을 명시적으로 지정해야했고, 모델 구조가 단순해 패턴학습이 좋지 않았다.
하지만 RNN기반 모델은 이론적으로 긴 문맥을 처리할 수 있고, 시간순서에 따라 hidden state를 업데이트 하므로 문장 구조같은 복잡한 패턴도 표현 가능하다.

RNN에서 hidden state는 아래와 같은 식으로 업데이트 된다.
식을 보면 이전 state를 입력으로 받기 때문에 일종의 기억을 활용한다고 볼 수 있다.

이 모델에서 계산 비용은
$Q=H\times H + H \times V$
으로 계산할 수 있다.
여기서 $H\times H$는 위 식의 $W_{hh}$의 계산 비용이다.
여기에 계층적 softmax를 적용하면 아래처럼 비용을 줄 일 수 있다.

이렇게 줄이면 이제 연산량에 중요한 항은 $H \times H$이다.
2.3. Parallel Training of Neural Networks
이 논문에서는 매우 많은 데이터를 학습시키기 위해 DistBelief라는 분산 시스템을 이용해 많은 replica 모델을 여러 CPU 머신에서 동시에 돌리고, 파라미터 서버를 통해 비동기적으로 업데이트하는 방식으로 초대형 데이터를 빠르게 학습했다.
3. New Log-linear Models
기존 모델들은 비선형인 hidden layer 때문에 계산량이 크다.
따라서 hidden layer을 단순화 하거나 없앤 두 개의 모델을 소개한다. (Skip-gram , CBOW)
3.1. Continuous Bag-of-Words Model (CBOW)
기존 NNLM과 비슷하지만 중간의 비선형(hidden) 레이어를 제거하고, projection layer(임베딩 레이어)를 모든 단어가 공유한다.
여러개의 입력 단어들이 임베딩으로 변환되고,
이 벡터들을 평균 또는 합을 해 하나의 벡터로 만든다.
단어 순서는 무시하는데, 그냥 가방 같은 것에 들어있다고 생각할 수 있어 이 모델 이름인 Bag of Word가 나왔다.
어떤 단어 기준 전후의 단어를 모두 사용해 학습힌다.
이 CBOW의 계산복잡도는 아래와 같다.
N : 문맥 단어의 수. 예를 들어 전후로 각 4개씩의 단어를 사용해 학습한다면 N=8이다.
D : 임베딩의 차원이다.

입력 단어는 one hot 방식이므로 1 x V 차원인데, 이를 임베딩하여 1 x D차원으로 바꾼다.
이 벡터 여러개를 평균을 내도 차원은 그대로 1 x D이다.
<hierarchical softmax>
계층적 softmax는 binary tree를 생각하면 되고, 각 노드별로 가중치 행렬이 따로 있다.
위에서 구한 평균벡터를 각 노드의 가중치 행렬과 곱해 스칼라 값을 얻는다.
이 값과 정답결과(왼쪽으로 가야하면 0, 오른쪽으로 가야하면1)의 차이를 loss로 생각하고 학습을 한다.
(internal)노드의 수는 V-1이지만 leaf node까지 가는 경로에는 $log_2 V$만큼의 노드만 있기 때문에 계산은 줄어든다.
CBOW에서 일반 softmax는 너무 비싸서 사용하지 않는다.
3.2. Continuous Skip-gram Model
이 모델은 CBOW와 반대 구조를 갖는다.
CBOW : 문맥 → 가운데 단어 예측
Skip-gram : 현재 단어 → 주변 단어 예측
$C$값을 설정하므로써 주변 단어의 범위를 정할 수 있다.
당연히 이 값이 커지면 정확해지지만 그만큼 계산량도 증가한다.
아래는 이 Skip-gram의 계산복잡도이다.

마찬가지로 D는 임베딩 차원, V는 총 단어 수를 의미한다.
<과정>
현재 단어를 임베딩해 차원을 줄인다.
선택된 단어의 주변 단어에 정답 label을 붙인다.
해당 단어마다 예측을 실행한다.
loss 를 구하고 gradient를 구해 임베딩 행렬과 internal node 가중치 행렬 값을 업데이트한다.
아래는 이 논문에서 비교된 3가지 모델에 대한 정리 표이다.
| 기존 NNLM | Input | N×V (one-hot) | - | - | 과거 N단어 입력 |
| Projection | N×V → N×D | W_emb (V×D) | N×D | 각 단어 임베딩 | |
| Hidden | N×D → H | W_h (N×D × H) | H | tanh/ReLU 비선형 | |
| Output | H → V | W_out (H×V) | 1×V | softmax | |
| CBOW | Input | N×V | - | - | 문맥 단어 |
| Projection | N×V → N×D, 평균 | W_emb (V×D) | 1×D | 평균 → context vector | |
| Output | 1×D → V | W_out ((V-1)×D) | 1×V | hierarchical softmax | |
| Skip-gram | Input | 1×V (target word) | - | - | 단어 하나 입력 |
| Projection | 1×V → D | W_emb (V×D) | 1×D | target word embedding | |
| Output | 1×D → N×V | W_out (D×V) | N×V | 주변 단어 예측, hierarchical softmax |

4. Results
이전 연구에서는 단순히 그 단어와 비슷한 단어를 보여주는 방식으로 평가했다.
하지만 벡터를 활용하면 비교급/최상급 등의 단어관계, 나라와 수도 관계 등 복잡한 의미관계도 파악할 수 있다.
4.1. Task Description
<test set, 질문생성, 정답기준>
평가를 위해 종합테스트 세트를 정의했다.
이 세트는 5종의 의미질문 + 9종의 문법질문으로 구성되어있다.
의미질문 8800개, 문법질문 10600개 정도를 구성했다.
아래 표에 보이는 word pair들을 수작업으로 생성하고 이 중 두 쌍을 선택해 질문을 생성했다.
이때 벡터 계산을 통해 얻은 값과 가장 가까운 벡터가 실제 답하고 맞아야 정답으로 판별한다.

의미, 문법의 카테고리별로 정확도를 측정하는 방식으로 평가를 했다.
4.2. Maximization of Accuracy
4.2는 하나의 모델에 대한 실험이다.
처음에는 빈도가 가장 높은 3만개의 단어로 테스트를 진행했다.
이후 단어 벡터 차원과 학습 데이터 양을 변화시키며 실험해 아래 표의 결과를 얻을 수 있었다.
두 가지를 동시에 늘릴 때 좋은 테스트 결과를 볼 수 있다.

4.3. Comparison of Model Architectures
4.3항목은 모델의 변화에 대한 실험이다.
RNNLM : syntactic에서만 좋은 결과를 보여준다.
NNLM : RNNLM보다 syntactic결과가 좋아졌는데, non-linear hidden layer덕분이다.
CBOW : syntactic에서 NNLM보다 우수, semantic은 NNLM과 비슷
Skip-gram: syntactic은 CBOW보다 약간 낮고, semantic에서는 모든 모델 중 최고

아래 표는 CBOW는 하루, skip gram은 3일동안 훈련시키고 측정한 결과이다.
다른 모델들은 긴 시간 학습을 시켰음에도 이 모델들을 정확성에서 이긴 것을 볼 수 있다.

또한 아래의 표의 내용은 데이터 양을 2배로 늘려 1epoch만 학습시키는 것이 더 성능이 좋다는 것을 보여준다.

4.4. Large Scale Parallel Training of Models
이 부분의 내용을 요약하자면 분산학습을 시켜도 효율적으로 학습이 가능했다는 것이다.
4.5. Microsoft Research Sentence Completion Challenge
빈칸 채우기 문제인 Microsoft Sentence Completion Challenge 를 통해 평가했다.
현재 Skip-gram 단독으로는 LSA보다 높은 성능이 아니지만, RNNLM과 조합하면 보완이 가능하다.
5. Examples of the Learned Relationships
이부분은 단어 사이 관계의 예시를 보여주는데 이 내용은 스탠포드 강의를 듣고 정리한 글에서도 나와있으니 생략하고 넘어가자.
6. Conclusion
이 논문에서 다룬 연구 내용을 요약하자면,
다양한 모델을 문법/의미 카테고리로 나눠 테스트를 진행했으며
단순한 모델 CBOW, Skip-gram으로도 고품질의 학습이 가능했다.
계산 복잡도가 낮아 대규모 데이터에서도 학습이 가능하고,
분산 학습을 사용하면 거의 단어수에 제한이 없는 수준의 학습이 가능하다.
'AI > 자연어처리(NLP)' 카테고리의 다른 글
| [Stanford 강의] Lecture 3 : Backpropagation, Neural Network (2) | 2025.11.23 |
|---|---|
| [NLP 논문] Distributed Representations of Words and Phrasesand their Compositionality (0) | 2025.11.20 |
| [Stanford 강의] Lecture 2 : Word Vectors and Language Models (0) | 2025.11.15 |
| [Fine Tuning] PEFT(Parameter-Efficient Fine-Tuning) : LoRA, QLoRA (2) | 2025.11.11 |
| [Stanford 강의] Lecture 1 : Intro and Word Vectors (2) | 2025.11.10 |