Ⅰ. 단어 임베딩의 개념과 전통적 방법론

단어 임베딩(Word Embedding)은 사람이 쓰는 자연어를 컴퓨터가 이해할 수 있도록 단어들을 밀집된 형태의 벡터(dense vector)로 변환하는 기술입니다. 초기 단어 표현 방식인 원-핫 인코딩(One-hot Encoding)은 단어의 의미를 전혀 담지 못하고 차원의 저주 문제가 있었지만, 분포 가설(Distributional Hypothesis)의 등장으로 새로운 전기를 맞습니다.

분포 가설은 "비슷한 위치(문맥)에 등장하는 단어는 비슷한 의미를 가진다"는 아이디어로, 이를 기반으로 단어의 의미를 벡터 공간에 표현하려는 시도가 이어졌습니다. LSA, Word2Vec, GloVe 모두 이 가설에 기반하고 있습니다.


Ⅱ. 행렬 기반 방식: LSA (Latent Semantic Analysis)

LSA(잠재 의미 분석)는 전체 문서-단어 행렬(Document-Term Matrix, DTM) 또는 단어-문맥 행렬(Term-Context Matrix)을 기반으로 단어의 의미를 벡터로 표현하는 대표적인 행렬 기반 방법론입니다.

1. 핵심 원리

LSA는 거대한 행렬에 **특이값 분해(Singular Value Decomposition, SVD)**라는 수학적 기법을 적용하여 행렬의 차원을 축소하고, 그 과정에서 단어 벡터를 얻습니다.

  • 입력: 문서와 단어의 등장 빈도를 기록한 거대한 행렬 (DTM 또는 Co-occurrence Matrix)
  • 과정: 이 행렬을 수학적으로 의미 있는 작은 행렬들()로 분해합니다. 여기서 행렬의 작은 특이값들을 제거하여 노이즈를 줄이고 핵심 의미 구조만 남깁니다.
  • 결과: 차원이 축소된 행렬에서 각 행(또는 열)이 해당 단어의 의미를 압축한 벡터, 즉 단어 임베딩 벡터가 됩니다.

2. 장점

  • 전체 데이터의 통계 정보 활용: 특정 문서나 문장이 아닌, 전체 코퍼스(Corpus)의 단어 사용 통계 정보를 종합적으로 활용하여 단어의 의미를 파악합니다. 이는 단어 간의 광범위한 관계(e.g., 동의어, 연관어)를 학습하는 데 유리합니다.
  • 의미 기반의 연산 가능: 벡터 공간에서 단어 벡터 간의 코사인 유사도 등을 통해 의미적 유사성을 계산할 수 있으며, 'king' - 'man' + 'woman' ≈ 'queen'과 같은 단어 유추(Word Analogy)도 어느 정도 가능합니다.

3. 한계점 (매우 중요)

  • Vector Space Structure 활용 비효율성: 이미지에서 지적한 대로, LSA는 전체 통계 정보(Global Statistical Information)를 사용하지만, 그 정보를 벡터 공간 구조에 효율적으로 담아내지 못합니다. 즉, 단어 유추(Word Analogy) 같은 선형적 관계를 학습하는 데 취약하며 성능이 떨어집니다. SVD라는 강력한 도구를 사용함에도 불구하고, 단어 의미의 미세한 관계를 벡터 공간에 정교하게 매핑하는 능력이 부족합니다.
  • 계산 복잡성: 코퍼스가 커지면 행렬의 크기도 기하급수적으로 커져 SVD 계산에 막대한 시간과 메모리가 필요합니다.
  • 새로운 단어 추가의 어려움: 새로운 단어가 추가되면 전체 행렬을 다시 만들고 처음부터 SVD 계산을 다시 해야 하는 경직된 구조입니다.

Ⅲ. 예측 기반 방식: Word2Vec (Word to Vector)

Word2Vec은 2013년 구글에서 제안한 모델로, 신경망을 기반으로 특정 단어 주변의 문맥(local context)을 예측하거나, 문맥을 통해 특정 단어를 예측하는 방식으로 단어 임베딩을 학습합니다.

1. 핵심 원리

Word2Vec은 두 가지 주요 모델 아키텍처를 가집니다.

  • CBOW (Continuous Bag-of-Words): 주변 단어들(문맥)이 주어졌을 때, 중앙에 있는 단어를 예측하는 모델입니다. ["나는", "___", "먹는다"] 라는 문맥에서 빈칸에 "밥을"이 올 확률을 높이는 방향으로 학습합니다.
  • Skip-gram: 중앙 단어가 주어졌을 때, 주변 단어들(문맥)을 예측하는 모델입니다. "밥을"이라는 단어가 주어졌을 때 ["나는", "먹는다"] 등을 예측하도록 학습합니다. 일반적으로 Skip-gram이 더 큰 데이터셋에서 성능이 좋다고 알려져 있습니다.

