워드투벡터 부정표본(Negative Sampling) 수식 완전 해부

이 논문은 Mikolov 등이 제안한 word2vec의 부정표본 기법을 수학적으로 유도한다. 원 논문의 식(4)를 단계별로 전개해 “관측 쌍은 데이터에서 왔고, 무작위 쌍은 데이터가 아니다”라는 이진 분류 관점으로 바꾸고, 로지스틱 시그모이드와 로그우도 형태의 최적화 목표를 얻는다. 또한 skip‑gram 모델과의 차이, 컨텍스트 정의, 서브샘플링 효과 등을 짚어준다.

저자: Yoav Goldberg, Omer Levy

이 논문은 word2vec 구현의 핵심인 부정표본(Negative Sampling) 방법을 수학적으로 상세히 풀어낸다. 먼저 저자들은 word2vec이 기반하고 있는 skip‑gram 모델을 소개한다. skip‑gram은 주어진 단어 w와 그 주변 컨텍스트 c의 조건부 확률 p(c|w) 를 최대화하는 방식으로, 전체 어휘 크기가 수십만에 달하므로 소프트맥스 계산이 비현실적이다. 이를 해결하기 위해 계층적 소프트맥스 등 다른 근사법이 제안되었지만, 부정표본은 완전히 다른 접근을 취한다. 부정표본은 (w, c) 쌍이 실제 코퍼스에서 추출된 양성 데이터인지, 무작위로 생성된 음성 데이터인지를 구분하는 이진 분류 문제로 전환한다. 양성 쌍에 대해 p(D=1|w,c;θ) 를 시그모이드 σ(v_c·v_w) 로 정의하고, 음성 쌍에 대해서는 1−p(D=1|w,c;θ)=σ(−v_c·v_w) 로 표현한다. 여기서 v_w와 v_c는 각각 단어와 컨텍스트의 d‑차원 임베딩 벡터이며, θ는 이들 벡터 전체를 의미한다. 목표 함수는 양성 쌍의 로그우도와 음성 쌍의 로그우도의 합을 최대화하는 형태가 된다. 수식으로는 ∑_{(w,c)∈D} log σ(v_c·v_w) + ∑_{(w,c)∈D'} log σ(−v_c·v_w) 이며, D'는 k 개의 음성 샘플을 각 양성 쌍마다 무작위로 추출해 만든 집합이다. 이때 음성 샘플은 전체 어휘의 unigram 분포를 3/4 제곱한 확률로 뽑는다. 이는 빈도가 높은 단어가 과도히 선택되는 것을 방지하고, 중간 빈도 단어가 학습에 더 많이 기여하도록 설계된 실용적인 트릭이다. 부정표본이 skip‑gram의 p(c|w) 를 직접 모델링하지 않는다는 점이 중요한 차이점이다. 대신 w와 c의 결합 분포를 추정한다. 이때 단어와 컨텍스트를 서로 다른 어휘집합으로 가정해 v_word와 v_context가 별개의 파라미터가 되도록 함으로써, 같은 형태의 단어가 같은 벡터가 되는 문제를 회피한다. 예를 들어 “dog”라는 단어와 “dog”라는 컨텍스트가 동일한 벡터라면 p(dog|dog) 가 비정상적으로 높아지는 상황을 방지한다. 구현상의 세부 사항으로는 동적 윈도우와 서브샘플링이 있다. 동적 윈도우는 최대 윈도우 크기 k 를 정해두고, 실제 컨텍스트를 선택할 때 1~k 사이를 균등하게 샘플링한다. 이는 학습 데이터에 다양한 거리의 컨텍스트를 포함시켜 모델이 더 풍부한 의미 정보를 학습하도록 돕는다. 서브샘플링은 최소 빈도 이하의 단어를 완전히 제외하고, 빈도가 높은 단어는 일정 확률로 삭제한다. 이 과정은 실제 텍스트에서 흔히 등장하는 ‘the’, ‘of’ 등 의미가 약한 단어들의 영향을 줄이고, 효과적인 윈도우 크기를 확대해 의미가 풍부한 컨텍스트를 더 많이 활용하게 만든다. 논문은 부정표본이 “양성 쌍의 내적을 크게, 음성 쌍의 내적을 작게” 만드는 직관적 목표를 갖지만, 이를 정량적으로 증명하기는 아직 어려움이 있다고 인정한다. 대신 분포적 가설(distributional hypothesis)과 일치한다는 점을 강조한다. 즉, 비슷한 컨텍스트에 자주 등장하는 단어들은 임베딩 공간에서 서로 가깝게 배치될 것이며, 이는 실제 여러 벤치마크에서 좋은 성능으로 검증된다. 결론적으로, 부정표본은 소프트맥스의 전역 정규화 비용을 회피하고, 로지스틱 회귀 기반의 이진 손실을 다중 음성 샘플과 결합해 효율적으로 학습한다는 점에서 word2vec의 성공을 가능하게 한 핵심 기술이다.

원본 논문

고화질 논문을 불러오는 중입니다...

댓글 및 학술 토론

Loading comments...

의견 남기기