Part 3 · Word Representation - Training Word Embeddings
단어의 의미는 학습을 통해 만들어진다
처음의 임베딩 벡터는 아무 의미 없는 무작위 숫자에 불과합니다. 하지만 수많은 문장을 반복해서 읽고 예측을 수행하는 동안, 모델은 틀린 부분을 조금씩 수정하며 단어의 의미를 벡터 안에 담아 갑니다.
이 과정에서 사람이 단어의 의미를 직접 입력하는 일은 없습니다. 모델은 예측과 오차 수정이라는 반복적인 학습만으로, 비슷한 문맥에서 사용되는 단어들이 자연스럽게 비슷한 벡터를 갖도록 스스로 조정합니다.
The Training Goal
학습의 목표는 예측기가 아니라 임베딩이다
Word2Vec은 주변 단어나 중심 단어를 맞히는 예측 문제를 풉니다. 그러나 최종 목적은 정답을 맞히는 장치 자체보다 단어 관계가 반영된 임베딩 테이블을 얻는 것입니다.
학습 중현재 임베딩을 사용해 정답 단어를 예측하고, 예측과 실제 정답의 차이를 계산합니다.
학습 후여러 예측 문제를 거치며 수정된 임베딩 테이블을 검색, 분류, 유사도 계산 등에 활용합니다.
Word2Vec의 예측 문제는 좋은 임베딩을 만들기 위한 연습 문제입니다.
Random Initialization
처음에는 아무 의미 없는 숫자로 시작한다
학습을 시작하기 전에는 각 단어의 임베딩 벡터를 작은 무작위 값으로 초기화합니다. 이 숫자에는 아직 의미 관계가 들어 있지 않습니다.
cat
0.120.81-0.43
dog
-0.610.240.77
bus
0.44-0.720.31
무작위 초기값은 학습의 출발점일 뿐입니다. 학습 데이터의 문맥 패턴을 반복해서 반영하면서 값이 조금씩 바뀝니다.
Training Example
문장에서 학습 문제를 만든다
문장 The cute cat sat에서 문맥 창을 좌우 한 단어로 설정했다고 가정해 보겠습니다.
Thecutecatsat
CBOW 학습 문제입력은 cute + sat, 정답은 cat입니다.
Skip-gram 학습 문제입력은 cat, 정답은 cute 또는 sat입니다.
학습 방식은 달라도 공통적으로 현재 임베딩을 사용해 단어를 예측합니다.
Prediction
현재 임베딩으로 정답 단어를 예측한다
학습 초기에는 임베딩이 아직 좋지 않으므로 정답 확률이 낮을 수 있습니다. 예를 들어 CBOW가 cute + sat를 보고 중심 단어를 예측했다고 가정해 보겠습니다.
cat
0.42
dog
0.31
car
0.17
bus
0.10
정답은 cat이지만 확률이 충분히 높지 않습니다. 이제 정답과 예측의 차이를 계산해야 합니다.
Loss
예측과 정답의 차이를 Loss로 나타낸다
모델 예측cat = 0.42
vs
실제 정답cat = 1.00
→
Loss예측이 얼마나 틀렸는가
Loss는 단순히 틀렸다는 표시가 아닙니다. 임베딩과 예측 가중치를 어떤 방향으로 수정해야 하는지 계산하기 위한 기준입니다.
Loss가 크면 현재 임베딩이 이 예측 문제를 잘 해결하지 못했다는 뜻입니다.
Backpropagation
역전파로 임베딩의 수정 방향을 계산한다
Loss가 계산되면 역전파를 통해 현재 예측에 사용된 임베딩과 가중치가 Loss에 얼마나 영향을 주었는지 계산합니다.
Loss예측 오류
역전파영향 추적
기울기 계산수정 방향
학습률 적용작은 변화
임베딩 수정새 벡터
다음 문제다시 예측
반복Loss 감소
역전파가 단어의 뜻을 직접 알려 주는 것은 아닙니다. 정답 확률을 높이고 잘못된 단어의 확률을 낮추는 방향으로 숫자를 조정합니다.
Embedding Update
임베딩 벡터의 숫자가 조금씩 바뀐다
학습 전 cat 벡터
0.120.81-0.43
아직 문맥 관계가 충분히 반영되지 않은 상태
→
한 번 수정된 cat 벡터
0.160.77-0.36
예측 오류가 줄어드는 방향으로 작은 변화가 적용됨
한 번의 학습으로 의미 있는 임베딩이 완성되는 것은 아닙니다. 수많은 문장에서 이 작은 수정이 반복됩니다.
Why Similar Words Move Together
왜 비슷한 단어의 벡터가 가까워질까?
cat이 자주 만나는 주변 단어cute, animal, pet, feed
dog가 자주 만나는 주변 단어cute, animal, pet, feed
두 단어가 비슷한 예측 문제에서 반복해서 사용되면, Loss를 줄이기 위한 수정 방향도 비슷해집니다. 그 결과 cat과 dog의 벡터가 점차 가까워질 수 있습니다.
비슷한 단어가 가까워지는 이유는 사전의 뜻을 읽었기 때문이 아니라, 비슷한 문맥에서 비슷한 방식으로 임베딩이 수정되었기 때문입니다.
Interactive Training Lab
학습을 반복하며 벡터와 Loss 변화를 확인하기
현재 학습 단계
0회
현재 Loss
1.80
현재 벡터 예시
아직 학습 전입니다.
이 시각화는 실제 Word2Vec 학습을 2차원으로 단순화한 교육용 예시입니다. 실제 모델에서는 고차원 임베딩과 훨씬 많은 단어가 동시에 학습됩니다.
What Remains After Training?
학습이 끝나면 무엇이 남을까?
Embedding Table각 단어에 대응하는 학습된 임베딩 벡터가 저장됩니다.
단어 간 관계비슷한 문맥에서 사용된 단어들이 벡터 공간에서도 가까워질 수 있습니다.
재사용 가능한 표현학습된 벡터를 검색, 분류, 추천, 유사도 계산 등에 사용할 수 있습니다.
Word2Vec 학습의 최종 산출물은 문맥의 통계적 관계가 반영된 임베딩 테이블입니다.
Common Questions
자주 생기는 의문
Word2Vec도 신경망인가?
그렇습니다. 입력층, 임베딩층, 출력층으로 이루어진 비교적 단순한 신경망으로 볼 수 있습니다. 다만 학습 후에는 예측기보다 임베딩 테이블을 주로 사용합니다.
모든 단어 벡터가 한 번의 학습에서 수정되는가?
보통 현재 학습 쌍에 직접 관련된 단어와 출력 계산에 참여한 파라미터가 중심적으로 수정됩니다. 실제 구현에서는 Negative Sampling 같은 방법으로 일부 단어만 효율적으로 갱신하기도 합니다.
Loss가 0이 되면 학습이 완벽한가?
반드시 그렇지는 않습니다. 학습 데이터에서 Loss가 매우 낮아도 새로운 문장에 잘 적용되지 않을 수 있으며, 데이터 품질과 편향도 임베딩 결과에 영향을 줍니다.