2. 장점

  • 선형 관계 학습: 'king' - 'man' + 'woman' ≈ 'queen'과 같은 단어 유추 문제를 LSA보다 훨씬 잘 해결합니다. 이는 단어의 의미적, 문법적 관계를 벡터 공간에 효과적으로 투영함을 의미합니다.
  • 계산 효율성: 전체 행렬을 한 번에 계산하는 LSA와 달리, 작은 크기의 문맥(local context window)을 슬라이딩하며 학습하므로 계산이 훨씬 효율적이고 대용량 데이터에도 적용하기 쉽습니다.

3. 한계점 (매우 중요)

  • 지역적 문맥(Local Context)에만 집중: Word2Vec은 학습 과정에서 설정된 윈도우 크기(window size) 내의 지역적 문맥 정보만 활용합니다. 이로 인해 코퍼스 전체에 걸친 포괄적인 통계 정보(Global Co-occurrence Counts)를 제대로 반영하지 못하는 단점이 있습니다. 예를 들어, 'ice'와 'steam'은 보통 같은 문장에 등장하지 않지만, 코퍼스 전체적으로 보면 둘 다 'water'라는 단어와 자주 함께 등장하는 패턴을 보입니다. Word2Vec은 이러한 전역적인 관계를 직접적으로 학습하기 어렵습니다.

Ⅳ. 통합 방식: GloVe (Global Vectors for Word Representation)

GloVe는 2014년 스탠포드 대학에서 제안한 모델로, LSA의 장점(전역 통계 정보 활용)과 Word2Vec의 장점(단어 유추 등 선형 관계 학습)을 모두 결합하려는 시도에서 탄생했습니다.

1. 제안 동기 및 핵심 주장 (이미지 내용)

  • 문제 제기: 기존의 단어 임베딩 학습은 모두 단어 동시 등장 통계(Co-occurrence Statistics)에 기반하는데, 어떻게 이 통계로부터 단어의 의미가 생성되는가? 어떤 통계적 특징이 의미 구별 능력을 제공하는가?
  • 핵심 주장: 단어의 의미를 포착하는 데에는 단순한 등장 빈도(raw probability)나 동시 등장 횟수 자체가 아니라, 동시 등장 확률의 비율(Ratio of Co-occurrence Probabilities)이 가장 중요하다!

2. 핵심 원리: 확률의 비율(Ratio)

GloVe의 아이디어를 이해하기 위해 이미지의 표를 살펴봅시다.

  • Probe Words (문맥 단어): k=solid, k=gas, k=water, k=fashion
  • Target Words (타겟 단어): ice, steam

우리가 알고 싶은 것은 'ice'와 'steam'의 의미 차이입니다.

  1. 'ice'와 관련이 깊고 'steam'과 관련이 먼 단어: solid
    • P(solid|ice) / P(solid|steam) = 8.9 -> 값이 1보다 훨씬 큼
  2. 'steam'과 관련이 깊고 'ice'와 관련이 먼 단어: gas
    • P(gas|ice) / P(gas|steam) = 8.5 x 10⁻² -> 값이 1보다 훨씬 작음
  3. 'ice'와 'steam' 모두와 관련이 있는 단어: water
    • P(water|ice) / P(water|steam) = 1.36 -> 값이 1에 가까움
  4. 'ice'와 'steam' 모두와 관련이 없는 단어: fashion
    • P(fashion|ice) / P(fashion|steam) = 0.96 -> 값이 1에 가까움

결론: 이 확률의 비율이야말로 ice와 steam의 의미적 차이를 명확하게 드러내는 척도입니다. GloVe는 바로 이 비율 정보를 단어 벡터 공간에 직접 인코딩하도록 모델을 설계했습니다.

이를 위해 GloVe는 손실 함수(Loss Function)를 다음과 같이 설계했습니다.

여기서 는 각각 중심 단어와 주변 단어의 벡터이며, $X_{ij}$는 단어 가 동시에 등장한 횟수입니다. 이 손실 함수는 두 벡터의 내적이 동시 등장 빈도의 로그값에 가까워지도록 학습합니다. 이는 벡터의 차이가 동시 등장 확률 비율의 로그값에 대응되도록 만들어, 결과적으로 단어 벡터 공간에 확률 비율 정보를 인코딩하는 효과를 낳습니다.

