학교/졸프

Word2Vec

daykim 2021. 5. 5. 17:43

One-Hot Encoding

  • 단어 집합의 크기를 벡터의 차원으로 하고, 표현하고 싶은 단어의 인덱스에 1의 값을 부여하고,
    다른 인덱스에는 0을 부여하는 단어의 벡터 표현 방식
  • 이렇게 표현된 벡터를 원-핫 벡터(One-Hot vector)라고 한다.


TF-IDF의 문제점을 해결하기 위한 방법

TF-IDF 문제점

  1. 하나의 단어를 표현하는데 큰 벡터가 필요하다.
    - One-Hot Encoding에서는 하나의 columns이 Vocabulary에 등록된 단어를 의미한다.
    - 만약 사전에 3만개의 단어가 들어있다면, 하나의 단어를 표현하기 위해선 3만 차원이 필요
    - 큰 차원의 벡터는 메모리 등의 문제 때문에 계산 복잡성이 크게 늘어난다.
  2. 단어 사이에 관련성을 파악할 수 없다.


벡터화하는 방법

  1. 카운트 기반의 벡터화 : LSA, HAL 등
  2. 추론/예측 기반의 벡터화 : NNLM, Word2Vec 등
  3. 1, 2 모두 사용 : GloVe


추론 기반의 방법

  • 추론 : 주변 단어(맥락)이 주어졌을때 빈칸에 무슨 단어(중심 단어)가 들어가는지 추측하는 작업


Word2Vec 정의

  • 단어를 벡터로 바꿔주는 임베딩 방법론
  • One Hot Vector 형태의 sparse matrix가 가지는 단점을 해소하고자 저차원의 공간에 벡터로 매핑하는것이 특징
  • 단어가 많아져도 저차원벡터를 가지고 다차원 공간에 벡터화해서 유사성을 표현할 수 있다. = 분산표현


분산표현(Distributed Representation)

  • "비슷한 위치에 등장하는 단어들은 비슷한 의미를 가진다"라는 가정하에 만들어짐
  • 저차원에 단어의 의미를 여러 차원에다가 분산하여 표현
    Ex) 강아지 = [ 0 0 0 0 1 0 0 0 0 ...] (원-핫 인코딩) -> 강아지 = [ 0.2 0.3 0.5 0.2 0.7 ... ](w2v)
  • 각 차원이 실수형으로 표현 되면서 단어의 의미를 여러 차원에다 분산시키는 것
  • 의미가 유사한 단어는 벡터 공간에서 가깝게, 반대의 경우 멀게 배치하는 것이 목표


Word2Vec 알고리즘

  1. CBOW 모델
  2. Skip-Gram 모델

- Skip-Gram이 CBOW보다 성능이 더 좋아 더 많이 사용됨

  • 주변단어 : 주변에 있는 단어
  • 중심 단어 : 중간에 있는 단어
  • 윈도우 크기 : 주변을 몇 칸까지 볼 지에 대한 크기

CBOW (Continuous Bag of Words)

주변에 있는 단어들을 가지고 중간에 있는 단어들을 예측하는 방법

  • 중심단어를 예측하기 위해서는 앞 뒤로 몇 개의 단어를 볼지 결정하게 되는데, 그 크기를 윈도우라고 하며, 학습을 위한 데이터 셋을 만들기 위해 슬라이딩 윈도우를 사용한다.
  • W2V의 학습은 주변 단어 크기에 따라 말뭉치를 슬라이딩하며 중심 단어의 주변 단어들을 보고 각 단어의 벡터 값을 업데이트 해나가는 방식이다.
  • 이 때, 윈도우 내에 등장하지 않는 단어에 해당하는 벡터는 중심 단어 벡터와 멀어지게끔, 등장하는 주변 단어 벡터는 중심 단어 벡터와 가까워지도록 값을 변경해나간다.



슬라이딩 윈도우(Sliding Window)

윈도우의 크기를 정하고, 윈도우를 계속 움직여서 주변 단어와 중심 단어 선택을 바꿔가며

학습을 위한 데이터 셋을 만드는 방법

  • 중심 단어를 기준으로 앞뒤 2개의 단어를 학습데이터로 사용한다.
  • 주변 단어를 Input에 넣고 Hidden Layer를 거쳐 Output Layer에서 나온 값이 중심 단어가 되도록 학습시키는 것



  • 위의 이미지를 이해하기 쉽게 도식화한 이미지

  • 위의 이미지를 보면 4개의 벡터 값의 평균을 구하여 해당 vector 값을 word vector로 사용한다.
  • M은 워드 임베딩후의 차원으로 사용자 임의 설정이 가능하다.

 

Skip-Gram

중심 단어를 보고 주변 단어들을 예측하는 방법으로 CBOW와 반대다.

 

 

 

단점

  1. context 표현이 안 된다.
    ex) 중의적 단어 (타는 배, 먹는 배)
    -> 단어의 모양만, 의미는 아님
  2. 분포 가설을 기반으로 학습하는 만큼 단어 빈도 수의 영향을 많이 받아 희소한 단어를 임베딩 하기 어려움
  3. OOV(Out Of Vocabulary)처리가 어렵다.
    - 사전에 없는 단어가 등장시 W2V 특성상 처음부터 다시 학습시켜야 한다.

 

참고 URL

'학교 > 졸프' 카테고리의 다른 글

AWS 서버 세팅하기  (0) 2021.06.15
카카오 i 오픈빌더 이용하기  (0) 2021.05.20
TF-IDF  (0) 2021.05.05
Faiss  (0) 2021.05.01
KcBERT 실습해보기(2)  (0) 2021.04.21