본문 바로가기
카테고리 없음

Negative sampling 이란?

by 달죽 2020. 12. 9.
반응형

Word2Vec 모델에서 negative sampling 이란?

단어뭉치(corpus)의 개수가 1000 개 이고 hidden layer크기가 3000이라 하면, W와 , W`의 크기는 1000x3000 이다.
Input vector는 one-hot 벡터로 1숫자만 1이고 나머진 모두 0이다.
(중심단어, 주변단어)의 pair로 학습이 이뤄지게 되는데, W의 크기가 1000x3000이나 되지만.



input vector가 one hot vector이기 때문에 W중 1줄의 parameter만 선택된다.
하지만 backpropagation과정중에 1000x3000(W`)의 parameter가 softmax함수를 취해야 되고, 계산량이 엄청나게 많아진다.

따라서 계산의 효율성을 위해서 negative sampling 이라는 방법을 사용한다.

negative sampling는 말그대로 parameter을 update시킬 negative sample을 뽑는것이다.
그리고 전체 W,W`을 업데이트 하는것이 아니라, 중심단어와 negative sample 몇개에 해당하는 parameter을 업데이트하는것이다.

무슨말이냐 하면,
(김치,반찬) (김치,된장) (김치,식사) 의 조합을 업데이트 하기위해서, 김치와 상관없는 폴란드, 타이어, 돗돔 이러한 관계를 update 해도 안한것과 별반 차이가 없다는 것이다. 김치와 주변단어가 아닌 단어가 김치와 주변단어인 단어보다 훨씬 더 많다. (모두 업데이트 할 필요 없음)
따라서, 수많은 김치와 상관없는단어중 몇개의 단어만 추출하여 학습에 사용하여 해당 parameter을 업데이트한다.
네가티브 샘플링 단어는 전체 corpus중 문장에 사용되는 비중이 높은 단어를 우선적으로 가중치를 줘서 선별한다.



wi 는 i번째 단어이고, f(wi)는 해당 단어의 빈도, (출현횟수/전체corpus수) 이다.
P(wi)는 wi가 나타날 확률

반응형

댓글