3. 장점

  • 전역 통계 정보와 지역 문맥의 결합: 코퍼스 전체의 동시 등장 확률(Global Co-occurrence Statistics)을 직접적으로 학습에 사용하여 LSA의 장점을 취합니다.
  • 빠른 학습 속도: Word2Vec처럼 윈도우 기반으로 학습하지 않고, 미리 계산된 전체 동시 등장 행렬을 사용하므로 학습이 빠르고 효율적입니다.
  • 뛰어난 단어 유추 성능: 단어 의미 간의 선형적 관계를 Word2Vec만큼, 혹은 그 이상으로 잘 학습합니다.

Ⅴ. 세 가지 모델 최종 비교 정리

특징 LSA (Latent Semantic Analysis) Word2Vec GloVe (Global Vectors)
기반 방법론 행렬 분해 기반 (Count-based) 예측 기반 (Prediction-based) 행렬 분해 + 예측 (Count-based)
활용 정보 전역 통계 정보 (Global) 지역 문맥 정보 (Local) 전역 통계 정보 (Global)
핵심 아이디어 SVD를 통한 차원 축소 신경망을 통한 주변 단어 예측 동시 등장 확률의 비율(Ratio) 학습
장점 전체 데이터 통계 활용 단어 간 선형 관계 학습 우수, 빠른 학습 LSA와 Word2Vec의 장점 결합, 성능 우수
단점 단어 유추 등 선형 관계 학습에 취약, 계산 복잡 전역 통계 정보 반영 미흡 상대적으로 단점이 적음

이 내용을 숙지하시면 LSA, Word2Vec, GloVe에 대한 어떤 시험 문제든 자신 있게 해결하실 수 있을 겁니다. 핵심은 LSA(전역) -> Word2Vec(지역, 예측) -> GloVe(전역 정보 + 예측의 장점 통합, '비율'이 핵심!) 의 흐름을 이해하는 것입니다.

 

 

GloVe 모델 수식 완전 정복 📝

GloVe의 핵심은 이전 설명에서 강조했듯 "동시 등장 확률의 비율(Ratio of Co-occurrence Probabilities)" 이라는 정보를 단어 벡터 공간에 어떻게 녹여낼 것인가에 대한 수학적 해답을 찾는 과정입니다.


1단계: 목표 설정 - '확률의 비율'을 벡터로 표현하기

가장 먼저, GloVe의 목표는 세 단어 , , 의 관계를 벡터로 표현하는 것입니다. 여기서 는 비교하려는 중심 단어(target words)이고, 는 문맥 단어(context word)입니다.

  • 핵심 아이디어: "단어 가 주어졌을 때, 단어 가 등장할 조건부 확률()"과 "단어 가 주어졌을 때, 단어 가 등장할 조건부 확률()"의 **비율()**은 세 단어 벡터의 함수로 표현할 수 있어야 한다.

이 아이디어를 수식으로 표현하면 다음과 같습니다. 이것이 모든 것의 시작입니다.

  • : 중심 단어(target word) 벡터
  • : 문맥 단어(context word) 벡터
  • : 세 단어 벡터의 관계를 정의할 미지의 함수

여기서 중심 단어 벡터()와 문맥 단어 벡터()를 구분하는 이유는, 두 단어의 역할이 다르기 때문에 초기에는 다른 벡터로 취급하는 것이 수학적으로 더 유연하기 때문입니다. (최종적으로는 합쳐서 사용하기도 합니다.)


2단계: 관계의 단순화 - 벡터의 차이로 의미 표현하기

이미지에서 강조된 것처럼, 우리는 벡터 공간에서 "의미의 차이"가 "벡터의 차이"로 표현되기를 기대합니다. (예: )

이 성질을 함수 에 적용하고 싶습니다. 즉, 함수 가 입력으로 받는 의 관계는 이 둘의 차이 벡터인 $(w_i - w_j)$로 표현되어야 한다는 제약을 가합니다. 이렇게 하면 수식 (1)은 다음과 같이 변형됩니다.

그런데 벡터와 벡터의 연산 결과는 스칼라(하나의 숫자 값)가 되어야 합니다. 우변인 확률의 비율()이 스칼라이기 때문입니다. 벡터 공간에서 두 벡터를 연산하여 스칼라를 만드는 가장 일반적인 방법은 **내적(dot product)**입니다. 따라서 함수 는 $(w_i - w_j)$와 의 내적을 입력으로 받는 형태로 구체화할 수 있습니다.

이것이 이미지에 나온 두 번째 핵심 수식입니다. 이제 우리는 복잡했던 함수 $F(w_i, w_j, \tilde{w}_k)$를 하나의 스칼라 값을 입력으로 받는 함수 로 단순화했습니다.


