[요약정리]딥 러닝을 이용한 자연어 처리 입문(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의 속도의 문제점을 풀기 위해서 역전파를 보낼때 전체 단어 집합이 아닌 일부 단어 집합만 고려
- 주변 단어들과 랜덤적으로 상관없는 단어 일부만 가지고 작은 단어 집합으로 풀면 빠르다.