Word Embedding | Word2Vec, GloVe

bolim·2022년 3월 7일
0

NLP

목록 보기
2/7

Word Embedding

  • 단어들을 특정한 차원으로 이루어진 공간 상의 한 점, 좌표로 변환해주는 기법
  • text dataset을 학습 데이터로 제공하고
    dimension수를 사전에 정하여 알고리즘에 전달하면
    결과 값으로 각각의 단어의 최적의 벡터 표현형이 나온다.
  • 비슷한 단어는 가까운 공간에 표현되도록 한다.
  • 이후 다른 task 모델에 데이터를 넣을 때, 성능을 향상시킨다.

Word2Vec

워드 임베딩 중 유명한 알고리즘이다.
같은 문장에서 나타난 인접한 단어들 간의 의미가 비슷할 것이라는 가정을 사용한다.
e.g

  • The cat purrs.
  • This cat hunts mice.

cat 주변 단어들의 확률분포를 예측한다.

주어진 학습 데이터: "I study math."
-> Tokenizing
-> 단어들을 모아 사전 구축
-> 사전 사이즈 만큼의 one-hot vector로 표현
-> sliding window로 한 단어를 중심으로 앞뒤로 나타난 단어 각각과 입출력 단어쌍 구성(window size: 3이면 [(I,study),(study,I),(study,math)...])
-> 위의 단어쌍을 갖고 예측 task를 수행하는 fully layer
아래는 (study,math)를 가지고 진행된 알고리즘의 이미지이다.
(study[0,1,0], math[0,0,1])

  • Input, Output layer는 3차원, hidden layer는 2차원이다.
  • x : study, y : math
  • 원-핫 벡터이기 때문에 결국 파란색으로 칠해진 부분의 연산만 이루어진다.

https://ronxin.github.io/wevi/ 를 이용하여 시각적으로 볼 수 있다.

Word2Vec 결과 아래처럼 벡터 연산으로 표현이 가능하다.
vec[queen] – vec[king] = vec[woman] – vec[man]

  • Word2Vec을 통해
    여러 단어가 있을때 나머지 단어와 가장 상이한 단어를 찾는 task인
    Intrusion detection도 해결할 수 있다.

이외의 다양한 task에서도 사용된다.

GloVe

또 다른 워드 임베딩 방법이다.

Word2Vec과의 가장 큰 차이점은 데이터의 입출력 단어쌍에 대해서 하나의 window 내에서 얼마나 동시에 자주 나오는지를 사전에 미리 계산하고
입출력 워드 임베딩 벡터의 내적과 logP가 서로 가까워 지도록 loss function을 만든다는 것이다

  • uiu_i : 입력word의 임베딩 벡터
  • vjv_j : 출력word의 임베딩 벡터
  • PijP_{ij} : 두 단어가 한 윈도우 내에서 얼마나 동시에 자주 나타났는자

장점 :

  • 중복되는 계산을 줄여준다. -> 학습속도 향상
  • 더 적은 데이터에 대해서 잘 학습된다.
profile
나는야 호기심 많은 느림보🤖

2개의 댓글

comment-user-thumbnail
2022년 3월 7일

고차원의 feature를 저차원으로 embedding 하는 것은 아직까지도 많이 쓰이는 기법입니다. 이 때나온 word2vec을 시작으로 다양한 기법들이 나왔는데요.
최근에는 facebook에서 공개한 data2vec이 이 모든 방법을 집대성한 느낌입니다. 한 번 보시면 좋을 것 같아요.
https://ai.facebook.com/research/data2vec-a-general-framework-for-self-supervised-learning-in-speech-vision-and-language/

1개의 답글