Word Embedding

Word Embedding


  • word를 vector로 표현한다.
  • "cat"과 "kitty"와 같이 비슷한 비슷한 벡터로 표현 → 짧은 거리
  • "hamburger"와 같이 "cat"이나 "kitty"와 완전 다른 단어는 다른 벡터로 표현 → 먼 거리

Word2Vec

  • 같은 문장들 안에서 인접한 단어들은 의미가 비슷할 것이라고 가정
  • 한 단어가 주변에 등장하는 단어들을 통해 의미를 알 수 있다는 사실에서 착안

image.png

  • Input: “study” [0, 1, 0]
  • Output: “math” [0, 0, 1]

위 경우에 대해서는 위 그림과 같다.

주어진 학습 데이터가 "I study math"라고 하자. 먼저 tokenization을 진행하고 unique한 단어를 모아서 단어장을 만들게 된다. 그리고 각 단어를 one hot vector형태로 나타낸다. window를 설정하여 해당 입력의 주변 단어를 얼마 만큼 볼것인가를 결정하게 된다.
✅ window size가 1인경우 앞,뒤로 한 단어씩을 보게 된다. image.png

Word2Vec를 시각적으로 잘 보고 싶으면 아래 사이트를 참조하자.

우리는 이 알고리즘을 통해 word embedding을 하는데 가중치로 W1,W2가 나온다. 사이트를 예로 보게 되면,

image.png

2개의 vector값이 만들어 지는데 여기서 word vector로 Input Vector를 사용하든 Output Vector를 사용하든 상관 없지만 통상적으로 Input Vector를 word vector로 사용하게 된다.


Property of Word2Vec

  • 벡터 공간에서의 벡터 점간의 관계는 단어 사이의 관계를 나타낸다.
  • 같은 관계는 같은 벡터로써 나타내어진다.

image.png

vec[queen] – vec[king] = vec[woman] – vec[man]



GloVe

  • Word2Vec과는 다른 학습 방법
  • 중복되는 계산을 줄여주는 방식이어서 Word2Vec보다 빠르게 학습된다.

image.png

각 입력 및 출력 단어 쌍들에 대해서 학습데이터에서 두 단어가 한 window내에서 총 몇번 동시에 등장했는지($P_{ij}$) 사전에 미리 계산을 하고 입력 word의 embedding vector($u_{i}$)와 출력 word의 embedding vector($v_{j}$)간의 내적값이 $logP_{ij}$와 최대한 가까워 질 수 있도록 loss function을 사용하였다.

'AI > 이론' 카테고리의 다른 글

Seq2Seq  (0) 2021.02.17
LSTM and GRU  (0) 2021.02.16
RNN and Language modeling  (0) 2021.02.16
Bag of Words  (0) 2021.02.15
Generative Model  (0) 2021.02.05
Transformer - Sequential Models  (0) 2021.02.04
RNN - Sequential Models  (0) 2021.02.04
RNN 맛보기  (0) 2021.02.04

+ Recent posts