단어표현 - 워드 임베딩 개념

* 원-핫인코딩
 : 각 단어의 인덱스를 정한 후 각 단어의 벡터를 그 단어에 해당하는 인덱스의 값을 1로 표현하는 방식
 : 워드 벡터의 크기가 너무 커져 공간을 많이 사용하게 되고, 매우 비효율적.
 : 워드 벡터가 매우 희소(sparcy)해 진다.

* 분포 가설(Distributed hypothesis)
 : '같은 문맥의 단어, 즉 비슷한 위치에 나오는 단어는 비슷한 의미를 가진다. ' 라는 개념
 : 아래 기법은 모두 분포 가설을 기반으로 함.

* Count Base
 : 단어들이 동시에 등장하는 횟수를 직접 세는 방법
 : 속도가 빠르다.
 : 데이터가 많을 경우 많이 사용함.
 : SVD(특이값분해), LSA(잠재의미분석), HAL, Hellinger PCA
 : (동시출현행렬(Co-occurrence Matrix)에서 워드벡터를 만드는 부분은 추가예정)

* Predictive
 : 딥러닝을 통해 특정문맥에서 어떤 단어가 나올지 예측하면서 단어를 벡터로 만드는 방식
 : Word2Vec, NNLM, RNNLM

* Word2Vec
 : CBOW(Continuous Bag of Words)와 Skip-Gram이라는 두가지 모델로 나뉨
 : CBOW - 어떤 단어를 문액 안의 주변 단어들을 통해 예측
   1) 각 주변 단어들을 원-핫 벡터로 만들어 입력값으로 사용
   2) 가중치행렬(W)을 원핫벡터에 곱해서 n-차원 벡터를 만듬(N-차원 은닉층)
   3) 만들어진 N-차원 벡터를 모두 더한 후 개수로 나눠 평균 N-차원 벡터 생성
   4) N-차원 벡터에 다시 가중치 행렬을 곱해서 원-핫벡터와 같은 차원의 벡터 생성
   5) 만들어진 벡터를 실제 예측하려고 하는 단어의 원-핫벡터와 비교해서 학습

 : Skip-Gram - 어떤 단어를 가지고 특정 문맥 안의 주변 단어들을 예측
   1) 하나의 단어를 원-핫 벡터로 만들어서 입력값으로 사용
   2) 가중치 행렬을 원-핫 벡터에 곱해서 N-차원벡터를 만든다(N-차원 은닉층)
   3) N-차원 벡터에 다시 가중치 행렬을 곱해서 원-핫 벡터와 같은 차원의 벡터생성
   4) 만들어진 벡터를 실제 예측하려는 주변 단어들 각각의 원-핫 벡터와 비교해서 학습

 : 모델 아키텍처

<출처 : www.bgoncalves.com >

 : 학습 과정을 모두 끝낸후 가중치 행렬의 각 행을 단어 벡터로 사용
 : 장점
   1) Count Base 보다 단어 간 유사도를 잘 측정
   2) 단어들의 복잡한 특징까지 잘 잡아냄
   3) 단어 벡터 간 유의미한 관계 측정 가능
word2vec에 대한 이미지 검색결과

댓글

가장 많이 본 글