Word2Vec에서 단어는 Dense Vector(=Distributed Vector)로 표현되며, 이는 여러 차원의 값들이 0이 아닌 값으로 채워져 있는 벡터입니다. 이러한 벡터를 사용하면 코사인 유사도, 유클리드 거리, 내적 등을 통해 단어 간 의미적 유사성을 표현할 수 있습니다.
그중 Word2Vec은 Word를 Dense한 Vector로 표현하는 대표적인 방법으로, CBOW방식과 Skip gram방식으로 나뉩니다.
CBOW와 Skip-Gram방식이 각각 어떤 방식인지는 아래 포스팅에 다루어두었습니다.
https://dailyreord.tistory.com/48
[NLP] Embedding이란? & Text데이터의 Embedding(Word, Sentence)
Ref : https://wikidocs.net/22644 09. 워드 임베딩(Word Embedding)텍스트를 컴퓨터가 이해하고, 효율적으로 처리하게 하기 위해서는 컴퓨터가 이해할 수 있도록 텍스트를 적절히 숫자로 변환해야 합니다. 단
dailyreord.tistory.com
본 포스팅에서는 Word2Vec의 핵심 아이디어에 대해 다루겠습니다.
Word2Vec의 핵심 아이디어
Word2Vec의 핵심 아이디어는 특정 단어를 기준으로 그 주변 단어들에 대한 확률분포값을 모델링하는 것입니다. 즉, 같이 오는 단어들을 바탕으로 각 단어들의 확률 분포값들을 형성하는 것입니다.
예를 들어 "cat"이라는 단어가 있을 때, 이 단어의 주변에 올 단어들("is", "sat", "Meow" .. 등)의 확률분포를 모델링합니다. 이를 통해 단어간의 의미적 유사성(Semantic Similarity)을 파악하고, 비슷한 단어들끼리는 벡터 공간에서 서로 가까운 위치에 배치될 수 있도록 학습할 수 있습니다.
이런식으로 모델링된 후, 확률값을 계산할 때는 조건부 확률로써 P(word|cat) 형태로 계산됩니다.
"cat"이 등장했을 때 이 주변에 올 수 있는 확률이 가장 높은 단어를 선택합니다. 즉, 중심 단어인 "cat"의 의미는 그 주변 단어들의 확률 분포에 의해 결정된 것으로, 이 때 "cat"의 의미는 문맥적 의미가 반영된 것입니다.
따라서 이에 맞게 확률 분포값을 "잘" 모델링할 수 있는 방법이 필요하고, 이로 인해 제시된 방법이 CBOW, Skip-Gram같은 방법들입니다.
Word2Vec을 통해 Dense한 표현을 만들어내는 과정
아래 예시에서는 중심단어를 기준으로 주변 단어를 예측하는, Skip-Gram방식을 기반으로 Word2Vec 알고리즘의 작동 원리를 설명하겠습니다.
예를 들어, 학습 데이터가 "The fat cat sat on the mat" 뿐이라고 가정한다면 Vocab은 워드 단위로 토크나이징된다고 했을 때 ["The", "fat", "cat", "sat", "on", "the", "mat"] 으로 구성될 것입니다.
sat을 중심단어로 가정하고, 학습 데이터를 기반으로 주변단어를 예측할 수 있는 확률 분포값을 모델링하는 과정을 살펴봅니다.
학습데이터가 "The fat cat sat on the mat"뿐이기 때문에 "sat" 주변 단어로는 "cat", "fat", "the", "mat"와 같은 주변 단어들만이 예측되도록 확률분포가 모델링될 것입니다. 즉, 아래와 같이 예측되도록 모델링되는것이 최종 목표입니다.
- "sat" → Input Layer
- "sat" 은 One-Hot vector로 표현되어 입력값으로 들어갑니다. 주변 단어들도 마찬가지로 One-Hot vector로 표현되어 Projection Layer(=Hidden Layer)로 들어가게됩니다. - 우리의 목표는 sat을 넣었을 때, Output Layer에서 fat, cat, on, the를 예측하도록 모델링하는 것입니다. - One-Hot Vector → Projection Layer
- sat의 One-Hot Vector는 Projection Layer의 가중치 행렬(W_1)과 행렬곱을 통해 저차원의 Dense Vector로 변환됩니다.
- 물론 초기의 가중치 행렬은 의미없는 값으로 초기화되어있을 것이기 때문에, 아직까진 이 가중치 행렬이 sat의 의미를 담는 Dense Vector를 만들어내는것은 아닙니다. - Projection Layer → Output Layer
- Projection Layer를 거쳐 나온 Dense Vector는 Output Layer의 가중치 행렬 W_2 와 곱해져 최종적인 Output Vector가 만들어지게 됩니다. - Softmax를 통한 확률값으로 변환 & Loss 계산
Softmax에 Output Vector를 태우면, y_hat(모델의 예측값)이 만들어집니다.
이를 Label과의 Loss Function(보통 Cross-Entropy)에 태워, 각 단계에서의 가중치 행렬 W_1, W_2를 업데이트시킵니다.
결과적으로 위 예시와 같이 학습된 모델은 "학습한 데이터를 기반으로 판단할 때, 'sat'바로 뒤에 나올 단어로 가장 확률이 높은 단어는 'on'이다."와 같은식으로 결과물을 뱉어낼 수 있게됩니다.
Ref. https://www.boostcourse.org/ai330/lecture/1455362?isDesc=false
자연어 처리의 모든 것
부스트코스 무료 강의
www.boostcourse.org
09-02 워드투벡터(Word2Vec)
앞서 원-핫 벡터는 단어 벡터 간 유의미한 유사도를 계산할 수 없다는 단점이 있음을 언급한 적이 있습니다. 그래서 단어 벡터 간 유의미한 유사도를 반영할 수 있도록 단어의 의미를…
wikidocs.net
'AI' 카테고리의 다른 글
[LLM Pre-train, Fine Tuning] Pre-trained LLM과 Supervised Fine Tuning (0) | 2025.02.14 |
---|---|
[Positional Encoding] Transformer가 토큰의 위치 정보를 고려하는 방법 (0) | 2025.02.08 |
Beam Search (0) | 2025.01.09 |
[RAG] ODQA Task의 Reading Stage (1) | 2025.01.02 |
[이상 탐지 매커니즘, LSTM 기반 AutoEncoder] 이상탐지에서의 LSTM과 AutoEncoder (0) | 2024.12.16 |