본문 바로가기

데이터 다루기/Textmining

[Text mining] 4. Word2vec (3) Hierarchical Softmax

728x90
반응형

안녕하세요. 이번 포스팅에서는 Skip-gram Word2vec의 계산 복잡성을 해결하기 위한 방법으로 Hierarchical Softmax에 대해 배워보도록 하겠습니다.

Skip-gram Word2vec에서 하나의 중심단어의 embedding 시에 100만개의 단어가 Corpus에 있다면, 벡터의 내적을 100만번 진행해야 했습니다. 이는 엄청난 계산 과정이죠.

하지만 Hierarchical Softmax 방법을 사용하면 이진 분류를 통해 log2(100만) 으로 계산량이 줄어듭니다.

이는 실제로 엄청난 차이입니다. log2(100만) 은 사실 보기에만 커보이지만 19~20 사이의 값을 가집니다...

논문에서 Hierarchical Softmax는 아래와 같이 설명이 됩니다.

처음에 이 식만 보면 이게 무슨소리지 싶었어요.

그림을 볼게요.

'I live in Seoul and like data analysis' 라는 문장이 있습니다.

8개의 단어에요.

Seoul 이라는 중심단어를, window size = 1 에 해당하는 주변단어들을 사용하여 학습해봅시다.

in 을 예측하기 위해서는 오른쪽, 오른쪽, 왼쪽으로 가는 것이 정답입니다.

각 노드에서 방향을 선택할 확률이 위의 식을 따르는 것입니다.

Seoul 이라는 단어의 벡터가 들어오면, 각 노드에 해당하는 weight 들이 곱해지고, 시그모이드 함수에 들어가서 확률로 나오게 됩니다.

이 식 안의 [[ ]] 는 1 혹은 -1을 반환하는 함수입니다.

Hierarchical Softmax는 이 트리 구조의 weight들을 학습하게 되며, 이진 분류이기 때문에 log2(단어 수) 만큼의 계산량이 나옵니다.

반응형