3단계: 함수 F의 형태 추론 - '준동형(Homomorphism)' 성질 이용

이제 함수 의 정체를 밝혀야 합니다. 여기서 GloVe 논문은 매우 중요한 수학적 속성인 **준동형(Homomorphism)**을 이용합니다.

  • 입니다. (벡터 내적의 분배법칙)
  • 가 성립해야 합니다. (수식 (3)의 좌변과 우변의 구조적 동일성 요구)

결합하면, 우리는 함수 가 다음의 성질을 만족해야 함을 알 수 있습니다.

이고 라고 치환하면, 함수 는 다음 조건을 만족해야 합니다.

이 성질을 만족하는 함수는 바로 **지수 함수(exponential function)**입니다. 라고 하면, 이 성립합니다.

따라서 우리는 가 지수 함수라고 결론 내릴 수 있습니다!


4단계: 최종 목표 수식 도출

가 지수 함수()이므로, 수식 (3)의 양변에 로그(log)를 취해봅시다. 우선 를 (3)에 대입하면,

양변을 비교하면 다음의 관계를 얻을 수 있습니다.

드디어 우리가 원하는 최종 목표 수식이 나왔습니다! 즉, 두 단어 벡터의 내적이 동시 등장 확률의 로그값과 같아지도록 학습하면 되는 것입니다.

하지만 조건부 확률 ()는 계산이 복잡하고, 항이 와 무관하여 노이즈가 될 수 있습니다. 논문에서는 이 항을 편향(bias) 항으로 분리하여 처리하는 것이 더 안정적이라고 말합니다.

따라서 최종적으로 학습을 위한 관계식은 다음과 같이 정의됩니다.

  • : 중심 단어 의 편향 (bias)
  • : 문맥 단어 의 편향 (bias)
  • : 단어 가 동시에 등장한 횟수 (Co-occurrence Count)

이것이 바로 이미지에서 **"학습을 위한 정답으로 정의"**된 최종 수식입니다. GloVe 모델은 손실 함수(Loss function)를 통해 모든 단어 쌍 $(i,k)$에 대해 값이 값에 최대한 가까워지도록 단어 벡터 와 편향 들을 학습시키는 것입니다.

요약 정리 📌

  1. 목표 설정: 벡터 함수 로 확률의 비율 $\frac{P_{ik}}{P_{jk}}$을 표현하자.
  2. 관계 단순화: 의미 차이 = 벡터 차이. 에 의존하도록 만들고, 스칼라 출력을 위해 내적을 사용 .
  3. 함수 F 추론: 라는 준동형 성질을 만족해야 하므로, 는 **지수 함수()**다.
  4. 최종 수식: 양변에 로그를 취하고 편향(bias)을 추가하여 학습 목표를 로 정의한다.

GloVe 모델의 마지막 핵심 파트인 **손실 함수(Loss Function)**와 Word2Vec 대비 성능에 대해 시험 문제를 모두 맞힐 수 있도록 완벽하게 설명해 드리겠습니다.

Ⅰ. GloVe의 최종 손실 함수 형태: 가중치 함수의 도입

앞서 우리는 GloVe의 학습 목표가 모든 단어 쌍 $(i, j)$에 대해 아래 수식을 만족시키는 것임을 확인했습니다.

이제 이 목표를 달성하기 위한 **손실 함수(Loss Function)**를 설계해야 합니다. 손실 함수는 모델의 예측()과 실제 정답() 사이의 오차를 측정하는 함수이며, 모델은 이 오차를 최소화하는 방향으로 학습됩니다.

가장 간단한 방법은 최소 제곱법(Least Squares)을 사용하는 것입니다.

하지만 이 수식에는 두 가지 심각한 문제점이 있습니다.

  1. 희귀 단어 쌍의 문제: 값이 0이면 $\log(X_{ij})$는 음의 무한대로 발산하여 계산이 불가능합니다.
  2. 중요하지 않은 단어 쌍의 문제: "the", "a", "is"와 같은 불용어(stopwords)들은 거의 모든 단어와 함께 등장하기 때문에 값이 매우 큽니다. 이런 단어 쌍들은 단어의 의미를 구별하는 데 별 도움이 되지 않음에도 불구하고, 손실 함수에서 큰 비중을 차지하여 학습을 방해하게 됩니다.

이 문제들을 해결하기 위해 GloVe는 **가중 함수 **를 도입한 가중 최소 제곱 회귀(Weighted Least Squares Regression) 방식을 사용합니다. 이것이 GloVe의 최종 손실 함수입니다.

+ Recent posts