Study/자연어처리

2. Word2Vec

우당탕탕코린이 2024. 2. 14. 17:51

 

 

Word Embedding

  • 단어들을 특정한 차원으로 이루어진 공간 상의 한 점의 좌표를 나타내는 벡터로 변환해주는 기법.
  • example
    • cat이라는 단어와 kitty라는 단어를 벡터로 변환했을 때, 두 좌표 간의 거리는 가깝다
    • hamburger는 cat과 kitty와 의미가 다르므로, 해당 좌표들 간의 거리는 멀다
  • 비슷한 의미를 가진 단어들이 좌표 공간 상에서 가까이 위치하도록 한다. -> 의미를 잘 반영한 표현 방법!
  • word embedding을 학습하는 방법으로는 Word2Vec, GloVe 등이 있다.

 

Word2Vec

  • word embedding을 학습하는 대표적인 방법.
  • 가정 : 같은 문장에서 나타난 인접한 단어들 간의 의미가 비슷할 것이다.
  • ex
    • The cat purrs.
    • This cat hunts mice.
    • 라는 2개의 문장이 있을 때, cat의 앞뒤에 있는 the, purrs, this, hunts, mice와 같은 단어들이 cat과 깊은 관계가 있을 것이라 가정.

  • 하나의 단어를 input으로 넣었을 때, 주변 단어들이 등장할 확률을 예측하는 방법으로 학습 진행.
  • cat이라는 단어가 input일 때
    • P(w|cat)은 얼마인가? (w는 cat의 주변 단어들)
      • w가 meow, fleas, pet일 때 가장 확률이 높다.

  • 학습 방법 (알고리즘)
    • Sentence : "I study math."
    • 먼저, 주어진 문장을 단어(word) 단위로 나누는 tokenization을 진행한 후에, 유니크한 단어들만 모아서 사전을 구축한다.
      • Vocabulary : {"I", "study", "math}
    • 각 단어들은 vocabulary의 size만큼의 차원을 가지는 one hot vector로 표현할 수 있게 된다.
      • "study" = [0, 1, 0]
    • sliding window 기법을 적용하여 한 단어를 중심으로 앞뒤로 나타난 워드 각각과 입출력 단어 쌍을 구성.
      • ex) window size가 3이라면 (앞뒤로 한 단어씩만 본다면)
        • "I"라는 단어가 중심 단어라면
          • 입출력 쌍은 (I, study)
        • "study"라는 단어가 중심 단어라면
          • 입출력 쌍은 (study, I), (study, math)
    • 만들어진 입출력 단어 쌍들에 대해 예측 task를 수행하는 2 layer(W1, W2)의 neural layer를 만든다.
      • 각 단어들이 vocabulary size 만큼의 차원을 지닌 one hot vector로 표현되기 때문에 입력과 출력 layer의 노드 수는 모두 vocabulary size가 된다.
      • 아래의 그림에서 x는 input, y는 output이 된다.
      • 가운데 있는 hidden layer의 노드 수는 사용자가 정하는 하이퍼 파라미터.
        • 워드임베딩을 수행하는 좌표 공간의 차원 수와 동일.
        • 해당 예제에서 hidden layer의 차원을 2로 설정했을 때 학습 과정을 살펴보자.
          • ex ) 입출력 쌍 : (study, math)
            • x = study = [0, 1, 0]
            • y = math = [0, 0, 1]
            • W1 : 3차원 벡터를 2차원(hidden layer)으로 변환해주는 linear transformation matrix. -> (2,3)
              • 이때, 2번의 내적을 수행.
              • 각각의 내적에서, x는 one hot vector이기 때문에 1과 계산되는 2번째 column의 값만 가져오게 된다.
              • 이 부분을 embedding layer라고 부르며, 이 과정에서 실제로 행렬곱을 수행하지 않고, 해당 column의 값만 뽑아오는 방식으로 과정을 수행.
            • W2 : 2차원을 3차원 벡터로 변환해주는 linear transformation matix -> (3,2)
            • 마지막으로 non-linear layer인 softmax를 거치게 함으로써 3차원 벡터가 확률분포를 가지도록 변환해줌.
            • 해당 확률분포와 ground truth의 확률분포(=[0, 0, 1])의 거리가 가까워지도록 하는 softmax loss를 적용하며 학습 진행.

  • 특성
    • 단어들 간의 관계를 잘 표현.
      • 예를 들어, king과 queen 간의 거리, man과 woman 간의 거리, uncle과 aunt 간의 거리가 같아서 남성과 여성 간의 차이를 잘 나타내고 있음.

  • Application
    • Machine translation : 단어 유사도를 학습하여 번역 성능을 더 높여줌
    • Sentiment analysis : 감정분석, 긍부정분류를 도움
    • Image Captioning : 이미지의 특성을 추출해 문장으로 표현하는 테스크를 도움.

 

 

 

Reference

  • 부스트코스, 자연어처리의 모든 것, 주재걸 교수님.