AI·빅데이터 융합 경영학 Study Note

Word2Vec의 Skip-gram 방법 조사 본문

Deep Learning

Word2Vec의 Skip-gram 방법 조사

SubjectOwner 2024. 5. 15. 20:13

참고 자료

밑바닥부터 시작하는 딥러닝2 p141-146

https://wooono.tistory.com/244

 

[DL] Word2Vec, CBOW, Skip-Gram, Negative Sampling

One-Hot Vector 기존의 자연어처리 분야에서는, 단어를 One-Hot Vector 로 표현했습니다. One-Hot Vector란, 예를 들어 사전에 총 10000개의 단어가 있고, Man이라는 단어가 사전의 5391번째 index에 존재한다면 Man

wooono.tistory.com

 

 

 

(간단!)

 

word2vec은 2개의 모델이 있다.

하나는 CBOW고

다른 하나는 여기서 다룰 skip-gram이다. 서로 반대되는 방법인데

 

CBOW는 context로 target을 예측하는 방법식으로 학습하고,

skip-gram은 target으로 context를 예측하는 방식으로 학습한다.

  • 아래와 같이 매우 간단한 단일 레이어 인공신경망 모형을 사용합니다.
  • 즉, CBOW와 Skip-Gram은 매우 유사한 구조를 갖지만 입력(input)과 출력(output)이 서로 반대인 모델입니다.
  • 두 모델은 입력으로 주어진 단어를 N차원의 벡터로 투영한 뒤,
  • 이 벡터를 다시 소프트맥스(softmax) 함수를 이용해 출력 단어를 맞추도록 학습합니다.
  • Wt : 중앙 타깃
  • Wt-1, Wt+1, ... : 맥락
  • 핵심: 스킵 그램 모델은 맥락의 수만큼 추측하기 때문에 그 손실 함수는 각 맥락에서 구한 손실의 총합이어애 한다. 반면, CBOW 모델은 타깃 하나의 손실을 구한다. 둘 중 무엇을 사용해야 할까에 대한 답은 스킵 그램이다. 그 이유는 단어 분산 표현의 정밀도 면에서 스킵 그램의 성능이 더 좋은 경우가 많기 때문이다. 

 

 

 

  • 기준 단어를 입력으로 사용하여, 기준 단어에 대해 앞 뒤로 N/2개 씩, 총 N개의 문맥 단어를 맞추기 위한 네트워크를 만듭니다.
    • 예를 들어, 다음 문장의 빈칸을 채우는 모델입니다.
      • _ ___ 음식을 __ ___.
  • 문장의 각 단어는 Context에 따라 여러번의 업데이트 기회가 주어집니다.
  • Skip-Gram model은 크기가 큰 데이터셋에 적합합니다.

 

skip-gram 모델의 신경망 구성 예

  • 위 그림은, "The boy is going to school"에서 'The'를 기준단어, 'boy is going'를 문맥단어로 설정해
  • 기준단어로부터 문맥단어를 예측하는 Skip-Gram 과정이며, 아래와 같은 순서로 진행됩니다.

1. (Input Layer) context에서 기준 단어에 대한 one-hot vector를 만들어 input 에 넣습니다.

2. (Input Layer → Hidden Layer) Input에 input word matrix를 곱해, N차원 embedding vector를 얻습니다.

3. (Hidden Layer → Output Layer) 2의 결과인 N차원 embedding vector에 2m개의 output word matrix를 곱해, 입력 차원과 같은 vector를 만듭니다.

4. (Output Layer) 3에서 얻어진 vector를 균등한 확률로 표현하기 위해 softmax 함수를 취합니다.

5. (Loss) y hat을 각 문맥 단어들의 one-hot vector인 y와 오차 측정합니다.

  • 오차 측정 시 CBOW와 동일하게 Cross-entropy가 사용되며,
  • 위 그림에서 문맥 단어는 2m개가 있으며, 각 문맥 단어는 c-j 번째 index가 1인 one-hot vector로 나타낼 수 있습니다.
  • Skip-Gram은 CBOW와 동일하게 아래 공식을 통해 가중치를 학습할 수 있습니다.
  • 이어서 L을 자세히 살펴보겠습니다.
    • Skip-Gram은 CBOW와 달리 문맥 단어들은 서로 독립이라는 가정이 추가됩니다.
    • 하지만, |V|가 커지면 계산량이 굉장히 커진다는 점은 CBOW와 동일합니다.