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


답변:


164

의 개념은 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훈련 을 훨씬 더 빠르게 만듭니다 .


15
감사합니다 또는 좋은 설명. 그냥 샘플링이라고 생각합니다. 그런데 왜 "부정적"이라고 불 렸는지 아십니까?
HappyCoding

46
이 용어는 신경망의 일반적인 응용 프로그램 인 분류에서 차용되었습니다. 거기에는 긍정적이고 부정적인 예가 많이 있습니다. 를 사용하면 word2vec주어진 단어에 대해 유사해야하는 단어 목록 (긍정 클래스)이 있지만 부정적인 클래스 (대상 단어와 유사하지 않은 단어)는 샘플링에 의해 컴파일됩니다.
mbatchkarov

38

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

여기에 이미지 설명 입력

무엇을 할 수 있습니까?

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

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

여기에 이미지 설명 입력

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

여기에 이미지 설명 입력

일부 수학적 및 그라데이션 공식 ( 6 에서 자세한 내용 참조 )을 사용하면 다음과 같이 변환됩니다.

여기에 이미지 설명 입력

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


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

여기에 이미지 설명 입력

참조 :


1
@amir 안녕, 내 첫 질문은 ... 내가 부정적인 샘플링의 개념을 이해하고, 몇 가지 문제가있다
앤디 K

1
매우 잘 설명되고 수용된 답변보다 약간 더 기술적 인 것입니다. 그래서 완벽한 SO 상황 : 아이디어를 얻기 위해 받아 들여진 대답을 읽고, 그것을 자세히 이해하기 위해이 대답을 읽으십시오.
Ursin Brunner

21

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

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

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

여기에 이미지 설명 입력

참고 T모든 Vocabs에의 수입니다. 이는 V. 즉, T= V.

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

SGNS를 사용하면 더 이상 중심 단어의 문맥 단어를 예측하여 단어 벡터를 학습하지 않습니다. 노이즈 분포에서 실제 문맥 단어 (긍정적)와 무작위로 그려진 단어 (부정적)를 구별하는 방법을 배웁니다.

여기에 이미지 설명 입력

실제 생활에서, 당신은 일반적으로 준수하지 않는 regression등의 임의의 단어 Gangnam-Style, 또는 pimples. 아이디어는 모델이 가능성이있는 (양성) 쌍과 가능성이없는 (음성) 쌍을 구분할 수 있다면 좋은 단어 벡터가 학습된다는 것입니다.

여기에 이미지 설명 입력

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


1
T는 토큰 수 (텍스트의 단어 발생)입니다. V는 어휘 (고유어)라고 말할 것입니다.
Adam

우리가 설정 한 경우 KV -1(가) 건너 그램 바닐라로 모델을 다음 음의 샘플링은 동일합니다. 내 이해가 맞습니까?
Shashwat

@Shashwat 각 훈련 샘플에 대해 업데이트 된 단어 벡터의 수는 동일하지만 훈련 목적 함수는 여전히 근본적으로 다릅니다
Eric Kim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.