[요약정리]딥 러닝을 이용한 자연어 처리 입문(Ch10. 워드 임베딩 #1)


워드 임베딩이 밀집 표현을 하는건 알겠는데, 단어 유사도를 구하기 위한 것도 알겠다면, 이제 CBOW가 뭔지 Skip-gram이 뭔지 알 필요가 있겠지?


참고 사이트 : 딥 러닝을 이용한 자연어 처리 입문 에 대한 글을 요약하였다.

Ch10. 워드 임베딩(Word Embedding) #1

워드 임베딩(Word Embedding)

: 단어를 밀집 표현으로 변환하는 방법

  • 희소 표현(Sparse Representation) : 원-핫 인코딩으로 0, 1 표현
    • 문제점 : 공간적 낭비
  • 밀집 표현(Dense Representation) : 차원 축소해서 만듦 ex. 강아지 = [0.2, 1.3, 2.3, …]

  • 워드 임베딩 : 밀집 벡터로 만들기 위한 방법
    • 방법론 : LSA, Word2Vec, FastText, Glove 등

워드투벡터(Word2Vec)

: 원 핫 벡터는 단어간 유사도를 계산할 수 없는 단점이 있는데, 단어의 의미를 벡터화할 수 있는 방법
CBOW(Continuous Bag of Words)와 Skip-Gram 두 가지 방식이 있음
  • CBOW : 주변에 있는 단어들을 가지고, 중간에 있는 단어들을 예측하는 방법
  • Skip-Gram : 중간에 있는 단어로 주변 단어들을 예측하는 방법

CBOW

  • 그림과 같이 딥러닝 모델은 아니다. 딥러닝은 은닉층의 개수가 충분히 쌓여야 하는데 은닉층이 1개인 경우이고 / 활성화 함수가 존재하지 않는 룩업테이블은 은닉층하고 구분하기 위해 투사층이라고도 부름
  • 위 그림처럼 윈도우(주변 몇개의 단어를 볼지 e.g. n개면 양옆 2n개 봄)를 정함

  • 가중치 W와 W’를 학습해가는 구조(두 가중치는 전치관계가 아닌 서로 다른 행렬임)
  • 식을 잘 보면 결국 인덱스 1 x 해당 가중치 행렬 값 이므로 이런걸 look-up했다고 표현

  • 위 그림처럼 싹다 V를 구하고 평균을 함

  • 그 평균을 두번째 가중치 행렬 W’를 곱함.
  • 이 벡터에 소프트함수를 취해서 전체 합이 1이게 만든다. 이것을 스코어 벡터라고 함
  • 그 다음 손실함수는 cross-entropy를 사용한다.

Skip-gram

  • 중심 단어에 대해서 주변 단어를 예측하기 때문에 투사층에서 벡터들의 평균을 구하는 과정은 없음
  • 연구 결과에 의하면 성능은 Skip-gram > CBOW 라고 함

NNLM VS Word2Vec

  • Word2Vec VS Word2Vec: 피드 포워드 신경망 언어모델(NNLM)의 느린 학습 속도와 정확도를 개선해서 태어남
  • 예측 대상 다름 : NNLM(이전 단어로 다음 단어 예측), Word2Vec(단어 전후로 중심 단어 예측)
  • 구조 다름 : Word2Vec은 은닉층 제거 함으로써 속도강점 가짐
  • 계층적 소프트맥스(hierarchical Softmax)와 네거티브 샘플링(Negative Sampling) 덕분에 속도 강점 가짐
    • 네거티브 샘플링(연산을 V -> log(V)로 바꿈으로써 빠른 연산 속도를 냄)

네거 티브 샘플링(Negative Sampling)

  • 대체적으로 Word2Vec을 사용한다고 하면 SSNS(Skip-Gram with Negative Sampling)을 사용
  • Word2Vec의 속도의 문제점을 풀기 위해서 역전파를 보낼때 전체 단어 집합이 아닌 일부 단어 집합만 고려
  • 주변 단어들과 랜덤적으로 상관없는 단어 일부만 가지고 작은 단어 집합으로 풀면 빠르다.





© 2018. by statssy

Powered by statssy