밑바닥부터 시작하는 딥러닝 - word2vec (2)

skip-gram 모델

word2vec은 2개의 모델을 제안하고 있다. 하나는 CBOW 모델이고, 다른 하나는 skip-gram 모델이다. skip-gram은 CBOW에서 다루는 맥락과 타깃을 역전시킨 모델이다.

위 그럼처럼 CBOW 모델은 맥락이 여러 개 있고, 그 여러 맥락으로부터 중앙의 단어(타깃)를 추측한다. 한편, skip-gram 모델은 중앙의 단어(타깃)로부터 주변의 여러 단어(맥락)를 추측한다. 

skip-gram 모델의 신경망 구성 예

skip-gram 모델의 입력층은 하나이다. 한편 출력층은 맥락의 수만큼 존재한다. 따라서 각 출력층에서는 개별적으로 손실을 구하고, 이 개별 손실들을 모두 더한 값을 최종 손실로 한다.

skip-gram 모델을 확률로 표기한 것이다. 'W(t)가 주어졌을 때 W(t-1)과 W(t+1)이 동시에 일어날 확률'을 뜻한다.

여기서 skip-gram 모델에서는 맥락의 단어들 사이에 관련성이 없다고 가정하고 아래 그림과 같이 분해한다.

이 식을 교차 엔트로피 오차에 적용하여 손실 함수를 유도할 수 있다.

이 유도 과정에서는 log(xy) = log(x) + log(y)라는 로그의 성질을 이용했다. skip-gram 모델의 손실 함수는 맥락 별 손실을 구한 다음 모두 더한다. 

말뭉치 전체로 확장하면 skip-gram 모델의 손실 함수는 다음과 같다.

skip-gram 모델은 맥락의 수만큼 추측하기 때문에 그 손실 함수는 각 맥락에서 구한 손실의 총합이어야 한다. 반면, CBOW 모델은 타깃 하나의 손실을 구한다.

단어 분산 표현의 정밀도 면에서 skip-gram 모델이 CBOW 모델보다 결과가 더 좋은 경우가 많다. 특히 말뭉치가 커질수록 저빈도 단어나 유추 문제의 성능 면에서 skip-gram 모델이 더 뛰어난 경향이 있지만, 학습 속도 면에서는 CBOW 모델이 더 빠르다. skip-gram 모델은 손실을 맥락의 수만큼 구해야 해서 계산 비용이 그만큼 커지기 때문이다.


통계 기반 VS 추론 기반

두 기법에는 학습하는 틀 면에서 큰 차이가 있었다. 통계 기반은 말뭉치의 전체 통계로부터 1회 학습하여 단어의 분산 표현을 얻었지만, 추론 기반에서는 말뭉치를 일부분씩 여러 번 보면서 학습했다.

 

1. 어휘에 추가할 새 단어가 생겨서 단어의 분산 표현을 갱신해야 하는 상황

- 통계 기반에서는 계산을 처음부터 다시 해야 한다. 단어의 분산 표현을 조금만 수정하고 싶어도, 동시발생 행렬을 다시 만들고 SVD를 수행하는 일련의 작업을 다시 해야 한다. 그에 반해 추론 기반에서는 매개변수를 다시 학습할 수 있다.

 

2. 두 기법으로 얻는 단어의 분산 표현의 성격이나 정밀도 면

- 통계 기반에서는 주로 단어의 유사성이 인코딩된다. 한편 추론 기반에서는 단어의 유사성은 물론, 한층 복잡한 단어 사이의 패턴까지도 파악되어 인코딩된다. 즉 유추 문제를 풀 수 있어진다.

 

 

하지만 두 기법은 단어의 유사성을 정량 평가해본 결과, 별 차이가 없다고 한다.

또 다른 사실로, 두 기법은 서로 관련되어 있다고 한다.

구체적으로는 skip-gram과 네거티브 샘플링을 이용한 모델은 모두 말뭉치 전체의 동시발생 행렬에 특수한 행렬 분해를 적용한 것과 같다.

나아가 word2vec 이후 추론 기반과 통계 기반을 융합한 Glove 기법이 등장했다. Glove의 기본 아이디어는 말뭉치 전체의 통계 정보를 손실 함수에 도입해 미니배치 학습을 하는 것이다.

 


2개의 글을 통해 word2vec의 CBOW 모델을 설명했다. CBOW 모델은 기본적으로 2층 구성의 아주 단순한 신경망이다.

MatMul 계층과 Softmax with Loss 계층을 사용하여 CBOW 모델을 구축한 다음, 이 모델이 작은 말뭉치를 학습할 수 있음을 확인했다.

TAGS.

Comments