Development Tip

word2vec : 네거티브 샘플링 (일반 용어)?

yourdevel 2020. 10. 28. 21:11
반응형

word2vec : 네거티브 샘플링 (일반 용어)?


아래 논문을 읽고 있는데 네거티브 샘플링의 개념을 이해하는 데 문제가 있습니다.

http://arxiv.org/pdf/1402.3722v1.pdf

누구든지 도와 주시겠습니까?


의 개념은 word2vec텍스트에서 서로 가깝게 (서로의 맥락에서) 나타나는 단어에 대한 벡터 간의 유사성 (내적)을 최대화하고 그렇지 않은 단어의 유사성을 최소화하는 것입니다. 연결하는 논문의 방정식 (3)에서 지수를 잠시 무시하십시오. 당신은

      v_c * v_w
 -------------------
   sum(v_c1 * v_w)

분자는 기본적으로 단어 c(컨텍스트)와 w(대상) 단어 사이의 유사성 입니다. 분모는 다른 모든 컨텍스트 c1와 대상 단어 의 유사성을 계산합니다 w. 이 비율을 최대화하면 텍스트에서 더 가깝게 나타나는 단어가 그렇지 않은 단어보다 더 유사한 벡터를 갖게됩니다. 그러나 많은 컨텍스트가 있기 때문에이를 계산하는 것은 매우 느릴 수 있습니다 c1. 네거티브 샘플링은이 문제를 해결하는 방법 중 하나입니다. 몇 가지 컨텍스트 c1를 무작위로 선택하기 만하면 됩니다. 최종 결과는 경우 cat의 맥락에 나타나는 food, 다음의 벡터 food의 벡터에 더 비슷 cat의 벡터 이상 (이들의 내적에 의해 측정 됨) 몇몇 다른 무작위로 선택된 단어(예를 들어 democracy, greed, Freddy) 대신 언어의 다른 모든 단어 . 이것은 word2vec훈련 훨씬 더 빠르게 만듭니다 .


Softmax (현재 대상 단어와 유사한 단어를 결정하는 함수)를 계산 하는 것은 일반적으로 매우 큰 V (분모)의 모든 단어를 합산해야하기 때문에 비용이 많이 듭니다 .

여기에 이미지 설명 입력

무엇을 할 수 있습니까?

소프트 맥스 근사화 하기 위해 다양한 전략이 제안되었습니다 . 이러한 접근 방식은 소프트 맥스 기반샘플링 기반 접근 방식 으로 그룹화 할 수 있습니다 . Softmax 기반 접근 방식은 softmax 계층을 그대로 유지하지만 효율성을 향상시키기 위해 아키텍처를 수정하는 방법입니다 (예 : 계층 적 소프트 맥스 ). 반면에 샘플링 기반 접근 방식은 소프트 맥스 레이어를 완전히 없애고 대신 소프트 맥스에 근접하는 다른 손실 함수를 최적화합니다. 네거티브 샘플링).

Word2vec의 손실 함수는 다음과 같습니다.

여기에 이미지 설명 입력

다음으로 분해 될 수있는 로그 :

여기에 이미지 설명 입력

몇 가지 수학 및 그라데이션 공식을 사용하면 (자세한 내용은 3 참조 ) 다음과 같이 변환됩니다.

여기에 이미지 설명 입력

보시다시피 이진 분류 작업으로 변환되었습니다 (y = 1 포지티브 클래스, y = 0 네거티브 클래스). 이진 분류 작업을 수행하기 위해 레이블이 필요하므로 모든 컨텍스트 단어 c 를 참 레이블 (y = 1, 양성 샘플)로 지정하고 말뭉치에서 무작위로 선택된 k 를 거짓 레이블 (y = 0, 음성 샘플)로 지정합니다.


다음 단락을보십시오. 대상 단어가 " Word2vec " 라고 가정합니다 . 3 창, 우리의 상황에 맞는 단어는 : The, widely, popular, algorithm, was, developed. 이러한 문맥 단어는 긍정적 인 레이블로 간주됩니다. 부정적인 라벨도 필요합니다. 우리는 무작위로 코퍼스에서 일부 단어를 선택 ( produce, software, Collobert, margin-based, probabilistic) 음의 샘플로 고려합니다. 우리가 말뭉치에서 무작위로 몇 가지 예를 뽑은이 기법을 음성 샘플링이라고합니다.

여기에 이미지 설명 입력

참조 :


여기 에 네거티브 샘플링에 대한 튜토리얼 기사를 썼습니다 .

네거티브 샘플링을 사용하는 이유는 무엇입니까? -> 계산 비용 절감

바닐라 Skip-Gram (SG) 및 Skip-Gram 네거티브 샘플링 (SGNS)의 비용 함수는 다음과 같습니다.

여기에 이미지 설명 입력

p(w_t+j|w_t)SG 의 확률 분포 V다음을 사용하여 말뭉치의 모든 어휘에 대해 계산 됩니다.

여기에 이미지 설명 입력

VSkip-Gram 모델을 학습 할 때 쉽게 수만을 초과 할 수 있습니다. 확률은 계산 V시간이 필요 하므로 계산 비용이 많이 듭니다. 또한 분모의 정규화 인자에는 추가 V계산이 필요합니다 .

반면 SGNS의 확률 분포는 다음과 같이 계산됩니다.

여기에 이미지 설명 입력

c_pos는 양의 단어에 대한 단어 벡터이고 출력 가중치 행렬의 W_neg모든 K음의 샘플에 대한 단어 벡터입니다 . SGNS를 사용하면 확률 은 일반적으로 5 ~ 20 사이 인 K + 1횟수 만 계산하면됩니다 K. 또한 분모의 정규화 인자를 계산하기 위해 추가 반복이 필요하지 않습니다.

SGNS를 사용하면 각 학습 샘플에 대해 일부 가중치 만 업데이트되는 반면 SG는 각 학습 샘플에 대해 수백만 개의 가중치를 모두 업데이트합니다.

여기에 이미지 설명 입력

SGNS는이를 어떻게 달성합니까? -> 다중 분류 작업을 이진 분류 작업으로 변환하여.

With SGNS, word vectors are no longer learned by predicting context words of a center word. It learns to differentiate the actual context words (positive) from randomly drawn words (negative) from the noise distribution.

여기에 이미지 설명 입력

In real life, you don't usually observe regression with random words like Gangnam-Style, or pimples. The idea is that if the model can distinguish between the likely (positive) pairs vs unlikely (negative) pairs, good word vectors will be learned.

여기에 이미지 설명 입력

위 그림에서 현재 양의 단어 컨텍스트 쌍은 ( drilling, engineer)입니다. K=5네가티브 샘플되고 임의로 그린 로부터 잡음 분포 : minimized, primary, concerns, led, page. 모델이 학습 샘플을 반복함에 따라 양수 쌍의 확률이 출력 p(D=1|w,c_pos)≈1되고 음수 쌍의 확률 이 출력되도록 가중치가 최적화 됩니다 p(D=1|w,c_neg)≈0.

참고 URL : https://stackoverflow.com/questions/27860652/word2vec-negative-sampling-in-layman-term

반응형