Skip-gram
Skip-gram은 2013년 구글(Google)의 토마스 미콜로프(Tomas Mikolov) 연구팀이 제안한 Word2Vec 단어 임베딩의 핵심 아키텍처 중 하나다.
CBOW(Continuous Bag-of-Words)와 정확히 반대되는 구조를 가지며, 텍스트 데이터 내의 하나의 중심 단어(Target Word)를 입력값으로 받아 그 주변에 등장할 문맥 단어(Context Words)들을 예측하도록 설계된 인공 신경망 모델이다.
핵심 원리 및 구조 (Core Mechanism and Architecture)
- 학습 데이터 쌍(Pairs) 생성: 윈도우 크기(Window Size)를 설정하고, 중심 단어를 기준으로 앞뒤에 위치한 단어들을 각각 1:1 쌍으로 묶어 훈련 데이터를 구성한다. 예를 들어 “The quick brown fox”라는 문장에서 윈도우 크기가 2이고 중심 단어가 ‘brown’일 경우, (brown, The), (brown, quick), (brown, fox)라는 개별적인 입력-출력 쌍(Pairs)이 생성된다.
- 단일 입력과 은닉층 (Input to Hidden): 중심 단어의 원핫 인코딩(One-hot encoding) 벡터가 가중치 행렬과 곱해져 하나의 은닉층(Projection Layer) 상태로 투영된다. CBOW와 달리 여러 단어의 벡터를 평균 낼 필요가 없다.
- 다중 출력 예측 (Hidden to Output): 투영된 밀집 벡터를 바탕으로 출력층에서 해당 중심 단어 주변에 어떤 단어들이 나타날지 개별적으로 예측한다.
Skip-gram은 하나의 단어로 여러 단어를 예측하는 과정에서 학습 기회가 더 많이 주어지기 때문에, 코퍼스(Corpus) 내 등장 빈도가 낮은 희귀 단어(Rare words)의 의미를 표현하는 데 CBOW보다 훨씬 우수한 성능을 보인다.
학습 최적화 방법론 비교 (Standard vs. SGNS)
전체 어휘 사전(Vocabulary)의 크기가 클 경우, Skip-gram 알고리즘이 매 단계마다 전체 단어에 대해 소프트맥스(Softmax) 확률을 계산하는 것은 연산 비용 측면에서 매우 비효율적이다. 이를 해결하기 위해 실무에서는 주로 네거티브 샘플링(Negative Sampling) 기법을 결합하여 모델을 훈련한다.
| 비교 항목 | 기본 Skip-gram (Standard Softmax) | Skip-gram with Negative Sampling (SGNS) |
|---|---|---|
| 분류 방식 (Classification Mode) | 다중 클래스 분류 (Multi-class Classification) | 이진 분류 (Binary Classification) |
| 활성화 함수 (Activation Function) | 소프트맥스 (Softmax) | 시그모이드 (Sigmoid) |
| 연산 대상 (Computational Target) | 타겟 단어 1개 + 어휘 사전 내의 모든 나머지 단어 | 타겟 단어 1개 + 임의로 추출된 소수의 오답(Negative) 단어 (보통 5~20개) |
| 계산 복잡도 (Computational Cost) | 어휘 사전 크기()에 비례하여 연산량 극대화 | 추출된 샘플 수()에만 비례하므로 연산량 대폭 감소 |
| 실무 적용 (Practical Application) | 연산 병목 현상으로 인해 대규모 텍스트 훈련 시 사용 불가 | 오늘날 Word2Vec Skip-gram 모델을 훈련할 때 사용되는 사실상의 표준(De facto standard) |
출처 (Sources):
- Mikolov, T., Sutskever, I., Chen, K., Corrado, G. S., & Dean, J. (2013). “Distributed Representations of Words and Phrases and their Compositionality.” Advances in Neural Information Processing Systems (NeurIPS). (Skip-gram 모델과 네거티브 샘플링 기법이 소개된 핵심 논문)
- McCormick, C. (2016). “Word2Vec Tutorial - The Skip-Gram Model.” Chris McCormick Blog. (http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/)
- Stanford CS224N: Natural Language Processing with Deep Learning. “Lecture 1: Introduction and Word Vectors.” (http://web.stanford.edu/class/cs224n/)
- Goldberg, Y., & Levy, O. (2014). “word2vec Explained: deriving Mikolov et al.’s negative-sampling word-embedding method.” arXiv preprint arXiv:1402.3722. (https://arxiv.org/abs/1402.3722)